API関数のEnumWindowsを使うことで、全てのウィンドウのハンドル(HWND)を取得する事ができる。 EnumWindowsを呼び出すと、コールバックメソッドが呼び出され、存在する個々のウィンドウのHWNDが渡される。
以下の例では、EnumWindows()でウィンドウを列挙し、コールバックメソッド内ではIsWindowVisible()を使って可視ウィンドウかどうかを調べている。 また、個々の可視ウィンドウについて、GetWindowText()を使ってウィンドウのキャプションを、GetWindowThreadProcessId()とProcess.GetProcessByIdを使ってプロセス情報を取得・表示している。
なお、可視でないウィンドウも列挙するには、IsWindowVisible()の部分を削除すればよい。