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

プロセスのユーザーインターフェイスが応答するか調べる

プロセスのユーザーインターフェイスが応答するか調べるには、Process.Respondingプロパティを使います。RespondingプロパティがTrueを返せばそのプロセスのユーザーインターフェイスは応答しており、Falseを返せばすぐには応答しないこと示しています。

なお、MainWindowHandleがないプロセスでは、このプロパティはTrueを返します。

補足:Windows98において、ProcessStartInfo.UseShellExecuteにTrueを設定してプロセスを開始した場合、このプロパティは利用できません。

次の例では、ローカルコンピュータで実行されているプロセスの中でユーザーインターフェイスが応答しないものがあるか調べ、そのIDを表示しています。

VB.NET
コードを隠すコードを選択
'ローカルコンピュータ上で実行されているすべてのプロセスを取得
Dim ps As System.Diagnostics.Process() = _
    System.Diagnostics.Process.GetProcesses()

'配列から1つずつ取り出す
Dim p As System.Diagnostics.Process
For Each p In ps
    'プロセスのユーザーインターフェイスが応答するか調べる
    If Not p.Responding Then
        Console.WriteLine("{0}:応答なし", p.Id)
    End If
Next p

Console.WriteLine("完了")
C#
コードを隠すコードを選択
//ローカルコンピュータ上で実行されているすべてのプロセスを取得
System.Diagnostics.Process[] ps =
    System.Diagnostics.Process.GetProcesses();

//配列から1つずつ取り出す
foreach (System.Diagnostics.Process p in ps)
{
    //プロセスのユーザーインターフェイスが応答するか調べる
    if (!p.Responding)
    {
        Console.WriteLine("{0}:応答なし", p.Id);
    }
}

Console.WriteLine("完了");

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。