簡體   English   中英

C ++ FindWindow查找當前窗口

[英]C++ FindWindow to find current window

我有一個程序可以在Windows 8.1上打開一個窗口(實際上是一個視頻游戲)。 然后,該程序以我編譯的C ++ .DLL的形式調用“擴展名”。 在該DLL中,我需要獲取正在調用DLL的程序(視頻游戲)窗口的句柄。 我可以使用FindWindow命令結合視頻游戲窗口的名稱來執行此操作。 但是,有時我需要一次打開兩個副本,並且兩個副本都具有相同的窗口名稱。 這意味着使用FindWindow(windowName)不能保證選擇我實際想要的窗口。 有沒有一種方法可以在不指定名稱的情況下獲取與正在調用C ++代碼的應用程序相同的窗口的句柄?

對於從EnumWindow獲得的與windowName相匹配的每個窗口,您可以檢查HWND's進程並選擇屬於您正在運行的進程的窗口。可以使用GetWindowThreadProcessId函數來完成-它會為您提供該窗口所屬進程的PID ,您可以將其與GetCurrentProcessId中的PID進行比較。

您可以結合使用FindWindowEx枚舉具有給定名稱的所有窗口(將hwndParentNULL以使用桌面作為父項,並在第二次搜索時將先前的結果作為hwndChildAfter傳遞,依此類推),並使用GetWindowThreadProcessIdGetCurrentProcessId進行查找哪個窗口屬於您正在調用的同一線程

但是再說一次-為什么不直接將窗口句柄傳遞給dll?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM