给点思想
小弟多谢了!

解决方案 »

  1.   

    可以啊,但是可能有写东西就钩不到了,
    就用SetWindowsHookEx就可以了,设置一个钩子回掉函数
      

  2.   

    全局钩子必须封装在dll里面。
      

  3.   

    做成日志钩子hk_journey,大概这个样子的。
      

  4.   

    除了全局钩子,其它的可以不写在Dll里
      

  5.   

    不用 dll 只能勾自己进程的,
    全局必须用 dll。因为全局钩子函数代码是要被其他进程调用的,
    如果不是 dll, 其他进程根本就无法转载这段代码的!
      

  6.   

    可以使用日志全局钩子。
    不需要日志。设置一个钩子的回调函数就可以了。型如:LRESULT CALLBACK RecordProc(int code , WPARAM wParam , LPARAM lParam)可以在MSDN上查找:JournalHooks和SetWindowsHookEx两个函数得到更好的解释。
    据我所知,这是唯一的一种可以不使用Dll编写全局钩子的方法。
    不知道有没有别的解释。
    其中,SetWindowsHookEX需要将第四个参数设置为0,这样就是挂接到全局。型如: HRecord=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)RecordProc,AfxGetApp()->m_hInstance,0);
      

  7.   

    附带说一下,这种东西的功能有限,还是写个Dll比较好。
    如果需要全局日志钩子的实例代码(mfc),可以留下邮箱。
    我可以给你寄一个鼠标键盘记录、回放的小东西。
      

  8.   

      不用DLL你怎么能使你的代码在别的进程空间中运行呢?
      

  9.   

    首先要明白,这种钩子是用来钩取消息的,消息队列是每个进程私有的数据结构,在Win32的平坦模式下,一个进程是无法访问另一个进程的地址空间的,如果不是全局钩子还好说,如果全局钩子就比较麻烦了,因为要能够从别的进程的消息队列中捕获消息,所以MS才会要求每个全局钩子封装成一个dll模块,这样系统可以方便地把这个dll映射到各个进程中去,单独一个exe是不可以的。当然如果你能申请驻留到系统地址范围去,也是可以的。这样就不是简单的通过API函数的方法来实现钩子了。
      

  10.   

    钩子有很多种,如果你要的API钩子,那又是另一回事。
      

  11.   

    to  codewarrior(会思考的草) :
    日志钩子就可以单独一个exe完成全局钩子的功能,虽然有些功能不能完成。好像也是windows的唯一的一个特例……