1
A
回答
2
使用mainProcess句柄调用GetProcessId()来获取ProcessID。
调用EnumWindows的()
每个窗口,调用GetWindowThreadProcessId()来获取与窗口相关的进程的ProcessID。
比较ProcessID,如果它们匹配 - 你找到了你想要的HWND。
这是一个比较昂贵的任务,所以最好找到你想要的前端并存储它的hwnd。
+1
警告:如前所述 - 一个进程可以有多个窗口,因此您可能需要对窗口(类名,标题等)进行额外的检查以确定它是否是您想要的。 – MessyHack
+0
感谢你们两位,我已经想出了解决这个问题的方法:]。 – dotTutorials
4
第一个进程可以创建多个窗口。由于不存在1对1的映射,所以这样的功能是没有意义的。
另一方面,肯定可以有一个函数返回一个进程创建的窗口列表。
相关问题
- 1. Enum HWND属性C++
- 2. Qt,C++ QML和HWND
- 3. 在c#中创建HWND
- 4. 将Caliburn IWindowmanager的所有者属性设置为Excel,处理HWND
- 5. 如何获得HWND处理了System.Windows.Forms.Form中的
- 6. 如何获得处理程序(HWND)的对话框
- 7. C处理线处理#
- 8. C++ WPF通过HWND和HINSTANCE的C++/CLI
- 9. 正确的方式来处置Hwnd IntPtr
- 10. 处理在C++
- 11. C宏处理
- 12. 处理在C#
- 13. C#YAML处理
- 14. UTF8处理C
- 15. 处理在C++
- 16. C#KeyPressEvents处理
- 17. 处理从C#
- 18. 通过进程ID获取hwnd C++
- 19. Windows中的c线程HWND错误
- 20. (转换C#与Java JNA) - 从HWND
- 21. C++ mfc:通过控制箱更新HWND
- 22. 发送消息给hwnd在c#
- 23. C/C++预处理歧义
- 24. C++到C#事件处理
- 25. CMD异常处理C/C++
- 26. C/C++预处理错误
- 27. C/C++ OpenCV视频处理
- 28. 处理FMU的C/C++库
- 29. C# - COMException未处理
- 30. C#NullReferenceException未处理
不可以。有一个原因是为了处理句柄和窗口句柄有两种不同的数据类型('HANDLE'和'HWND')。更不用说一个进程可以有多个窗口,所以绝对不是一对一的对应关系。你究竟在做什么? –
我正在试图制作一个“易用”的API来制作“魔兽世界”机器人。我试图找到的HWND窗口是主窗口的HWND。我不知道我是否能够发现:但是;这不是一个大问题,我只是在C++中教育自己。 – dotTutorials