私のC#アプリケーションは、タスクマネージャーでwinwordを作成し、タスクマネージャーから適切に閉じます。しかし、アプリケーションがクラッシュした場合、winword はタスク マネージャーで開かれたままになり、それらの word ドキュメントを処理できません。
その場合、すべてではなく、アプリケーションによって作成された winword だけを殺したいと思います。
これを終わらせるのを手伝ってください。
私のC#アプリケーションは、タスクマネージャーでwinwordを作成し、タスクマネージャーから適切に閉じます。しかし、アプリケーションがクラッシュした場合、winword はタスク マネージャーで開かれたままになり、それらの word ドキュメントを処理できません。
その場合、すべてではなく、アプリケーションによって作成された winword だけを殺したいと思います。
これを終わらせるのを手伝ってください。
winword.exeのインスタンスが相互運用機能を介して作成される場合、プロセスコマンドラインに文字列「/Automation-Embedding」が含まれます。
したがって、ユーザーが開始したMicrosoft Wordのインスタンスを強制終了せずに、相互運用機能のwinwordプロセスのみを手動で強制終了する場合は、Mark Russinovichの無料のProcessExplorerユーティリティを開き、winword.exeの行を右クリックして、[プロパティ]を選択します。コマンドライン([画像]タブ)を確認します。/ Automationスイッチが表示されている場合は、それが相互運用プロセスであることがわかり、強制終了できます。相互運用機能のwinword.exeがProcessExplorerでどのように表示されるかを次に示します。
次のことを試してください。
try
{
// open your word document
// process your word document
}
catch
{
// handle any errors (e.g. provide error messages
}
finally
{
// close the word document properly
}
孤立したワード プロセスを防ぐには、開いているプロセスをアプリケーションの中央に保存し、アプリケーションをシャットダウンする前に残りのプロセスをすべて閉じる必要があります。さらに、未処理のエラー イベントに登録し、それが発生した場合はすべてのプロセスを閉じることができます。
文書を開くことができない場合にワード プロセスをシャットダウンすることは、ほとんどの場合、オプションではありません。その文書は、「実際の」単語インスタンスで編集するために開かれる可能性があるためです。