获取指定进程的窗口
- 枚举窗口
EnumWindows - 通过窗口句柄,获取当前窗口的进程id
GetWindowThreadProcessId
typedef struct PorcessTopWnd
{
HWND hWnd;
DWORD dwProcessId;
TCHAR szTitle[256];
}PorcessTopWnd;
HWND GetHwndByPid(DWORD dwProcessId, const TCHAR *szTitle)
{
PorcessTopWnd processTopWnd = { 0 };
processTopWnd.dwProcessId = dwProcessId;
lstrcpy(processTopWnd.szTitle, szTitle);
EnumWindows([](HWND hwnd, LPARAM lparam){
PorcessTopWnd *processTopWnd = (PorcessTopWnd *)lparam;
DWORD dwProcessId = 0;
GetWindowThreadProcessId(hwnd, &dwProcessId);
if (dwProcessId == processTopWnd->dwProcessId)
{
TCHAR szTitle[128] = _T("");
::GetWindowText(hwnd, szTitle, 128);
if (lstrcmp(szTitle, processTopWnd->szTitle) == 0)
{
processTopWnd->hWnd = hwnd;
return FALSE;
}
}
return TRUE;
}, (LPARAM)&processTopWnd);
return processTopWnd.hWnd;
}
本文介绍了一种通过枚举窗口并匹配进程ID来获取指定进程窗口的方法。使用自定义结构体PorcessTopWnd存储窗口句柄、进程ID及标题,通过EnumWindows函数遍历所有顶级窗口,并利用GetWindowThreadProcessId获取窗口所属进程ID。当找到与目标进程ID及标题匹配的窗口时,返回该窗口句柄。

8547

被折叠的 条评论
为什么被折叠?



