如何在C#中杀死Word / Excel文件的实例

时间:2014-11-24 19:43:05

标签: c# wpf excel ms-word

我有两个文件demo1.docx,demo2.docx。当我打开这两个文件然后它在应用程序部分的任务管理器中创建了两个实例并创建了一个进程WinWord.exe到进程Section.When我杀了demo1.docx实例它自动杀死另一个实例,但我想只杀死该实例demo1.docx。目前我正在使用此代码来杀死实例

string instanceName="demo1.docx";

Process[] runingProcess = Process.GetProcesses();
for (int i = 0; i < runingProcess.Length; i++)
    if (runingProcess[i].MainWindowTitle.Contains(instanceName))
        runingProcess[i].Kill();

2 个答案:

答案 0 :(得分:3)

我们必须关闭它们,而不是杀死它们。要控制已运行的实例,可以使用以下代码:

if (Process.GetProcessesByName("winword").Count() > 0)
{
    Word.Application wordInstance = (Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");

    foreach (Word.Document doc in wordInstance.Documents)
    {
        if (doc.Name == "demo1.docx")
        {
            doc.Close();
            break;
        }
     }
}

答案 1 :(得分:0)

由于所有文档都在同一个进程中打开,因此终止它将自动关闭所有文档。也许您可以使用Word Automation来关闭特定文档。

这里有一个有效的解决方案: how to close a running instance of Word document? (C#)