精易论坛

标题: 热键取按键文本 例程 [打印本页]

作者: 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

调试输出 (键名)


i支持库列表   支持库注释   
spec特殊功能支持库

用如上代码取调试热键1(也就是编辑框)的时候出现了下面的问题

功能键状态问题:按照图片里的顺序按功能键,发现不能正常输出我现在按的功能键
目前的情况就是:三个键任意顺序按是能正常输出的,但如果是两个功能键按图中顺序按下,会出现问题(红色标记)
123调试结果我想要结果
CtrlShiftAltCtrl+Shift+Alt+Ctrl+Shift+Alt+
CtrlAltShiftCtrl+Shift+Alt+Ctrl+Shift+Alt+
ShiftCtrlAltCtrl+Shift+Alt+Ctrl+Shift+Alt+
ShiftAltCtrlCtrl+Shift+Alt+Ctrl+Shift+Alt+
AltShiftCtrlCtrl+Shift+Alt+Ctrl+Shift+Alt+
AltCtrlShiftCtrl+Shift+Alt+Ctrl+Shift+Alt+
CtrlShiftCtrl+Shift+Ctrl+Shift+
CtrlAltCtrl+Alt+Ctrl+Alt+
ShiftCtrl Shift+Ctrl+Shift+
ShiftAltShift+AltShift+Alt
AltCtrl Alt+Ctrl+Alt+
AltShift Alt+Shift+Alt+


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


后来经过@超级萌新 的指点,我又调试了很久。于是就有了这个例程,用这个做快捷键的输入框会比较方便一些,现在分享给大家
热键取文本.e (8.35 KB, 下载次数: 33)
评论区置顶了一种更好的写法(原来是我知识浅薄了),有兴趣的可以看一下

QQ截图20220405230807.png (140.7 KB, 下载次数: 0)

QQ截图20220405230807.png

作者: 点点丶滴滴    时间: 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