DOBON.NET

グラフィカルインターフェイスがあるプロセスを探す

.NET Frameworkには残念ながらウィンドウを探す(列挙する)方法が用意されていません。Win32 APIを使わないでどうにかできないものかと、苦し紛れで考えられたのがプロセスのMainWindowHandleプロパティを調べ、プロセスに関連付けられたメインウィンドウがあるか調べる方法です。つまりこの方法では、メインウィンドウしか列挙できません。

役に立つかは分かりませんが、下記にその例を示します。

補足:Windows 98では、ProcessStartInfo.UseShellExecuteにTrueを設定して開始したプロセスにはMainWindowHandleプロパティは使えないそうです。

VB.NET
コードを隠すコードを選択
Dim p As System.Diagnostics.Process
For Each p In System.Diagnostics.Process.GetProcesses()
    'MainWindowHandleがゼロでないプロセスを探す
    If Not IntPtr.Zero.Equals(p.MainWindowHandle) Then
        'プロセス名とウィンドウタイトルを表示する
        Console.WriteLine("{0}:{1}", p.ProcessName, p.MainWindowTitle)
    End If
Next
C#
コードを隠すコードを選択
foreach (System.Diagnostics.Process p
    in System.Diagnostics.Process.GetProcesses())
{
    //MainWindowHandleがゼロでないプロセスを探す
    if (!IntPtr.Zero.Equals(p.MainWindowHandle))
    {
        //プロセス名とウィンドウタイトルを表示する
        Console.WriteLine("{0}:{1}", p.ProcessName, p.MainWindowTitle);
    }
}

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

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

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。