3

関数を使用してプロセスfoo.exeを作成するプロセスbar.exeがありCreateProcessます。foo.exeで作成されたウィンドウのコントロールを(で)列挙したいのでbar.exe、そのために(私は)ウィンドウHWNDが必要です。

のすべてのウィンドウクラスを知っていますが、一度にクラスごとに1つのウィンドウしか作成されないため、クラス名を使用して目的のウィンドウを見つけることができますbar.exebar.exe

しかし、別のプロセスでウィンドウを列挙するには、どの関数を使用する必要がありますか?CreateProcessプロセスハンドルまたはPID(両方とも関数によって返される)とEnumProcコールバックプロシージャを受け取るものを探しています。bar.exeのスレッドID(シングルスレッドアプリケーション)を見つけて、それをEnumThreadWindows関数で使用する必要がありますか?

4

1 に答える 1

6
  1. EnumWindowsトップレベルのウィンドウを列挙するために呼び出します。
  2. 各トップレベルウィンドウハンドルをに渡して、GetWindowThreadProcessId関連付けられているプロセスIDを見つけます。
  3. プロセスIDに一致するトップレベルのウィンドウを見つけたら、おそらくそのクラス名をチェックして、そのウィンドウがアプリのメインウィンドウであることを確認します。
  4. 最後に、そのメインウィンドウを呼び出しEnumChildWindowsて、そのメインウィンドウのすべての子を列挙します。
于 2013-03-19T12:50:28.827 に答える