本帖最后由 zhihui521 于 2009-08-06 10:59:04 编辑

解决方案 »

  1.   

    我觉得应该没问题,调试的时候会纪录两次吗?
    至于不监视全局,那应该是你的钩子问题,另外可以判断lParam>0x80000000,这个代表键盘按下
    《Delphi下深入Windows核心编程》也有相关的内容可以参考下
      

  2.   

    我就是照着《Delphi下深入Windows核心编程》里例子写的,确实会记录两次,郁闷死我了!
    lParam>0x80000000编译通不过,要引用书目单元吗?
      

  3.   

    在if条件时
     if((lParam and KeyPressMask)=0 and (icode=hc_action))试试
      

  4.   

    哈哈!!!!
    谢谢funxu,可以了!
    不过icode=hc_action是什么意思啊?
      

  5.   

    明白了,是用来指明钩子例程是否必须处理消息。如果nCode值为HC_ACTION,钩子例程必须处理消息,若nCode值小于零,钩子例程必须传递消息给CallNextHookEx函数,而不能做进一步的处理,而且必须由CallNextHookEx函数返回值。
    结贴,放分!