2013-03-19 103 views
2

我有一個進程foo.exe,它創建了一個具有CreateProcess函數的進程bar.exe。我想(在foo.exe)枚舉在bar.exe中創建的窗口的控件,並且爲此I(假設我)需要窗口HWND。如何在Delphi中枚舉另一個進程的窗口?

我知道bar.exe中的所有窗口類,bar.exe只爲每個類創建一個窗口,因此我可以使用類名來查找我想要的窗口。

但是我應該使用什麼函數來枚舉另一個進程中的窗口?我正在尋找一些需要處理句柄或PID(均由CreateProcess函數返回)和EnumProc回調過程的東西。我應該找到bar.exe的線程ID(它是一個單線程應用程序)並將其與EnumThreadWindows函數一起使用?

回答

6
  1. 請致電EnumWindows來枚舉頂層窗口。
  2. 將每個頂層窗口句柄傳遞到GetWindowThreadProcessId以找出與其關聯的進程ID。
  3. 當您找到與您的進程ID相匹配的頂級窗口時,請檢查該窗口是應用程序的主窗口,大概是通過檢查其類名稱。
  4. 最後,在該主窗口上調用EnumChildWindows來枚舉該主窗口的所有子項。
相關問題