网络虾 发表于 2017-10-19 00:17:30

悬念;空格按下连发空格键松开关闭连发空格键,空格键按下时触发其他键停止问题

今天悬念大手帮我写的代码如图!很感谢,但是问题一直还在,空格按住连发空格键,松开关闭,但在空格按住时触发其他键就关闭问题!
今天我研究了一下午 发现如果超级模块里的监视热键可以放开关闭响应事件的话,可以这样写
监视热键(&弹起关闭,#空格键)
子程序弹起关闭   整数型 时钟1.时钟周期=0 ,这是键盘钩子回调函数
                                                                                                如果真(键值=#空格键 且 键状态=“按下”)时钟1.时钟周期=10
在做的各位感觉可行么?我不知道监视热键怎么弹开 (运行子程序)想象是美好的~{:2_27:}

我还是个雏还需要 挂海 的老司机们带带~~

下面是代码:

.版本 2
.支持库 spec
.支持库 eAPI

.程序集 窗口程序集_启动窗口
.程序集变量 键盘钩子, 整数型

.子程序 __启动窗口_创建完毕

键盘钩子 = SetWindowsHookEx (13, &键盘钩子回调函数, GetModuleHandle (0), 0)

.子程序 键盘钩子回调函数, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型, , 状态,256按下,257弹起
.参数 参数三, 整数型, , 键值的指针
.局部变量 键值, 整数型
.局部变量 A, 文本型

键值 = 取字节集数据 (指针到字节集 (参数三, 1), #整数型, )

.如果 (参数二 = 256)
    A = “按下”
.否则
    A = “弹起”
.如果结束

.如果真 (键值 = #空格键 且 A = “按下”)
    时钟1.时钟周期 = 10
.如果真结束
.如果真 (键值 = #空格键 且 A = “弹起”)
    时钟1.时钟周期 = 0
.如果真结束

调试输出 (键值, “状态: ” + A)
返回 (CallNextHookEx (键盘钩子, 参数一, 参数二, 参数三))

.子程序 _时钟1_周期事件

模拟按键 (#空格键, , )










.版本 2

.DLL命令 GetModuleHandle, 整数型, , "GetModuleHandleA", , 获取句柄
    .参数 lpModuleName, 整数型

.DLL命令 CallNextHookEx, 整数型, , "CallNextHookEx", , 下一个钩子
    .参数 hhk, 整数型
    .参数 nCode, 整数型
    .参数 wParam, 整数型
    .参数 lParam, 整数型

.DLL命令 SetWindowsHookEx, 整数型, , "SetWindowsHookExA", , 创建钩子
    .参数 idHook, 整数型
    .参数 lpfn, 子程序指针
    .参数 hmod, 整数型
    .参数 dwThreadId, 整数型

.DLL命令 UnHookWindowsHookEx, 逻辑型, , "UnhookWindowsHookEx", , 卸载钩子
    .参数 hhk, 整数型

悬念 发表于 2017-10-19 00:17:31

多加一个变量b就可以了



亲测可用 ,编程多动脑 问题其实没那么难。

网络虾 发表于 2017-10-19 07:34:39

悬念 发表于 2017-10-19 00:44
多加一个变量b就可以了




贼      6666{:kiss:}

dai8623995 发表于 2018-11-23 14:28:09

学习一下{:smile:}{:smile:}

dai8623995 发表于 2018-11-23 14:28:50

问题其实没那么难。
页: [1]
查看完整版本: 悬念;空格按下连发空格键松开关闭连发空格键,空格键按下时触发其他键停止问题