Как создать глобальный WH_GETMESSAGE HOOK без DLL - PullRequest
1 голос
/ 20 июня 2011

Я пытаюсь создать глобальный WH_GETMESSAGE HOOK без DLL, но не могу добиться успеха.Моя ОС Win7 32Bit, это мой код:

SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle(NULL),0);

Пожалуйста, помогите мне, если у вас есть время.:)

Ответы [ 3 ]

2 голосов
/ 20 июня 2011

Как задокументировано ,

hMod [in]

Тип: HINSTANCE

Дескриптор библиотеки DLL, содержащей процедуру подключения, на которую указывает параметр lpfn. Параметр hMod должен быть установлен в NULL, если параметр dwThreadId указывает поток, созданный текущим процессом, и если процедура подключения находится в коде, связанном с текущим процессом.

hMod должен быть дескриптором библиотеки DLL. Не EXE Это связано с тем, что DLL будет загружена во все запущенные процессы, которые нужно подключить, и ее код будет запущен прямо из этих процессов.

1 голос
/ 30 июня 2012

Вам нужен цикл сообщений в вызывающей ветке SetWindowsHookEx

while(GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
0 голосов
/ 22 июня 2011

Очевидно, что последним параметром не должно быть '0', это должен быть идентификатор потока, в который вы хотите вызвать функцию. Вы не можете передать значение null как для последнего, так и для последнего параметра , Используйте GetThreadId (), чтобы получить идентификатор текущего потока, это, скорее всего, то, что вы хотите сделать.

Ответ предыдущего автора был очень полезен для вас, если бы вы прочитали его, вы бы увидели вышеизложенное сами.

...