Моя проблема в том, что когда открывается меню «Пуск» (я получил EVENT_OBJECT_FOCUS через WinEventHook), GetWindowRect обычно возвращает {0,0,0,0} RECT и возвращается без ошибок.
Я сделалтестовый код для него (запускается до тех пор, пока я не нажму на кнопку «Пуск», затем остановится с «Got {0,0,0,0}» (8 раз из 10, 2 раза он продолжает работать))
Как я могугарантировать, что GetWindowRect всегда возвращает действительные данные?
HWND hwnd = FindWindow(NULL, L"Start menu");
for (int cnt = 1; ; ++cnt)
{
RECT r = {0,0,0,0};
if(GetWindowRect(hwnd, &r))
{
if (r.left == 0 && r.top == 0 && r.right == 0 && r.bottom == 0)
{
cout << cnt << ": Got {0,0,0,0}";
break;
}
else
{
cout << cnt << ": Ok" << endl;
}
}
else
{
cout << cnt << ": Call failed!";
break;
}
}