精易论坛

标题: 【窗口_监视热键_注册 延迟问题】BUG纠正 [打印本页]

作者: 鲁凯啸    时间: 2014-4-15 00:07
标题: 【窗口_监视热键_注册 延迟问题】BUG纠正
本帖最后由 鲁凯啸 于 2014-4-15 00:21 编辑

修正方法:
只需要修改 【子程序 监视处理】  ,回调子程序的参数由两个变为三个,
第三个为动作代码:1为按下,2为放开,一般情况下都必须判断该参数值为2

[e]
.版本 2

.子程序 监视处理, 整数型
.参数 nCode, 整数型
.参数 Wparam, 整数型
.参数 Lparam, 整数型
.局部变量 局_状态键, 整数型, 静态
.局部变量 局_键代码, 整数型
.局部变量 MSG, MSG
.局部变量 动作, 整数型

.如果真 (nCode = 0)

CopyMemory (MSG, Lparam, 20)

.判断开始 (MSG.标记 < 35) ' 按下

局_键代码 = MSG.虚拟码

.判断开始 (MSG.虚拟码 = 160 或 MSG.虚拟码 = 161) ' 左Shift键 和 右Shift键

局_状态键 = #Shift键

.判断 (MSG.虚拟码 = 162 或 MSG.虚拟码 = 163) ' 左Ctrl键 和 右Ctrl键

局_状态键 = #Ctrl键

.判断 (MSG.虚拟码 = 164 或 MSG.虚拟码 = 165) ' 左Alt键 和 右Alt键

局_状态键 = #Alt键

.判断 (MSG.虚拟码 = 91 或 MSG.虚拟码 = 92) ' 左Win键 和 右Win键

局_状态键 = 91

.默认

.判断结束

动作 = 1 ' 这里是修改的代码位置1

.判断 (MSG.标记 > 127) ' 放开

局_键代码 = MSG.虚拟码 ' 这里是修改的代码位置2

.判断开始 (MSG.虚拟码 = 160 或 MSG.虚拟码 = 161) ' 左Shift键 和 右Shift键

局_状态键 = 0

.判断 (MSG.虚拟码 = 162 或 MSG.虚拟码 = 163) ' 左Ctrl键 和 右Ctrl键

局_状态键 = 0

.判断 (MSG.虚拟码 = 164 或 MSG.虚拟码 = 165) ' 左Alt键 和 右Alt键

局_状态键 = 0

.判断 (MSG.虚拟码 = 91 或 MSG.虚拟码 = 92) ' 左Win键 和 右Win键

局_状态键 = 0

.默认

.判断结束

动作 = 2 ' 这里是修改的代码位置3

.默认

.判断结束

程序_Call (到整数 (集_监视事件), 局_状态键, 局_键代码, 动作) ' 这里是修改的代码位置4

.如果真结束
返回 (CallNextHookEx (集_Hook, nCode, Wparam, Lparam))

' 当然,这样修改后调用代码需要修改,一般需要判断 响应监视事件 的第三个参数为2


[/e]
作者: cpk1ng    时间: 2014-4-15 01:53
看不懂啊。。。
作者: 牛X的孩子    时间: 2014-4-15 07:37
这样修改有何意义?
作者: ☆﹏绚天″    时间: 2014-4-16 02:26
晕了有点,看不懂

作者: jianrong13    时间: 2022-5-27 13:29
用线程启动呢
作者: 571901145    时间: 2022-6-17 14:10
666666666666666




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4