3

我有一个使用该函数foo.exe创建进程的进程。我希望 (in ) 枚举在其中创建的窗口的控件,为此我(假设我)需要窗口 HWND。bar.exeCreateProcessfoo.exebar.exe

我知道 中的所有窗口类bar.exe,并且bar.exe一次只为每个类创建一个窗口,因此我可以使用类名来查找我想要的窗口。

但是我应该使用什么函数来枚举另一个进程中的窗口?我正在寻找带有进程句柄或 PID(均由CreateProcess函数返回)和EnumProc回调过程的东西。我应该找到bar.exe的线程 ID(它是一个单线程应用程序)并将其与EnumThreadWindows函数一起使用吗?

4

1 回答 1

6
  1. 调用EnumWindows枚举顶层窗口。
  2. 将每个顶级窗口句柄传递给以GetWindowThreadProcessId找出它与哪个进程 ID 相关联。
  3. 当您找到与您的进程 ID 匹配的顶级窗口时,检查该窗口是否是应用程序的主窗口,大概是通过检查其类名。
  4. 最后,调用EnumChildWindows该主窗口以枚举该主窗口的所有子窗口。
于 2013-03-19T12:50:28.827 回答