如何获得应用程序的HWND,如果我知道进程ID?任何人都可以发布样品吗?我正在使用MSV C++ 2010. 我找到了Process :: MainWindowHandle,但我不知道如何使用它。通过进程ID获取hwnd C++
7
A
回答
16
HWND g_HWND=NULL;
BOOL CALLBACK EnumWindowsProcMy(HWND hwnd,LPARAM lParam)
{
DWORD lpdwProcessId;
GetWindowThreadProcessId(hwnd,&lpdwProcessId);
if(lpdwProcessId==lParam)
{
g_HWND=hwnd;
return FALSE;
}
return TRUE;
}
EnumWindows(EnumWindowsProcMy,m_ProcessId);
3
您可以使用EnumWindows的和GetWindowThreadProcessId()函数在本MSDN article提及。
0
单个PID(进程ID)可以与多个窗口(HWND)相关联。例如,如果应用程序使用多个窗口。
以下代码将查找给定PID中所有窗口的句柄。
void GetAllWindowsFromProcessID(DWORD dwProcessID, std::vector <HWND> &vhWnds)
{
// find all hWnds (vhWnds) associated with a process id (dwProcessID)
HWND hCurWnd = NULL;
do
{
hCurWnd = FindWindowEx(NULL, hCurWnd, NULL, NULL);
DWORD dwProcessID = 0;
GetWindowThreadProcessId(hCurWnd, &dwProcessID);
if (dwProcessID == dwProcessID)
{
vhWnds.push_back(hCurWnd); // add the found hCurWnd to the vector
wprintf(L"Found hWnd %d\n", hCurWnd);
}
}
while (hCurWnd != NULL);
}
相关问题
- 1. 如何通过编程方式从进程HWND获取句柄ID?
- 2. 通过名称获取进程ID
- 3. 从hWnd获取(资源)ID
- 4. 通过Perl脚本获取进程ID
- 5. 通过进程Id获取进程对象
- 6. 如何获取通过execvp启动的进程的进程ID()
- 7. 如何在linux中通过进程名获取进程ID
- 8. 如何使用托管VB.net代码从HWND获取进程ID?
- 9. 如何通过HWND获取窗口类?
- 10. 启动Win32进程A启动进程B - 获取B的ID/HWND
- 11. 获取的hWnd从当前进程
- 12. 如何通过进程ID获取进程的stdin?
- 13. 如何通过在Linux中使用C/C++提供进程ID来获取父进程ID?
- 14. 通过点击应用程序窗口获取进程ID
- 15. C++ WPF通过HWND和HINSTANCE的C++/CLI
- 16. 获取XML元素通过ID在C#
- 17. 通过命令行获取新创建的进程ID
- 18. 通过窗口句柄获取父进程ID
- 19. C++如何获取父进程ID
- 20. 通过Id获取元素
- 21. Linux命令通过名称获取Tomcat进程ID
- 22. 如何通过Excel中的对象获取进程ID#
- 23. 通过进程ID获取JVM的内存细节
- 24. C++ mfc:通过控制箱更新HWND
- 25. 通过GET获取div id通过Javascript
- 26. 获取进程ID或进程名通过蒸汽推出蒸汽赛后:// rungameid /#
- 27. C程序从父母id(minix)获取子进程ID
- 28. 通过ID获取div值
- 29. 通过id()获取对象?
- 30. 获取PowerShell进程的进程ID
的方法并不限定于1个窗口。 – chris 2012-07-29 17:37:11
一个进程可以有几个窗口,这有几个hwnds。 – 2012-07-29 17:37:18
因此,马比是否有可能获得所有HWND并选择这些,这个进程ID有什么? – Luke 2012-07-29 17:41:36