应用程序通过调用SetWindowsHookEx()函数安装钩子函数:HHOOK SetWindowsHookEx( int idHook, // type of hook to install HOOKPROC lpfn, // address of hook procedure HINSTANCE hMod, // handle to application instance DWORD dwThreadId // identity of thread to install hook for );参数说明: lpfn 指向钩子过程的指针。如果dwThreadId等于零,或者dwThread标识的线程由另一个进程 创建,则lpfn指向的钩子必须在动态链接库中。如果dwThreadId不等于零且dwThreadId标识的线程由当前进程创建,则lpfn指向的钩子过程可以属于当前进程。 hMod 钩子过程所在模块的句柄。如果dwThreadId不等于零且dwThreadId标识的线程由当前进程创建,且lpfn指向的钩子过程属于当前进程,那么hMod必须为零。 dwThreadId 钩子相关线程的标识。如果想要截获发给所有线程的消息,dwThreadId必须等于零。 idHook 想要安装的具体的钩子类型。 由上面的说明可知,你首先确定这个线程的归属问题
是不是?
int idHook, // type of hook to install
HOOKPROC lpfn, // address of hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // identity of thread to install hook for
);参数说明:
lpfn 指向钩子过程的指针。如果dwThreadId等于零,或者dwThread标识的线程由另一个进程 创建,则lpfn指向的钩子必须在动态链接库中。如果dwThreadId不等于零且dwThreadId标识的线程由当前进程创建,则lpfn指向的钩子过程可以属于当前进程。
hMod 钩子过程所在模块的句柄。如果dwThreadId不等于零且dwThreadId标识的线程由当前进程创建,且lpfn指向的钩子过程属于当前进程,那么hMod必须为零。
dwThreadId 钩子相关线程的标识。如果想要截获发给所有线程的消息,dwThreadId必须等于零。
idHook 想要安装的具体的钩子类型。
由上面的说明可知,你首先确定这个线程的归属问题