如题

解决方案 »

  1.   

    对,一定要在dll才可以映射到镜像中
    参考
    http://www.docin.com/p-100239332.html
      

  2.   

    钩子分两种,全局的一定要放在dll里,局部的不需要,不过那没意义,因为局部钩子只能获得当前线程的消息,而这些消息完全可以自己写代码处理
      

  3.   

    看你要勾谁了, 勾自己就不用
    不过 我见过用汇编写的全局键盘钩子,  也不用DLL的..
      

  4.   

    多謝 funxu 的提示 , 我还想问一下就是 Combox 的下拉列表拉下后, 点击form下拉列表怎么消失呢?
      

  5.   

    为什么 CMCancelMode WMCancelMode 都不会促发?
     
      

  6.   

    回头我找找..那个确实不用DLL
      

  7.   

    全局的用dll,如果只勾本程序,可以不用
      

  8.   


    謝謝 bdmh ,你的頭像我一直記憶深刻!
      

  9.   

    主要是看钩什么进程的,如果只是本进程,可以不用DLL,其他进程必须在DLL里,应为系统会将此DLL注入到目标进程内部
      

  10.   

    看什么钩子,鼠标消息钩子也可以用录像钩子来获取全局消息,挂接函数一般是要用全局钩子DLL
      

  11.   

    http://blog.csdn.net/pc2s/article/details/233521
    有某些全局钩子可以不依赖于任何DLL而正常工作的。这些钩子包括,WH_JOURNALPLAYBACK,WH_JOURNALRECORD,WH_KEYBOARD_LL,WH_MOUSE_LL。为什么这些钩子可以不依赖于DLL而正常工作呢?我们可以从MSDN中得到答案,MSDN中对于这四种钩子都这样的描述“This hook is called in the context of the thread that installed it.”,翻译成中文意思是钩子函数的调用是在安装钩子的线程上下文中进行的,说得更明白些,意思就是这些钩子是在哪个线程当中安装的,其钩子函数就在哪个线程中执行。所以使用这四种钩子是达不到代码注入的效果的,当然也就可以不依赖于任何DLL了。
      

  12.   

    就是说,局部或全局的钩子的回调函数可以写在dll中;
    而除了WH_JOURNALPLAYBACK,WH_JOURNALRECORD,WH_KEYBOARD_LL,WH_MOUSE_LL这几种全局钩子,其它的全局钩子的回调函数必须写在dll中,因为它们需要把dll注入到目标进程!
      

  13.   

    而SetWindowsHookEx和UnhookWindowsHookEx实际上是本进程调用的,因此这两个函数不一定要写在dll中,但写在dll中会比较方便。