OUTLOOKオブジェクト解放


tomisan  2011-03-20 06:11:22  No: 102821

こんにちわ。tomisanといいます。

VB初心者なのですが、VB2008でOUTLOOKを使用して、メールの作成、下書き保存の処理を考えています。
処理はうまくいったのですが、タスクマネージャーからOutlook.exeの解放ができません。よろしくお願いします。

'OUTLOOKオブジェクト
Dim objOutlook As Object
Dim objNamespace As Object
Dim objFolder As Object
Dim objMAil As Object

'OUTLOOL操作用オブジェクト
objOutlook = CreateObject("Outlook.Application")
objNamespace = objOutlook.GetNamespace("MAPI")

'デフォルトのフォルダを表示(OUTLOOK起動用)
objFolder = objNamespace.GetDefaultFolder(6)

'メールアイテムの作成
objMAil = objOutlook.CreateItem(0)

objMAil.To = ToMale
objMAil.CC = ToMaleCC
objMAil.Subject = Kenmei

objMAil.Body =  Body

objMAil.Save()   '保存、下書きへ 
objMAil.Close(2) 'メール作成終了

'オブジェクト解放

Marshal.ReleaseComObject(objMAil)
Marshal.ReleaseComObject(objFolder)
Marshal.ReleaseComObject(objNamespace)

objOutlook.Quit()
Marshal.ReleaseComObject(objOutlook)

objMAil = Nothing
objFolder = Nothing
objNamespace = Nothing
objOutlook = Nothing


魔界の仮面弁士  2011-03-20 09:29:41  No: 102822

ここは VB2-VB6専用の掲示板です。
VB2008 は隣の掲示板をご利用ください。

> タスクマネージャーからOutlook.exeの解放ができません。
当方環境では、最後の ReleaseComObject にて解放されました。
(Nothing 代入なし)

ただし、解放にはメッセージループを必要とするのか、
objOutlook.Quit()
Marshal.ReleaseComObject(objOutlook)
を実行した後で、VB 側のプロシージャを Return するなどして、
VB を Idle 状態にしないとタスクから消えませんでした。
(あるいは、AppDomain がアンロードされた場合にもタスクから消えましたが)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加