我正在尝试创建一个没有DLL的全局WH_GETMESSAGE HOOK,但我无法成功。 我的操作系统是Win7 32Bit,这是我的一些代码:
SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle(NULL),0);
如果你有空的时候请帮助我。 :)
答案 0 :(得分:2)
hMod [in]
类型:HINSTANCE
包含lpfn参数指向的钩子过程的DLL句柄。如果dwThreadId参数指定当前进程创建的线程,并且钩子过程位于与当前进程关联的代码中,则hMod参数必须设置为NULL。
hMod
必须是DLL的句柄。不是EXE。这是因为DLL将被加载到要挂钩的所有正在运行的进程中,并且其代码直接从这些进程中运行。
答案 1 :(得分:1)
您需要在SetWindowsHookEx的调用线程中使用消息循环
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
答案 2 :(得分:0)
很明显,最后一个参数不应该是'0',它应该是你要调用函数的线程的线程id。你不能为最后一个参数和倒数第二个参数传入null 。使用GetThreadId()来获取当前线程的id,这很可能是你想要做的。
上一张海报的答案对你非常有用,如果你读过它,你会看到上面的内容。