在一个应用程序中,我通过SetWindowsHookEx设置了一个全局钩子,但在退出时没有调用UnhookWindowsHookEx,但从效果上看系统会帮你自动卸载掉你先前设置的钩子,请问各位高手,其间系统是如何操作的,能否提供相关的资料参考!!~~

解决方案 »

  1.   

    你的钩子程序(。dll)是在你的程序中加载的,如果程序关闭了,.dll自然也被释放了。
      

  2.   

    你没理解楼主的意思,钩子安装时,其DLL也会加载到其他进程中去,楼主可以看看《Windows核心编程》,也许有帮助。
      

  3.   

    退出时没有调用UnhookWindowsHookEx。将导致系统的速度降低,其它的没有影响。事实上,安装hook后,比较占系统资源。
      

  4.   

    系统中又个钩子链你调用SetWindowsHookEx函数就可以向系统钩子链中安装一个钩子
    调用UnUnhookWindowsHookEx的时候系统会将你先前安装到钩子链上的钩子卸载至于钩子链的结构没有见过文档上又说明,个人猜测应该就是和链表相似(或者就是链表)的数据结构,安装钩子和卸载钩子也类似于在链表上安插和移除节点!
      

  5.   

    如果是全局勾子,它向系统中每个线程发送一个消息,使相应的勾子无效,并释放相应的DLL。
    如果是线和局部勾子,它就对指定线程的相应勾子取消就OK。
    如果当系统退出时没有用UnhookSetwindowsHookEx()则系统在清除
    资源时自动执行UnHooksetwindowshookeEx就可以了.