任务管理器中的多个WinWord

时间:2012-09-04 06:38:55

标签: c#

我的c#应用程序在任务管理器中创建winword并从taskmanager正确关闭。但是如果我的应用程序崩溃,那么winword将在任务管理器中保持打开状态,并且无法处理这些word文档。

所以在这种情况下,我想单独杀死那些由我的应用程序创建的winword,而不是全部。

请帮助完成此操作。

2 个答案:

答案 0 :(得分:1)

当通过互操作创建winword.exe的实例时,它们将在进程命令行中包含字符串“/ Automation -Embedding”。

因此,如果您只想手动杀死互操作winword进程,而不杀死任何用户启动的Microsoft Word实例,您可以打开Mark Russinovich的免费ProcessExplorer实用程序,右键单击带有winword.exe的行,选择“属性“,然后查看命令行(在”图像“选项卡中)。如果您看到/ Automation开关,您将知道它是一个互操作过程,您可以将其删除。以下是Interop winword.exe在ProcessExplorer中的外观:

interop winword in Process Explorer

答案 1 :(得分:0)

尝试以下方法:

try
{
    // open your word document
    // process your word document
}
catch
{
    // handle any errors (e.g. provide error messages
}
finally
{
    // close the word document properly
}

要防止孤立的字处理,您需要在应用程序中以中央方式存储打开的进程,并在关闭应用程序之前关闭所有剩余的进程。此外,您可以注册到未处理的错误事件,然后在发生这种情况时关闭所有进程。

如果在大多数情况下无法打开文档,则关闭单词进程是不可行的,因为该文档可能会在“真实”单词实例中打开进行编辑。