0

此代码将从任务管理器结束进程 OUTLOOK.EXE。如果用户已经单独打开了他的 Outlook,它也会被关闭。这是用户不能接受的。

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

我通过删除找到了解决方案:Call objOLApp.Quit()

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

有什么建议么?

4

1 回答 1

0

自动化 Outlook 是出了名的笨拙,它实际上是一个客户端应用程序。根据您尝试关闭 Outlook 的事实,我猜您使用它来处理电子邮件框或联系人或日历条目或其他内容。

我建议您花几美元并使用“Outlook Redemption”

如果您确实需要确保关闭 Outlook,则以下方式应该可以工作并且应该是相当非侵入性的。

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
于 2013-04-14T16:51:36.747 回答