.NET Frameworkには残念ながらウィンドウを探す(列挙する)方法が用意されていません。Win32 APIを使わないでどうにかできないものかと、苦し紛れで考えられたのがプロセスのMainWindowHandleプロパティを調べ、プロセスに関連付けられたメインウィンドウがあるか調べる方法です。つまりこの方法では、メインウィンドウしか列挙できません。
役に立つかは分かりませんが、下記にその例を示します。
補足:Windows 98では、ProcessStartInfo.UseShellExecuteにTrueを設定して開始したプロセスにはMainWindowHandleプロパティは使えないそうです。
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
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); } }
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。