首页
社区
课程
招聘
钩回车键为什么钩子函数被执行两回???
发表于: 2005-8-19 20:47 6096

钩回车键为什么钩子函数被执行两回???

2005-8-19 20:47
6096
做了一个远程钩子DLL,钩回车键,在函数中通过if(VK_RETURN==wParam)来判断是否是回车键,但是在执行时钩回车时相应的钩子函数却被执行了两回,难道键按下和键抬起都会触发钩子吗???怎样解决这个问题只让他执行一次?跟lParam参数有关系吗,找了半天没发现有什么能解决的。请帮帮忙。。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
2
lParam > 0 ==> 按下
2005-8-19 22:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,在lParam的位31(最高位)用于标志按键是按下或者弹起,0为按下,1为弹起。按理说,这样的话只要我们取其中的一个就行,这样钩子函数就执行一次,但是实际中却发现了这样一个问题:
当使用0(按下)时执行钩子函数是成功的,钩子函数只执行一次:
if(VK_RETURN==wParam && 0==(lParam>>31 & 1))
但是当使用1(弹起)时,钩子函数一次也执行不了,为什么这时钩不住这个弹起的回车呢?
if(VK_RETURN==wParam && (lParam>>31 & 1))

偶然发现而已,但最主要的问题已经解决了,有兴趣的可以试试,看看是什么原因。。。
2005-8-20 00:18
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
4
回车+换行?不知道,瞎说
2005-8-20 13:24
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
5
一直都是用按下lParam>0,就从来没想过UP(lParam<0)会有问题。
不解
2005-8-21 07:28
0
游客
登录 | 注册 方可回帖
返回
//