0

我正在尝试杀死仍在运行的 Outlook 实例(在我的应用程序中使用,而不是 Outlook 本身),我在解构器中调用以下内容

        //_app = Microsoft.Office.Interop.Outlook.Application
        _app.Quit();
        Marshal.FinalReleaseComObject(_app);
        Marshal.FinalReleaseComObject(_app.Session);
        GC.WaitForPendingFinalizers();
        GC.Collect();

但是没有任何帮助,是否有更多的方法可以杀死它,如果有,怎么做?

4

1 回答 1

4

首先导入user32.dll以便能够使用GetWindowThreadProcessId

然后kill方法通过参数接收outlook app,获取进程并杀死

public static class OutlookKiller
{
        [DllImport("user32.dll", EntryPoint = "GetWindowThreadProcessId", SetLastError = true,
CharSet = CharSet.Unicode, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
    private static extern long GetWindowThreadProcessId(long hWnd, out long lpdwProcessId);

    public static void Kill(ref Microsoft.Office.Interop.Outlook.Application app)
    {
        long processId = 0;
        long appHwnd = (long)app.Hwnd;

        GetWindowThreadProcessId(appHwnd, out processId);

        Process prc = Process.GetProcessById((int)processId);
        prc.Kill();
    }
}
于 2013-09-04T14:32:22.913 回答