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

AutoHotkey v2.0脚本在Chrome谷歌域名页面无法运行的求助

问题分析与修正方案

你的脚本无法工作主要是因为混用AHK v1/v2语法、页面判断逻辑不可靠、热键/热字符串定义不符合v2规范这几个核心问题。以下是完全适配AutoHotkey v2的修正方案:

; 仅在Chrome激活且当前页面为google.com域名时生效
#HotIf IsChromeActive() && IsGoogleDomainPage()

; 处理Ctrl+Alt+S的单按/连按逻辑
^!s::
{
    ; 等待200ms检测是否有第二次S输入,超时则输出Small
    if (KeyWait("s", "T0.2"))
        SendInput "Extra Small (XS)"
    else
        SendInput "Small (S)"
}
#HotIf

; 判断Chrome是否处于激活状态
IsChromeActive() {
    return WinActive("ahk_exe chrome.exe") && WinActive("ahk_class Chrome_WidgetWin_1")
}

; 判断当前Chrome标签页是否为google域名页面
IsGoogleDomainPage() {
    WinGetTitle winTitle, "ahk_exe chrome.exe"
    ; 正则匹配所有google顶级域名(含com、co.uk、jp等)
    return RegExMatch(winTitle, "i)google\.(com|co\.[a-z]{2}|[a-z]{2})")
}

核心改进说明

  • 语法适配v2:用#HotIf替代旧版#IfWinActive,完全遵循v2函数式语法规范
  • 可靠的页面校验:通过正则匹配窗口标题中的域名,避免因搜索内容、语言设置导致的标题变化失效
  • 冲突解决:#HotIf的上下文判断优先级高于Chrome原生快捷键,确保脚本能触发
  • 连按逻辑优化:用KeyWait实现单按/连按的区分,无需依赖热字符串的模糊匹配,逻辑更清晰
  • 输入稳定性:使用SendInput替代Send,提升输入速度与可靠性,避免丢字符

额外注意事项

  • 若Chrome以管理员权限运行,必须将AHK脚本也以管理员身份启动,保证权限一致
  • 若Chrome设置隐藏了地址栏在窗口标题中的显示,可改用Acc库读取地址栏内容,替换IsGoogleDomainPage函数:
IsGoogleDomainPage() {
    ; 需提前安装AHK v2版Acc库
    acc := Acc_Get("Object", "4.1.4.1.2.2.1", 0, "ahk_exe chrome.exe")
    url := acc.Value
    acc := ""
    return RegExMatch(url, "i)^https?://(www\.)?google\.")
}

内容的提问来源于stack exchange,提问作者823g4n8901

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:28:26