详细说说setwindowshookex()函数,有点代码最好,谢谢。

解决方案 »

  1.   

    WINDOWS调用挂接的回调函数时首先会调用位于函数链首的函数,我们只要将自己的回调函数置于链首,该回调函数就会首先被调用。那么如何将我们自己的回调函数置于函数链的链首呢?函数SetWindowsHookEx()实现的就是该功能。我们首先来看一下SetWindowsHookEx函数的原型:
    HHOOK SetWindowsHookEx(
      int idHook,       
      HOOKPROC lpfn,     
      HINSTANCE hMod,    
      DWORD dwThreadId  
    ); 
    第一个参数:指定钩子的类型,有WH_MOUSE、WH_KEYBOARD等十多种(具体参见MSDN)
    第二个参数:标识钩子函数的入口地址
    第三个参数:钩子函数所在模块的句柄;
    第四个参数:钩子相关函数的ID用以指定想让钩子去钩哪个线程,为0时则拦截整个系统的消息。另外需要注意的是为了捕获所有事件,挂钩函数应该放在动态链接库DLL中。