You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

关键逻辑说明

  1. 通用输入控件判断:通过控件的ClassNN类名识别输入框,比如Edit是大部分基础输入框的类名关键词,Chrome_AutocompleteEditView对应Chrome浏览器的地址栏/搜索框。
  2. Google Sheets适配:双击单元格后处于编辑状态,此时通过窗口标题+左键按下状态(双击时会短暂按住左键)判断,允许输入D。
  3. 游戏适配:不同游戏的输入状态判断逻辑不同,可通过WinGetClass获取游戏窗口类名,结合游戏内的输入状态标识(比如是否弹出聊天框)补充判断。
  4. 工具辅助:如果遇到某个软件的输入框不生效,用AHK自带的Window Spy(右键托盘AHK图标打开)查看该输入框的ClassNN,添加到inputCtrlKeywords列表即可。

内容的提问来源于stack exchange,提问作者Boxxy Targaryen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:23:13