我正在开发很少的应用程序。目的是在单击按钮时生成一些电子邮件,并使用此模板打开Outlook“新电子邮件”窗口。我正在使用Outlook interop14。在应用程序启动时,我将创建New Outlook.Application()实例。这将创建outlook.exe进程。
我的生成和打开电子邮件的方法:
Private Sub GenerateEmail(...)
...
'this line throws RPC exception when no outlook.exe process exists
Dim OutlookEmail As Outlook.MailItem = CType(OutlApp.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)
...
OutlookEmail.Display()
...
End Sub
运行应用程序时,Outlook.exe进程启动。我单击“生成电子邮件”,当我关闭此“新电子邮件”窗口时,Outlook将打开窗口,但它也会终止Outlook.exe进程。这是一个问题,因为第二次我想生成电子邮件时出现错误“ RPC服务器不可用”。问题是如何关闭窗口而不终止Outlook进程。顺便说一句,当我尝试第二次创建一个新的Outlook.Application实例(终止上一个实例之后)时,我也遇到了同样的错误。
答案 0 :(得分:2)
当Outlook的最后一个可见窗口关闭时,它退出(可能需要一些时间)。为了防止这种情况的发生,请检索MAPIFolder
对象(例如,使用Application.Session.GetDefaultFolderFolder(olFolderInbox)
),并将通过调用MAPIFolder.GetExplorer()
返回的Explorer对象存储在全局/类变量中。