Wordの新しいドキュメントの数は、最初のwinword.exeが開始したときに始まり、最後のwinword.exeが終了したときに終わります。
私が見ているのは、おそらくWordをある種の機能に使用してwinword.exeを実行し続けているシステム上の別のアプリケーションだと思います。これの一般的な用途は、スペルチェックにWordを使用することです。私は誰でも試すことができる回答の下部に例を示しましたが、MicrosoftはMSDNのC#に独自の例を持っています(「方法:COM相互運用機能を使用してWordでスペルをチェックする(C#プログラミングガイド)」を検索します)。私の評判レベルでリンクが不足しています)。
これが実際に問題の原因であるかどうかを確認するには、次にこの問題が発生したときに、表示されているすべてのWordウィンドウを閉じ、Windowsタスクマネージャーを開いて[詳細]タブを選択し、WINWORD.EXEが実行されているかどうかを確認します。
この種類のWordへのアクセスはCOMコントロールを介して行われるため、このWINWORD.EXEの親プロセスはsvchost.exeになります。私の知る限りでは、事後にコントロールが何と呼ばれるかを確認する方法はありません。
これを理解するには、WINWORD.EXEが実行されていると想定して、WINWORD.EXEを選択し、タスクマネージャで[タスクの終了]を選択します。WINWORD.EXEが再起動して数秒後に再び実行を開始する場合は、以下のオプション2を参照してログを記録し、うまくいけば障害のあるアプリケーションをすばやく特定できます。
WINWORD.EXEが実行されなくなったと仮定すると、これを理解するための最初のオプションは、タスクマネージャーを実行したままにし、[オプション]、[常に上]を選択し、[詳細]タブを有効にしたまま、サイズを変更するか、別の画面でWの名前を付けます。目に見えるプロセス。その後、通常のワークフローを続行できます。新しいアプリケーションを開始したりタスクを実行したりするときに、Wordが起動するかどうかを確認します。
2番目のオプションは、MicrosoftのTechNetサイトにあるWindows Sysinternals Process Monitorを使用することです。回答にリンクが残っていないため、ツールをまだお持ちでない場合は検索する必要があります。このツールを使用すると、Word COMコントロールがいつ、何から開始されたかをキャプチャできます。ダウンロードしてツールを起動し、EULAに同意したら、[フィルター]、[フィルター]を選択し(またはCtrl-Lを押すだけ)、2番目のフィールドを[パス]に切り替え、2番目のフィールドを[含む]に切り替え{000209FF-0000-0000-C000-000000000046}
て、テキストフィールドに貼り付けて確認します。包含フィルターを作成するように言います。検索するGUIDはWordの既知のGUIDですが、レジストリでWord.Applicationを検索することで簡単に調べることができます。スクリーンショット:Word COMコントロールを検索するフィルターを作成するプロセスモニター:
[追加]を選択して[OK]をクリックします。
プロセスモニターは空白になります。下部のステータスバーでイベントがカウントアップされない場合(現在のフィルターは除外しています...)、[ファイル]、[イベントのキャプチャ]がオンになっていることを確認してください。
タスクマネージャーでプロセスを終了したときにWINWORD.EXEの再起動をトリガーできた場合は、再度トリガーしてWINWORD.EXEを再起動し、うまくいけば、障害のあるプロセスを明らかにします。そうでない場合は、Windowsを再起動し、プロセスモニターを再起動して、キャプチャする可能性を高めます。次に、通常のタスクに取り掛かり、Process Monitorが何かをキャプチャしたかどうかを定期的にチェックします。最後に、プロセス名フィールドに原因が表示されます。明確でない場合は、エントリの1つをダブルクリックし、[プロセス]タブを選択して、すべての詳細を表示します。
さらに、長期にわたってプロセスモニターを実行する必要がある場合は、定期的に確認し、ページファイルのメモリ不足を防ぐためにキャプチャをクリア(Ctrl-X)することができます(または、別のバッキングファイルを使用できます)。しかし、それは別のトピックです)。
問題とプロセスモニターの機能の両方を示すために、いくつかの単純なVBScriptを使用して動作をシミュレートできます。これを行うには、メモ帳を開き、以下を貼り付けます。
Set Word = CreateObject("Word.Application")
Word.Visible = False
Set NewDocument = Word.Documents.Add()
次に、デスクトップにとして保存しますtest.vbs
。デスクトップに切り替え、test.vbsをダブルクリックしてVBScriptを実行します。プロセスモニターに戻ると、プロセス名がWScript.exe(既定のVBScriptエンジン)であり、それがWordの起動に使用されていることがわかります。スクリーンショット:Wordコントロールを開始するWScript.exeを示すプロセスモニター:
スタートメニューからWordを起動することもでき、Document2にいるはずです。タスクマネージャーでWINWORD.EXEプロセスを手動で強制終了する必要があります。そうしないと、実行が続行されます。