精易论坛
标题: 热键取按键文本 例程 [打印本页]
作者: Ls60 时间: 2022-4-5 23:17
标题: 热键取按键文本 例程
本帖最后由 Ls60 于 2022-4-6 08:29 编辑
这个例程要追溯到1月份,当时我在研究快捷键,可见:https://125.confly.eu.org/forum.php?mod=viewthread&tid=14714575&extra=
窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
|
_热键1_按下某键 | 逻辑型 | |
|
键代码 | 整数型 | | | |
功能键状态 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
键名 | 文本型 | | |
监控功能键 | 整数型 | | |
如果真 (位与 (功能键状态,
#Ctrl键状态 ) ≠ 0
)
调试输出 (“Ctrl键状态” +
到文本 (位与 (功能键状态,
#Ctrl键状态 ))
)
键名 = 键名 +
“Ctrl+”
监控功能键 = 监控功能键 + 1

如果真 (位与 (功能键状态,
#Shift键状态 ) ≠ 0
)
调试输出 (“Ctrl键状态” +
到文本 (位与 (功能键状态,
#Ctrl键状态 ))
)
键名 = 键名 +
“Shift+”
监控功能键 = 监控功能键 + 2

如果真 (位与 (功能键状态,
#Alt键状态 ) ≠ 0
)
调试输出 (“Ctrl键状态” +
到文本 (位与 (功能键状态,
#Ctrl键状态 ))
)
键名 = 键名 +
“Alt+”
监控功能键 = 监控功能键 + 4
调试输出 (键名
)
用如上代码取调试热键1(也就是编辑框)的时候出现了下面的问题

功能键状态问题:按照图片里的顺序按功能键,发现不能正常输出我现在按的功能键
目前的情况就是:三个键任意顺序按是能正常输出的,但如果是两个功能键按图中顺序按下,会出现问题(红色标记)
1 | 2 | 3 | 调试结果 | 我想要结果 |
Ctrl | Shift | Alt | Ctrl+Shift+Alt+ | Ctrl+Shift+Alt+ |
Ctrl | Alt | Shift | Ctrl+Shift+Alt+ | Ctrl+Shift+Alt+ |
Shift | Ctrl | Alt | Ctrl+Shift+Alt+ | Ctrl+Shift+Alt+ |
Shift | Alt | Ctrl | Ctrl+Shift+Alt+ | Ctrl+Shift+Alt+ |
Alt | Shift | Ctrl | Ctrl+Shift+Alt+ | Ctrl+Shift+Alt+ |
Alt | Ctrl | Shift | Ctrl+Shift+Alt+ | Ctrl+Shift+Alt+ |
| | | | |
Ctrl | Shift | | Ctrl+Shift+ | Ctrl+Shift+ |
Ctrl | Alt | | Ctrl+Alt+ | Ctrl+Alt+ |
Shift | Ctrl | | Shift+ | Ctrl+Shift+ |
Shift | Alt | | Shift+Alt | Shift+Alt |
Alt | Ctrl | | Alt+ | Ctrl+Alt+ |
Alt | Shift | | Alt+ | Shift+Alt+
|

如果你调试过,你会发现知识库里面的介绍完全不够
功能键状态
整数型;用于查看在按下本键的同时各功能键是否被同时按下。可以为以下常量值或其和: 1、#Ctrl键状态; 2、#Shift键状态; 4、#Alt键状态。要判断是否同时按下了某个功能键,在此参数的值与想要得知的功能键的状态常量值之间使用“位与”命令进行比较。如果所得的结果不为零,则表示同时按下了此功能键。

后来经过
@超级萌新 的指点,我又调试了很久。于是就有了这个例程,用这个做快捷键的输入框会比较方便一些,现在分享给大家
评论区置顶了一种更好的写法(原来是我知识浅薄了),有兴趣的可以看一下
-
QQ截图20220405230807.png
(140.7 KB, 下载次数: 0)
作者: 点点丶滴滴 时间: 2022-4-6 00:26
感谢分享,很给力!~
作者: Azumarill 时间: 2022-4-6 00:29
点点滴滴,很给力~
作者: 亲爸爸 时间: 2022-4-6 04:44
目前的情况就是:三个键任意顺序按是能正常输出的,但如果是两个功能键按图中顺序按下,会出现问题(红色标记)
是因为只按功能键的话 功能键状态==0 所以再判断一下 键代码。试试这样
|
_编辑框1_按下某键 | 逻辑型 | |
|
键代码 | 整数型 | | | |
功能键状态 | 整数型 | | | |
如果真 (位与 (功能键状态,
#Ctrl键状态 ) ≠ 0
或 键代码 =
#Ctrl键 )
键名 = 键名 +
“Ctrl+”
如果真 (位与 (功能键状态,
#Shift键状态 ) ≠ 0
或 键代码 =
#Shift键 )
键名 = 键名 +
“Shift+”
如果真 (位与 (功能键状态,
#Alt键状态 ) ≠ 0
或 键代码 =
#Alt键 )
键名 = 键名 +
“Alt+”
如果真 (键代码 ≥
#A键 且 键代码 ≤
#Z键 )
键名 = 键名 +
字符 (键代码
)输出调试文本 (键名)
作者: 亲爸爸 时间: 2022-4-6 04:46
目前的情况就是:三个键任意顺序按是能正常输出的,但如果是两个功能键按图中顺序按下,会出现问题(红色标记)
是因为只按功能键的话 功能键状态==0 所以再判断一下 键代码。试这样
|
_编辑框1_按下某键 | 逻辑型 | |
|
键代码 | 整数型 | | | |
功能键状态 | 整数型 | | | |
如果真 (位与 (功能键状态,
#Ctrl键状态 ) ≠ 0
或 键代码 =
#Ctrl键 )
键名 = 键名 +
“Ctrl+”
如果真 (位与 (功能键状态,
#Shift键状态 ) ≠ 0
或 键代码 =
#Shift键 )
键名 = 键名 +
“Shift+”
如果真 (位与 (功能键状态,
#Alt键状态 ) ≠ 0
或 键代码 =
#Alt键 )
键名 = 键名 +
“Alt+”
如果真 (键代码 ≥
#A键 且 键代码 ≤
#Z键 )
键名 = 键名 +
字符 (键代码
)输出调试文本 (键名)
作者: xjshuaishuai 时间: 2022-4-6 07:44
谢谢分享!
作者: 美味萝卜 时间: 2022-4-6 08:25


作者: kantal 时间: 2022-4-6 12:53
共同努力,共同进步
作者: 晴天大佬 时间: 2022-4-6 13:32




作者: 点点丶滴滴 时间: 2022-4-7 04:27
谢谢大佬分享 支持支持
作者: blue2022 时间: 2022-4-7 09:48
共同努力,共同进步
作者: 396384183 时间: 2022-4-7 19:39
很厉害呢
作者: deva84 时间: 2022-4-13 00:12
好东西多学习
作者: lm88818 时间: 2022-4-22 10:44
支持开源~!感谢分享
作者: 叫我尹志平 时间: 2022-5-14 00:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 梦境吖 时间: 2022-6-27 20:21


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