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

简单循环VBS&WSH脚本报80070578错误及CPU占用过高问题咨询

问题原因分析
  • 随机报错Invalid window handle(错误代码80070578):触发原因为AppActivate方法执行时,目标弹窗刚好在检测到存在、到执行激活操作的时间间隙被用户或其他程序关闭,此时传入的窗口标识对应无效窗口句柄,直接调用就会抛出该异常。
  • CPU占用高:脚本内层循环是无休眠的死循环,会持续占用单核心CPU资源不停执行窗口检测逻辑,没有空转等待时间。
优化方案
  • 内层检测循环增加短休眠:每次窗口检测后增加100~200ms的休眠,大幅降低空转CPU占用,对弹窗检测的实时性影响极小。
  • 增加错误捕获机制:对窗口激活、按键发送的易报错逻辑增加错误捕获,出现无效句柄错误时直接跳过当前轮次逻辑,避免脚本崩溃。
  • 简化冗余检测逻辑:删除重复的窗口激活判断步骤,合并检测与处理逻辑,减少不必要的系统调用。
  • 优化按键发送逻辑:确认窗口激活成功后再发送回车按键,提升弹窗处理的成功率。
优化后完整代码
Set WshShell = CreateObject("WScript.Shell")
' 开启错误捕获,遇到错误直接跳过继续执行
On Error Resume Next
Do
    ret = False
    ret2 = False
    ' 检测弹窗存在,每次检测休眠100ms降低CPU占用
    Do
        ret = WshShell.AppActivate("Message from webpage")
        ret2 = WshShell.AppActivate("Microsoft Excel")
        WScript.Sleep 100
    Loop Until ret = True Or ret2 = True
    
    ' 确认窗口激活成功后发送回车
    If ret = True Or ret2 = True Then
        WScript.Sleep 200
        WshShell.SendKeys "{ENTER}"
        ' 处理完成后增加等待,避免重复处理同一个弹窗
        WScript.Sleep 500
    End If
Loop

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:03