方法 : プロセスが応答しているかどうかを確認する
更新 : 2007 年 11 月
Responding プロパティを使用して、プロセスのユーザー インターフェイスが応答しているかどうかを確認できます。Responding プロパティを読み取ろうとすると、目的のプロセスのユーザー インターフェイスに要求が送信されます。すぐに応答があった場合は、プロパティの戻り値が true になります。インターフェイスから応答がない場合は、プロパティ値が false になります。このプロパティは、フリーズしたアプリケーションを強制的に終了する場合に便利です。
プロセスが応答しているかどうかを確認するには
コンポーネントによって開始されたプロセスでない場合は、Process コンポーネントを目的のプロセスに関連付けます。詳細については、「方法 : 既存のプロセスにバインドする」を参照してください。
Responding プロパティを読み取ります。
プロパティの値に応じて、必要な処置を決定します。
メモ帳が応答しているかどうかを確認する例を次に示します。Responding プロパティが true の場合は、CloseMainWindow メソッドを呼び出してアプリケーションを閉じます。Responding プロパティが false の場合は、M:System.Diagnostics.Process.Kill メソッドを呼び出してプロセスを強制終了します。
Dim myProcesses() As Process myProcesses = Process.GetProcessesByName("Notepad.exe") ' Tests the Responding property for a True return value. If myProcesses(0).Responding Then myProcesses(0).CloseMainWindow() Else ' Forces the process to close if the Responding value is False. myProcesses(0).Kill() End If
Process[] notepads; notepads = Process.GetProcessesByName("Notepad.exe"); // Test to see if the process is responding. if (notepads[0].Responding) { notepads[0].CloseMainWindow(); } else { notepads[0].Kill(); }