SetWindowsHookEx() работает только для текущего процесса

Я пытаюсь подключиться к событиям WM_PAINT окна, созданного отдельным процессом, и единственный известный мне способ сделать это - использовать SetWindowsHookEx ().

У меня есть исполняемый файл C++, который выполняет следующий код:

HMODULE hDllInstance = LoadLibrary(L"NiceLibrary");
HOOKPROC pOverlayHook = (HOOKPROC) GetProcAddress(hDllInstance, "OverlayHook");
SetWindowsHookEx(WH_GETMESSAGE, pOverlayHook, hDllInstance, 0 /*dwThreadId*/);

и "NiceLibrary.dll" содержит функцию OverlayHook(...). Я поместил printf("bla") в функцию, чтобы отслеживать, когда она вызывается. По какой-то причине "bla" появляется только для событий, генерируемых текущим процессом, хотя в документации MSDN указано, что:

dwThreadId [in]

Идентификатор потока, с которым должна быть связана подключаемая процедура. Для настольных приложений, если этот параметр равен нулю, процедура подключения связана со всеми существующими потоками, работающими на том же рабочем столе, что и вызывающий поток.

Кроме того, вызов GetLastError() возвращает 0 после SetWindowsHookEx(), что означает отсутствие ошибок.

Вы знаете, что я делаю не так, пожалуйста?

0 ответов

Другие вопросы по тегам