Я пытаюсь создать глобальный WH_GETMESSAGE HOOK без DLL, но безуспешно. Моя ОС Win7 32Bit, это мой код:
SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle(NULL),0);
Пожалуйста, помогите мне, если у вас есть время. :)
Я пытаюсь создать глобальный WH_GETMESSAGE HOOK без DLL, но безуспешно. Моя ОС Win7 32Bit, это мой код:
SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle(NULL),0);
Пожалуйста, помогите мне, если у вас есть время. :)
hMod [в]
Тип: ИНСТАНС
Дескриптор библиотеки DLL, содержащей процедуру ловушки, на которую указывает параметр lpfn. Параметр hMod должен быть установлен в NULL, если параметр dwThreadId указывает поток, созданный текущим процессом, и если процедура подключения находится в коде, связанном с текущим процессом.
hMod
должен быть дескриптором DLL. Не EXE. Это связано с тем, что DLL будет загружена во все запущенные процессы для перехвата, и ее код запустится прямо из этих процессов.
Вам нужен цикл сообщений в вызывающем потоке SetWindowsHookEx.
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Очевидно, что последний параметр не должен быть равен «0», это должен быть идентификатор потока, в котором вы хотите вызвать функцию. Вы не можете передать значение null как для последнего, так и для предпоследнего параметров. Используйте GetThreadId(), чтобы получить идентификатор текущего потока, скорее всего, это то, что вы хотите сделать.
Ответ предыдущего автора был очень полезен для вас, если бы вы его прочитали, вы бы сами увидели вышеизложенное.