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

AHK脚本运行无响应求助:Chrome窗口随机切换功能失效

修复AHK随机切换Chrome窗口脚本的问题

问题分析

你的脚本未执行预期任务,核心问题有两处:

  • 错误的ErrorLevel判断逻辑:AHK中WinGet命令执行后,若未找到匹配窗口,ErrorLevel会被设为1(数值),而非字符串"ERROR"。原判断条件永远为真,导致无Chrome窗口时仍执行后续代码,触发错误。
  • 错误的窗口句柄访问方式:WinGet, hWndList, List返回的是窗口数量(数值),句柄实际存储在hWndList1、hWndList2这类变量中。原脚本调用hWndList.MaxIndex()是错误的(这是数组方法,但hWndList是普通数值变量),会导致索引取值异常。

修复后的脚本

简洁版写法

#Persistent
SetTitleMatchMode, 2

Loop
{
    ; 获取所有标题含"Google Chrome"的窗口数量
    WinGet, chromeWinCount, List, Google Chrome

    if (chromeWinCount > 0)
    {
        ; 随机生成窗口索引
        Random, index, 1, %chromeWinCount%
        ; 获取目标窗口句柄
        hWnd := % "chromeWinCount" index
        ; 激活窗口
        WinActivate, ahk_id %hWnd%
        
        ; 随机休眠8-15秒
        Random, sleepTime, 8000, 15000
        Sleep, %sleepTime%
    }
    else
    {
        ; 未找到Chrome窗口,1秒后重试
        Sleep, 1000
    }
}

更易维护的数组版写法

#Persistent
SetTitleMatchMode, 2

Loop
{
    chromeWindows := []
    WinGet, hWndList, List, Google Chrome

    if (hWndList > 0)
    {
        ; 将所有Chrome窗口句柄存入数组
        Loop, %hWndList%
        {
            chromeWindows.Push(hWndList%A_Index%)
        }
        ; 随机选中一个窗口并激活
        Random, index, 1, chromeWindows.Length()
        WinActivate, ahk_id %chromeWindows[index]%
        
        Random, sleepTime, 8000, 15000
        Sleep, %sleepTime%
    }
    else
    {
        Sleep, 1000
    }
}

关键修复说明

  1. 改用窗口数量chromeWinCount > 0判断是否找到目标窗口,逻辑更直观可靠。
  2. 修正窗口句柄的获取方式,避免对非数组变量调用数组方法的错误。
  3. 数组版写法将句柄存入数组,代码可读性更高,便于后续扩展功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:57:28