Ставлю hook на известный HWND так:
Код | hook = SetWinEventHook(EVENT_OBJECT_NAMECHANGE, EVENT_OBJECT_NAMECHANGE, 0, WinEventProcCallback, processId, threadId, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS | WINEVENT_SKIPOWNTHREAD);
|
callback функция:
Код | static void CALLBACK WinEventProcCallback(HWINEVENTHOOK hWinEventHook, DWORD dwEvent, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime) { TCHAR title[128];
if(!GetWindowText(hwnd, title, sizeof(title))) { qWarning("Cannot get window text in window %p (%ld)", hwnd, GetLastError()); return; } ... }
|
В одном случае я слежу за Java окном, в другом - QWidget. В первом случае всё работает прекрасно, события о смене заголовка приходят нормально. Во втором - я получаю в callback-е hwnd равный 0, и выводится сообщение "Cannot get window text in window 0 (1400)". Если смотреть на QWidget в Spy++, то это обычное toplevel окно с нормальным заголовком. Какие есть идеи почему приходит 0? |