DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

プロセスを強制的に終了する

広告

強制的にプロセスを終了するには、ProcessクラスのKillメソッドを使います。このメソッドはローカルコンピュータで実行されているプロセスにだけ使用でき、リモートコンピュータ上で実行中のプロセスには使用できません。

なお、プロセスが終了するまで待機するには、Process.WaitForExitメソッドを使います。

次の例ではプロセスIDがprocessIdのプロセスを強制終了しています。


[VB.NET]
Dim p As System.Diagnostics.Process
'processIdというプロセスIDを持つプロセスを取得
p = System.Diagnostics.Process.GetProcessById(processId)
'プロセスを強制終了
p.Kill()
[C#]
System.Diagnostics.Process p;
//processIdというプロセスIDを持つプロセスを取得
p = System.Diagnostics.Process.GetProcessById(processId);
//プロセスを強制終了
p.Kill();

グラフィカルインターフェイスのあるプロセスの終了を要求する

グラフィカルインターフェイスのあるプロセスを安全に終了させるためには、Process.Killを使用するのではなく、CloseMainWindowメソッドを使用します。CloseMainWindowメソッドはプロセスのメインウィンドウにクローズメッセージを送信し、プロセスの終了を要求します。要求するだけですので、実際には終了しない可能性もあります。

下の例では、開いているすべてのメモ帳を閉じるように要求しています。

[VB.NET]
'notepadのプロセスを取得
Dim ps As System.Diagnostics.Process() = _
    System.Diagnostics.Process.GetProcessesByName("notepad")

Dim p As System.Diagnostics.Process
For Each p In ps
    'クローズメッセージを送信する
    p.CloseMainWindow()
Next p
[C#]
//notepadのプロセスを取得
System.Diagnostics.Process[] ps =
    System.Diagnostics.Process.GetProcessesByName("notepad");

foreach (System.Diagnostics.Process p in ps)
{
    //クローズメッセージを送信する
    p.CloseMainWindow();
}