2012-09-04 49 views
-3

我的c#应用程序在任务管理器中创建winword,并从任务管理器正确关闭。但如果我的应用程序崩溃,那么winword仍然在任务管理器中打开,并且无法处理这些word文档。任务管理器中的多个WinWord

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

请帮忙完成此操作。

+1

你是否已经尝试过的东西?你卡在哪里? – Spontifixus

+0

我试图在打开文件时禁止所有对话框,但没有用。我只想杀死特定的双赢,但只有我的应用程序 – Mukesh

回答

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 
} 

为了防止孤立词处理,你将需要公开的程序存储在应用程序中心的方式,并关闭应用程序之前关闭所有剩余的所有进程。此外,您可以注册到未处理的错误事件,然后关闭所有进程(如果发生这种情况)。

如果无法打开文档,关闭文字处理在大多数情况下是无法选择的,因为可能会打开该文档以在“真实”文字实例中进行编辑。

+0

s r rite创建。我没有任何问题,因为我正在使用此代码。但是如果我的应用程序在文件打开和关闭之间突然关闭,则下次同一文件保持打开状态并显示正在使用的文件。 – Mukesh

+0

请参阅编辑我的答案。如果这个答案符合你的需求,请将这个问题标记为[已回答](http://meta.stackexchange.com/a/5235) – Spontifixus

+0

k。谢谢你的好主意。但请你能告诉我如何实施“应用程序中的核心方式”概念。 – Mukesh

1

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

所以,如果你想手动杀死你的互操作双向进程,而不杀死任何用户启动的Microsoft Word实例,你可以打开Mark Russinovich的免费ProcessExplorer工具,右键单击winword.exe,选择“属性”,并查看命令行(在图像选项卡中)。如果你看到/ Automation开关,你会知道这是一个互操作过程,你可以杀死它。这里的互操作WINWORD.EXE将如何看在ProcessExplorer:

interop winword in Process Explorer

+0

我检查,但我没有那个标记为红色的选项 – Mukesh

+0

好吧,那么它听起来像你没有使用互操作性。那么,你如何从你的应用程序启动WinWord?请发布您用来启动它的代码。 –