我也遇到了同样的问题,最后我做了一个JOURNAL钩子。总算是回避矛盾了。

解决方案 »

  1.   

    试试把别的句柄也放到shared里面
      

  2.   

    你可以用Registerhotkey和UnRegisterhotkey达到同样的目的,不一定要采用钩子,钩子技术并不是一个在效率上十分值得推崇的技术。
      

  3.   

    另外,SETWINDOWSHOOK函数中有一个参数是强调所挂钩子作用范围的(可以是仅仅针对调用现成的,也可以是针对所有现成的,应当选择后者,再试试看!)
      

  4.   

    就是dwThreadId Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is 0, the hook procedure is associated with all existing threads. 
    《msdn》
      

  5.   

    xd_g说的对,你装的只是一个特定的线程钩子.要装全局的.
    你在DLL里调用SetWidnowsHookEx最后一个参数要为0.我也有个HOOK问题,大家看看:
    我做了个扩展DLL,里面挂一个消息钩子.专门处理WM_DESTORY.
    调用DLL只有一个进程.当这个进程结束后,不能释放DLL.即DLL不能解除进程的地址空间映射.
    导致不能关机,总是说有一个任务没结束.欢迎讨论[email protected]