获取指定进程的窗口
- 枚举窗口
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;
}