如何通过AutoHotkey为相同标题窗口设置热键以快速聚焦指定窗口
AutoHotkey 绑定同标题游戏窗口专属热键实现方案
核心区分逻辑
窗口标题重复时,不需要依赖窗口内部文本,直接使用系统为每个窗口分配的唯一标识**HWND(窗口句柄)**做匹配即可,只要窗口不重启,HWND不会重复。
实现步骤
- 第一步:扫描所有符合目标标题的窗口,按顺序存储对应的HWND
- 第二步:为每个存储的HWND绑定对应的触发热键
- 第三步:热键触发时直接通过HWND激活对应窗口
- 额外补充:增加重新扫描热键,游戏窗口重启后不需要重启脚本即可重新绑定
可用示例代码
; 配置项:修改为你游戏的窗口标题 targetTitle := "你的游戏窗口标题" ; 热键前缀:这里用Alt,可自行修改为Ctrl/Shift等 hotkeyPrefix := "!" ; 初始化绑定窗口的函数 BindGameWindows() { global targetTitle, hotkeyPrefix ; 清空之前的热键和存储的HWND static hwndList := [] for index, hwnd in hwndList { Hotkey, % hotkeyPrefix . index, Off } hwndList := [] ; 获取所有匹配标题的窗口HWND WinGet, winList, List, % targetTitle Loop % winList { hwndList.Push(winList%A_Index%) ; 绑定热键,Alt+1对应第一个窗口,Alt+2对应第二个,以此类推 Hotkey, % hotkeyPrefix . A_Index, ActivateWindow, On } TrayTip, 绑定完成, 共匹配到%winList%个游戏窗口 return ActivateWindow: ; 提取热键对应的序号,比如Alt+1就取1 keyIndex := SubStr(A_ThisHotkey, 0) targetHwnd := hwndList[keyIndex] ; 激活对应窗口 WinActivate, ahk_id %targetHwnd% return } ; 启动时自动执行一次绑定 BindGameWindows() ; 配置Alt+0为重新扫描绑定热键,窗口重启后按这个刷新绑定即可 !0::BindGameWindows()
注意事项
- 如果游戏是以管理员权限运行的,AHK脚本也需要右键选择「以管理员身份运行」,否则会出现热键触发后无法激活窗口的问题
- 窗口顺序以扫描时的Z轴顺序为准,第一次绑定后如果没有重启窗口,热键对应的窗口不会变化
内容的提问来源于stack exchange,提问作者user3552086
相关产品推荐
相关产品推荐

