如何在AHK中绑定D键为左键单击且仅在非输入状态生效?
解决AHK绑定D键为左键但输入框正常输入D的问题
要实现仅在非输入区域按D触发左键,输入框聚焦时正常输入D,核心是通过判断当前聚焦的控件类型分支执行逻辑,以下是具体脚本和说明:
完整脚本示例
D:: ; 获取当前活动窗口的聚焦控件信息 ControlGetFocus, focusedCtrl, A ControlGet, ctrlType, ClassNN, , %focusedCtrl%, A ; 判断是否为常见输入类控件(覆盖浏览器地址栏、记事本、办公软件输入框等) inputCtrlKeywords := ["Edit", "RichEdit", "Chrome_AutocompleteEditView", "WindowsForms10.EDIT", "TEdit"] for key, keyword in inputCtrlKeywords { if InStr(ctrlType, keyword) { Send, d return } } ; 针对Google Sheets的特殊判断:双击单元格进入编辑状态时允许输入D WinGetTitle, winTitle, A if (InStr(winTitle, "Google Sheets") && GetKeyState("LButton", "P")) { Send, d return } ; 游戏输入状态适配(根据你的游戏调整) ; 示例:如果游戏窗口类名为"GameProcessClass",且当前处于输入状态(可结合游戏内快捷键判断) ; WinGetClass, winClass, A ; if (winClass = "GameProcessClass" && 这里添加游戏输入状态的判断逻辑) { ; Send, d ; return ; } ; 非输入区域,触发鼠标左键单击 Click return
关键逻辑说明
- 通用输入控件判断:通过控件的
ClassNN类名识别输入框,比如Edit是大部分基础输入框的类名关键词,Chrome_AutocompleteEditView对应Chrome浏览器的地址栏/搜索框。 - Google Sheets适配:双击单元格后处于编辑状态,此时通过窗口标题+左键按下状态(双击时会短暂按住左键)判断,允许输入D。
- 游戏适配:不同游戏的输入状态判断逻辑不同,可通过
WinGetClass获取游戏窗口类名,结合游戏内的输入状态标识(比如是否弹出聊天框)补充判断。 - 工具辅助:如果遇到某个软件的输入框不生效,用AHK自带的Window Spy(右键托盘AHK图标打开)查看该输入框的
ClassNN,添加到inputCtrlKeywords列表即可。
内容的提问来源于stack exchange,提问作者Boxxy Targaryen
相关产品推荐
相关产品推荐

