VC中如何获得其他进程的窗口句柄?

来源:百度知道 编辑:UC知道 时间:2024/05/27 22:08:03
例如我已经通过方法将当前的所有进程ID获得了,怎么根据这个ID获得它的窗口句柄。特别是要魔兽这样的全屏游戏也要有效。
注:最好不用MFC描述;要VC/VC++的,最好。

HWND nhWnd[10];
int count;

BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam)
{
DWORD dwID ;

GetWindowThreadProcessId(hwnd, &dwID) ;

if (dwID == (DWORD)lParam && IsWindowVisible(hwnd) && GetParent(hwnd) == NULL)
{
nhWnd[count++] = hwnd;
}

return (count == 10) ? false : true;
}

void GetProcessTopWindows(DWORD dwPID)
{
count = 0;
EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)dwPID);
}

GetProcessTopWindows(dwPID)//dwPID进程句柄
将属于 dwPID进程的所有顶层可见窗口句柄保存到nhWnd 中 最多 10 个

HWND nhWnd[10];
int count;

BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam)
{
DWORD dwID ;

GetWindowThreadProcessId(hwnd, &dwID) ;

if (dwID == (DWORD)lParam && IsWindowVisible(hwnd) && GetParent(hwnd) == NULL)
{
nhWnd[count++] = hwnd;
}

return (count == 10) ? false : true;
}

voi