请求编写按住CTRL显示ToolTip、释放或组合按键时隐藏的示例脚本
AutoHotkey ToolTip 实现方案
以下脚本完全符合需求:按住Ctrl键时显示ToolTip,松开Ctrl或按下任意Ctrl组合键(包括Ctrl+Shift、Ctrl+Alt等修饰键组合)时自动隐藏。
; 初始化状态变量 CtrlDown := false ; 左Ctrl按下时显示ToolTip $LControl:: CtrlDown := true ToolTip, 自定义提示内容`n- 按住Ctrl显示此提示`n- 松开Ctrl或按Ctrl组合键隐藏 SetTimer, CheckCtrlHold, 50 ; 定时检查Ctrl状态,兼容特殊场景 return ; 右Ctrl按下时显示ToolTip $RControl:: CtrlDown := true ToolTip, 自定义提示内容`n- 按住Ctrl显示此提示`n- 松开Ctrl或按Ctrl组合键隐藏 SetTimer, CheckCtrlHold, 50 return ; 定时检查Ctrl是否仍被按住(防止释放事件未触发) CheckCtrlHold: if (!GetKeyState("LControl", "P") && !GetKeyState("RControl", "P")) { CtrlDown := false ToolTip SetTimer, CheckCtrlHold, Off } return ; 监听所有Ctrl+普通键组合,触发时隐藏ToolTip并保留原功能 $^a:: $^b:: $^c:: $^d:: $^e:: $^f:: $^g:: $^h:: $^i:: $^j:: $^k:: $^l:: $^m:: $^n:: $^o:: $^p:: $^q:: $^r:: $^s:: $^t:: $^u:: $^v:: $^w:: $^x:: $^y:: $^z:: $^0:: $^1:: $^2:: $^3:: $^4:: $^5:: $^6:: $^7:: $^8:: $^9:: if (CtrlDown) { ToolTip SendInput, {%A_ThisHotkey%} } return ; 监听Ctrl+修饰键组合,触发时隐藏ToolTip并保留原功能 $^+:: $^!:: $^+!:: if (CtrlDown) { ToolTip SendInput, {%A_ThisHotkey%} } return ; Ctrl释放时隐藏ToolTip $LControl Up:: $RControl Up:: CtrlDown := false ToolTip SetTimer, CheckCtrlHold, Off return
关键逻辑说明
- $前缀:避免脚本发送按键时触发自身热键,保证原组合键功能正常。
- 定时检查:防止某些特殊场景下(如焦点被其他程序抢占)Ctrl释放事件未被捕获,确保ToolTip能及时隐藏。
- 全组合覆盖:包含所有Ctrl+普通键、Ctrl+修饰键组合,只要按下这些组合,ToolTip立即隐藏,同时保留系统默认的组合键功能。
- 左右Ctrl兼容:同时支持左、右Ctrl键触发显示。
内容的提问来源于stack exchange,提问作者Matsuiko Hiroka
相关产品推荐
相关产品推荐

