【发布时间】:2011-06-20 02:27:12
【问题描述】:
我正在尝试创建一个没有 DLL 的全局 WH_GETMESSAGE HOOK,但我无法成功。 我的操作系统是 Win7 32Bit,这是我的一些代码:
SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle(NULL),0);
如果您有时间,请帮助我。 :)
【问题讨论】:
标签: dll windows-7 mfc hook global
我正在尝试创建一个没有 DLL 的全局 WH_GETMESSAGE HOOK,但我无法成功。 我的操作系统是 Win7 32Bit,这是我的一些代码:
SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle(NULL),0);
如果您有时间,请帮助我。 :)
【问题讨论】:
标签: dll windows-7 mfc hook global
hMod [输入]
类型:HINSTANCE
包含 lpfn 参数指向的钩子过程的 DLL 句柄。如果 dwThreadId 参数指定由当前进程创建的线程,并且钩子过程在与当前进程关联的代码内,则 hMod 参数必须设置为 NULL。
hMod 必须是 DLL 的句柄。不是EXE。这是因为 DLL 将被加载到所有正在运行的要挂接的进程中,并且它的代码直接从这些进程中运行。
【讨论】:
在SetWindowsHookEx的调用线程中需要一个消息循环
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
【讨论】:
很明显,最后一个参数不应该是'0',它应该是你要调用函数的线程的线程id。你不能为最后一个参数和next to last参数都传入null .使用 GetThreadId() 获取当前线程的 id,这很可能是您想要做的。
之前发帖人的回答对你很有用,如果你读过它,你自己就会看到上面的。
【讨论】: