2012-09-04 123 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?請發佈您用來啓動它的代碼。 –