繁体   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