.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 键代码信息, 文本型, , "0"
.程序集变量 原窗口过程, 整数型
.程序集变量 集_键代码, 整数型
.程序集变量 集_功能键状态, 整数型
.子程序 __启动窗口_创建完毕
标签1.移动 (0, 0, 取用户区宽度 (), )
标签1.背景颜色 = 13932802
键代码信息 = 分割文本 (#键代码描述, #换行符, )
编辑框1.输入方式 = 1
原窗口过程 = GetWindowLongA (编辑框1.取窗口句柄 (), #GWL_WNDPROC)
SetWindowLongA (编辑框1.取窗口句柄 (), #GWL_WNDPROC, 到数值 (&添加热键热键框过程))
编辑框1.宽度 = 标签1.宽度 - 编辑框2.左边 - 1
编辑框2.宽度 = 标签1.宽度 - 编辑框2.左边 - 1
.子程序 添加热键热键框过程, 整数型
.参数 hWnd, 整数型
.参数 uMsg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 str, 文本型
.判断开始 (uMsg = #WM_KILLFOCUS) ' 窗口失去焦点
.如果真 (取文本右边 (编辑框1.内容, 1) = “ ”)
集_键代码 = 0
集_功能键状态 = 0
编辑框1.内容 = “无”
编辑框1.起始选择位置 = -1
.如果真结束
'
.判断 (uMsg = #WM_KEYDOWN 或 uMsg = 260)
编辑框1.内容 = “”
编辑框1.起始选择位置 = -1
格式化键代码 (wParam, 假)
返回 (-1)
.判断 (uMsg = #WM_KEYUP 或 uMsg = 261)
格式化键代码 (wParam, 真)
str = 编辑框1.内容
.如果真 (取文本右边 (str, 3) = “ + ” 或 str = “”)
编辑框1.内容 = “无”
编辑框1.起始选择位置 = -1
编辑框1.被选择字符数 = 100
集_键代码 = 0
集_功能键状态 = 0
.如果真结束
返回 (-1)
.判断 (uMsg = #WM_MOUSEMOVE)
返回 (-1)
.判断 (uMsg = #WM_LBUTTONDOWN)
编辑框1.获取焦点 ()
返回 (-1)
.判断 (uMsg = #WM_RBUTTONUP)
编辑框1.获取焦点 ()
返回 (-1)
.默认
.判断结束
返回 (CallWindowProcA (原窗口过程, hWnd, uMsg, wParam, lParam))
.子程序 格式化键代码
.参数 键代码, 整数型
.参数 放开键, 逻辑型, 可空
.局部变量 临时, 文本型
.局部变量 内容, 文本型
.如果真 (放开键 = 假)
集_功能键状态 = 0
.如果真结束
.如果真 (GetKeyState (17) ≠ 假 且 GetKeyState (17) ≠ 真) ' Ctrl
临时 = 临时 + “Ctrl + ”
.如果真 (放开键 = 假)
集_功能键状态 = 集_功能键状态 + 2
.如果真结束
.如果真结束
.如果真 (GetKeyState (18) ≠ 假 且 GetKeyState (18) ≠ 真) ' Alt
临时 = 临时 + “Alt + ”
.如果真 (放开键 = 假)
集_功能键状态 = 集_功能键状态 + 1
.如果真结束
.如果真结束
.如果真 (GetKeyState (16) ≠ 假 且 GetKeyState (16) ≠ 真) ' Shift
临时 = 临时 + “Shift + ”
.如果真 (放开键 = 假)
集_功能键状态 = 集_功能键状态 + 4
.如果真结束
.如果真结束
.如果真 (GetKeyState (91) ≠ 假 且 GetKeyState (91) ≠ 真)
临时 = 临时 + “Win + ”
.如果真 (放开键 = 假)
集_功能键状态 = 集_功能键状态 + 8
.如果真结束
.如果真结束
内容 = 编辑框1.内容
.如果 (取文本右边 (内容, 3) ≠ “ + ” 且 内容 ≠ “”)
' 本源码来自易语言资源网(www.5A5X.com)
.否则
.如果真 (取文本右边 (内容, 3) = “ + ” 且 放开键)
编辑框1.内容 = “”
编辑框1.起始选择位置 = -1
集_键代码 = 0
集_功能键状态 = 0
返回 ()
.如果真结束
集_键代码 = 键代码
编辑框1.内容 = 临时 + 键代码信息 [键代码]
编辑框1.起始选择位置 = -1
.如果结束
.子程序 _编辑框1_内容被改变
编辑框2.内容 = “功能键状态:” + 到文本 (集_功能键状态) + “ 键代码:” + 到文本 (集_键代码)