杀死Winword的特定实例

时间:2011-01-07 17:54:49

标签: c# .net winforms com ms-word

我的应用程序创建了一个嵌入在窗体中的winword的新实例。

new Microsoft.Office.Interop.Word.ApplicationClass()

用户完成编辑后,我关闭了窗口,但是winword实例仍然在后台运行。

如何杀死该特定实例?我知道如何杀死在机器上运行的所有实例,但这不是一个选项。

4 个答案:

答案 0 :(得分:1)

您需要致电

application.Quit()

在您的代码中。

我必须在我的系统上做的一件事(它是一个excel处理工具)是在Quit事情仍在进行之后进行一次进程终止。

var openedExcel = System.Diagnostics.Process.GetProcessesByName("EXCEL");
            if (openedExcel.Any())
            {
                foreach (var excel in openedExcel)
                {
                    try { excel.Kill(); }
                    catch { }
                }
            }

答案 1 :(得分:1)

有不同的方法(Marshal.ReleaseComObject是我认为最常用的方法。)

我建议您阅读有关发布Office应用程序实例的官方文档。它可以在这里找到:Microsoft .NET Development for Microsoft Office / Releasing COM Objects

答案 2 :(得分:0)

我建议你将以下代码组合/添加到Flaviotsf的答案中 - 这将决定运行中的实际过程:

Process[] myProcList = Process.GetProcesses();
for (int i = 0; i <= myProcList.Length - 1; i ++) {
    string strProcessName = myProcList [i].ProcessName;

    string strProcessTitle = myProcList [i].MainWindowTitle();
         //check for your process name. 
    if (strProcessName.ToLower().Trim().Contains("access")) {

       myProcList [i].Kill();
    }
}

答案 3 :(得分:0)

杀死Winword Document的特定实例。

foreach (var process in Process.GetProcessesByName("WINWORD"))
{
   if (process.MainWindowTitle.Contains("Temp")) // Temp is document name.
    process.Kill();
}