此代码将从任务管理器结束进程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不会终止。我必须从任务管理器做(结束流程)。
有什么建议吗?
答案 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