Я пытаюсь использовать Enum Windows, чтобы получить окно для моего текущего идентификатора процесса. Но каждое окно в перечислении имеет один и тот же идентификатор процесса, и оно завершает перечисление перед тем, как найти совпадение.
У hwnd есть разные адреса памяти при каждом перечислении, но идентификатор процесса всегда одинаков.
#include <Windows.h>
HWND g_HWND = NULL;
BOOL CALLBACK EnumWindowsProcMy(HWND hwnd, LPARAM lParam)
{
DWORD dwProcessId;
GetWindowThreadProcessId(hwnd, &dwProcessId); //dwProcessId is always the same
if (dwProcessId == lParam)
{
g_HWND = hwnd;
return FALSE;
}
return TRUE;
}
int main()
{
DWORD my_pid = GetCurrentProcessId();
bool b = EnumWindows(EnumWindowsProcMy, my_pid);
return 0;
}