如何从手动打开的Outlook中单独终止Outlook.Application对象?

时间:2013-04-14 11:36:31

标签: vb.net outlook.application

此代码将从任务管理器结束进程OUTLOOK.EXE。如果用户已单独打开Outlook,它也将关闭。这对用户来说是不可接受的。

Dim objOLApp As Outlook.Application
.
.
.
.
Call objOLApp.Quit()  
Call System.Runtime.InteropServices.Marshal.ReleaseComObject(objOLApp)   
objOLApp = Nothing

我通过删除Call objOLApp.Quit()

找到了解决方案

现在还有另一个问题。关闭程序并关闭Outlook窗口(如果打开),OUTLOOK.EXE不会终止。我必须从任务管理器做(结束流程)。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

自动化Outlook是众所周知的尴尬,它真的是一个客户端应用程序。 根据你试图关闭展望的事实,我猜你用它来操纵一个电子邮箱或联系人或日历条目或其他东西。

我建议您花一些钱并使用"Outlook Redemption"

如果你真的需要确保前景被关闭,那么下面的方式应该有效并且应该是非侵入性的。

Sub CloseOutlook()
    Dim pros() As Process = Process.GetProcessesByName("Outlook")
    For Each p As Process In pros
        p.CloseMainWindow()
        If Not p.WaitForExit(15000) then ' wait up to 15sec to close
            Try 'force close below
                p.Kill() 'hazardous call.
            Catch ex As Exception

            End Try
        End If
    Next
End Sub