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
相关产品推荐
相关产品推荐

