この質問が以前に(何度も)尋ねられた可能性は非常に高いですが、解決策が見つかりません。
メールを送信するプログラムがあります。コードは次のようになります。
Dim oApp As Interop.Outlook.Application = Nothing
While oApp Is Nothing
Try
oApp = New Interop.Outlook.Application
Catch ex As Exception
oApp = Nothing
Dim result As Integer = MessageBox.Show("Outlook is already running, close Outlook and click OK to continue sending this email or click Cancel to skip sending this email.", "Outlook", MessageBoxButtons.OKCancel)
If result = DialogResult.Cancel Then
Exit Sub
End If
End Try
End While
ここまでは順調ですね。ユーザーは、Outlook アプリケーションを使用するために Outlook を閉じる必要があります。これが完了したら、私はこれを行います:
Dim eMail As Interop.Outlook._MailItem
eMail = oApp.CreateItem(Interop.Outlook.OlItemType.olMailItem)
'To who?
eMail.To = "person@domain.com"
'Sbuject
eMail.Subject = "Foo"
'Message
Dim message As String = "Bar"
eMail.HTMLBody = message
'Send
eMail.Send()
魅力のように機能しますが、これが完了すると、トレイにこの小さなアイコンが表示され、Outlook が実行中であることが示されます。Outlook クライアントを開こうとすると、Outlook が既に実行されているというメッセージが表示されます。クライアントを使用する前に、トレイのアイコンをクリックして閉じる必要があります。メールが送信されたときにコードからこのアプリケーションを閉じるにはどうすればよいですか?
私は成功せずにこれを試しました:
oApp.Quit()
oApp.Application.Quit()
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oApp)
oApp = Nothing
どんな助けでも大歓迎です。