方法 : プロセスを停止する
更新 : 2007 年 11 月
Process コンポーネントでプロセスを停止する場合には、2 つのメソッドを使用できます。停止するプロセスの種類によって、使用するメソッドが決まります。
プロセスにグラフィカル ユーザー インターフェイスがある場合は、CloseMainWindow メソッドを呼び出します。このメソッドは、プロセスのメイン ウィンドウに閉じる要求を送信します。これは、ユーザー インターフェイスで [閉じる] をクリックしたときと同じ動作です。このメソッドを使用すると、目的のプログラムが保存されていないデータをクリーンアップ処理中に保存するかどうか、ユーザーに対して確認を求めることができます。
プロセスにユーザー インターフェイスがない場合は、Kill メソッドを呼び出します。
注意 : Kill メソッドを呼び出すと、変更されたデータを保存するかどうか確認することなく、プロセスがすぐに停止されます。保存されていないデータはすべて失われます。
オペレーティング システムがプロセスをシャットダウンしたときにコンポーネントに通知されるようにするには、EnableRaisingEvents プロパティを true に設定する必要があります。EnableRaisingEvents プロパティは、非同期処理で、プロセスが終了したことをアプリケーションに通知するために使用されます。
プロセスを停止するには
GetProcessesByName メソッドを呼び出して、停止するプロセスを取得します。
詳細については、「方法 : 既存のプロセスにバインドする」を参照してください。
次のいずれかのメソッドを呼び出します。
プロセスにユーザー インターフェイスがある場合は、CloseMainWindow メソッドを呼び出します。
ウィンドウなしのプロセスの場合は、Kill メソッドを呼び出します。
CloseMainWindow メソッドを呼び出してローカル コンピュータ上で動作しているメモ帳のすべてのインスタンスを閉じる例を次に示します。
Dim myProcesses() As Process Dim myProcess As Process ' Returns array containing all instances of "Notepad". myProcesses = Process.GetProcessesByName("Notepad") For Each myProcess In myProcesses myProcess.CloseMainWindow() Next
Process[] myProcesses; // Returns array containing all instances of Notepad. myProcesses = Process.GetProcessesByName("Notepad"); foreach (Process myProcess in myProcesses) { myProcess.CloseMainWindow(); }