开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 17118|回复: 120
收起左侧

[2020开源大赛(第五届)] 记录精易模块键盘钩子大坑

[复制链接]
结帖率:100% (27/27)
发表于 2020-11-10 15:38:33 | 显示全部楼层 |阅读模式   浙江省宁波市
精易模块的类_钩子 在XP下不能使用,

详细BUG提交
https://bbs.125.la/forum.php?mod ... 14647898&extra=
暂时没有管理员回复,然后自己的开始折腾了。

来来回回才发现其实模块的钩子方式并不太合理兼容性太差。

主要是2个方便

1注册方式

模块是使用  

  
SetWindowsHookExA ( #WH_KEYBOARD_LL, &子程序_钩子回调, 0, 0)


这种方式在XP下无效,需要使用下面的方式来注册

  
SetWindowsHookExA ( #WH_KEYBOARD_LL, &子程序_钩子回调, GetModuleHandleA1 (0), 0)


注册成功后发现在XP下莫如其名的奔溃 奔溃 奔溃 各种奔溃。

后来发现模块使用的回调方式都是注入代码,经过测试模块的 程序_执行整数子程序 (全_钩子相关.键盘钩子回调函数, wParam, struct.hwnd, 0)是导致奔溃的主要原因,找到问题后干脆自己写了。
  
子程序名返回值类型公开备 注
键盘钩子_过程整数型 
参数名类 型参考可空数组备 注
nCode整数型
wParam整数型
lParam整数型
变量名类 型静态数组备 注
structstruct 
如果真 (nCode = #HC_ACTION )  ' 判断是否是有效按键
RtlMoveMemory_整数型 (取数据_通用型 (struct), lParam, 28)
如果真 (wParam = 256 wParam = 257 wParam = 258)  ' 按下,放开
程序_执行整数子程序 (全_钩子相关.键盘钩子回调函数, wParam, struct.hwnd, 0)

返回 (CallNextHookEx (全_钩子相关.键盘钩子句柄, nCode, wParam, lParam))
子程序名返回值类型公开备 注
鼠标钩子_过程整数型 





其实模块的这种回复回调,置代码的方式不不好。导致很多BUG建议钩子不要使用模块直接自己写几行代码调用。

最后附上源码,经过测试无BUG不会奔溃。

键盘钩子.zip (55.77 KB, 下载次数: 374)
20201110152739.jpg

点评

某些WIN10系统下也会崩溃,查了好久才发现是模块里键盘钩子的问题   福建省泉州市  发表于 2020-11-10 20:04
还有过程中奔溃XP下多次奔溃后没有卸载钩子就没办法再zc,总之不要使用模块的不稳定。   浙江省宁波市  发表于 2020-11-10 15:52

评分

参与人数 4好评 +2 精币 +6 收起 理由
leonqp1030 + 1 等官方改进了
月恒 + 2 感谢分享,很给力!~
bianyuan456 + 1 + 2 谢谢,对我很有帮助!@@!!
a365326 + 1 + 1 支持开源~!感谢分享

查看全部评分

签到天数: 9 天

发表于 2024-6-28 09:24:05 | 显示全部楼层   江西省抚州市
为啥这个钩子,运行久了,输入法打字,就会非常的卡
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2024-5-4 21:46:08 | 显示全部楼层   河南省郑州市
1111111111111111111111
回复 支持 反对

使用道具 举报

发表于 2024-4-27 16:38:44 | 显示全部楼层   湖南省湘潭市
又浪费两精币
错误(10002): 指定子程序或类方法名称“系统_取系统版本_汇编”未找到。
回复 支持 反对

使用道具 举报

发表于 2024-3-26 16:57:47 | 显示全部楼层   江苏省徐州市
6666666666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 11 天

发表于 2024-3-7 08:21:37 | 显示全部楼层   河北省石家庄市
学到了学到了
回复 支持 反对

使用道具 举报

发表于 2024-2-12 01:41:35 | 显示全部楼层   山东省青岛市
3131214124142
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2023-12-26 22:53:39 | 显示全部楼层   江西省抚州市
不知道为什么,用这个源码,有时候会卡死,报错就报在  Message = 指针到字节集 (lParam, 24)  这行代码
回复 支持 反对

使用道具 举报

结帖率:100% (27/27)

签到天数: 4 天

 楼主| 发表于 2023-12-25 08:35:09 | 显示全部楼层   香港特别行政区南区
q6245wx 发表于 2023-12-24 11:14
请教下这个键盘钩子如何获取延时呢?

弄个全局变量记录被
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)
发表于 2023-12-24 11:14:51 | 显示全部楼层   湖北省荆州市
请教下这个键盘钩子如何获取延时呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表