呃,想加上颜色的,结果WH_GETMESSAGE被直接输出了

解决方案 »

  1.   

    如果要Hook全局的话,得做DLL,在Exe里面调用。单独一个Exe是不能Hook全局的
      

  2.   

    to cpio
    哦。那为什么第一段代码当鼠标移出窗口时,也能Hook到指针的位置(我不清楚这叫不叫全局Hook,但是,似乎没有生成dll文件),第二段代码不可以,第三段代码什么功能都实现不了
      

  3.   

    系统钩子(全局钩子)要写做成单独的dll.
      

  4.   

    http://topic.csdn.net/u/20080430/09/12c4ada7-5806-402a-9607-d19ceae1d847.html
    http://topic.csdn.net/u/20080527/10/00800edf-9fe9-4b61-bcc1-62f7add8109a.html
      

  5.   

    利用Hook屏蔽鼠标及键盘一分钟示例 
    http://dl2.csdn.net/down4/20080321/21232150801.exe源码请到这儿下载: 
    http://download.csdn.net/source/392508 
      

  6.   

    谢谢你!
    我下午又阅读了几篇文章,发现C#要想添加WH_GETMESSAGE型的Hook是不可以的。
    http://www.codeproject.com/KB/system/globalsystemhook.aspx要怎么办呢
      

  7.   


    C#要想添加WH_GETMESSAGE型的Hook是不可以的???????????????
    不要乱讲啦
      

  8.   

    是全局钩子
    其实都可以不用Dll的,只要模块的映射的地址
      

  9.   


    文章的意思是说:
    例如我的程序叫A,现在要为进程X添加一个键盘钩子,执行过程是
       1. X获得焦点,开始执行。
       2. 用户按一个键
       3. Windows从X接管执行,并把执行的上下文切换到A
       4. Windows在A的进程空间中调用为X添加的钩子中的回调函数
       5. Windows从A接管执行,并把执行的上下文切换回X
       6. Windows把回调函数返回的值放入X的消息队列
       7.。。
       8.。。如果添加的是WH_GetMessage类型的钩子,程序的执行始终都是在X的进程空间中,我们的程序A就没法获得消息了我是纯菜鸟,也不懂对不对,如果可以的话,能告诉我怎么做么?
      

  10.   

    关于消息
    http://msdn.microsoft.com/zh-cn/ms632590(en-us).aspx
      

  11.   


    1、全局钩子需要使用dll来实现,用于加载到不同进程的进程空间中执行。
    2、dll中钩子代码执行在X进程的进程空间中
    3、关于如何让A程序获得消息:可以在dll中通过发送自定义消息的方式将消息发送给程序A,A在WindowsProc中处理消息。
    4、dll中可以使用共享段来共享全局变量。
    5、补充3:进程间的通信方式有多种:内存映射、管道等。
      

  12.   

    我原先的那两个链接不知何故打不开了。难道是Csdn出故障了???
    先提供一个Hook示例,可以设置全局或线程钩子。TestHook
    http://d.download.csdn.net/down/867789/wzuomin
      

  13.   

    我这个也只是Hook鼠标键盘
    对于 WH_GETMESSAGE ,还没试过呢
      

  14.   

    Managed WH_GETMESSAGE hooks are not supported. A managed DLL can't be injected into just any process, because different versions of the CLR can't be loaded into the same process. See http://support.microsoft.com/default.aspx/kb/318804