You need to enable JavaScript to run this app. 能否使用pywinauto自动化操作Avast Business Antivirus?
优惠活动
大模型
产品
解决方案
定价
更多

能否使用pywinauto自动化操作Avast Business Antivirus?

问题根因

Avast Business Antivirus的UI基于Electron(Chromium内核)开发,默认不会将内部DOM控件暴露给Windows UI Automation接口,因此你用uia后端只能识别到外层的Chrome Legacy Window容器,看不到内部的Menu、Notification等具体控件;而win32后端天生不支持Electron类应用的控件识别,所以会抛出内存访问相关的报错。

可行解决方案

方案1:开启Electron应用的 accessibility 支持(推荐)

Electron支持通过--force-renderer-accessibility启动参数强制开启可访问性支持,让内部控件暴露给UIA接口,修改启动代码即可:

from pywinauto.application import Application
import time

# 启动时增加参数开启可访问性支持,路径前加r避免转义错误
app = Application(backend='uia').start(
    r'C:\Program Files\AVAST Software\Avast\AvastUI.exe --force-renderer-accessibility'
).connect(title='Avast Business Antivirus', timeout=100)
# 等待窗口完全加载完成
time.sleep(3)
# 此时再打印控件树即可看到Menu按钮
app.AvastBusinessAntivirus.print_control_identifiers()

打印控件树后找到Menu按钮对应的控件名/automation_id,直接调用.click()方法即可完成点击。

方案2:固定坐标点击(适配性一般,适合自用场景)

如果上述参数不生效(部分定制Electron应用会禁用该参数),可以直接通过固定相对坐标点击Menu按钮,Menu按钮在Avast窗口中的相对位置是固定的,你可以先手动测量偏移值后使用:

from pywinauto.application import Application
import pywinauto.mouse as mouse

app = Application(backend='uia').start(
    r'C:\Program Files\AVAST Software\Avast\AvastUI.exe'
).connect(title='Avast Business Antivirus', timeout=100)
main_window = app.AvastBusinessAntivirus
win_left, win_top = main_window.rectangle().left, main_window.rectangle().top
# 偏移值根据实际情况调整,示例为相对于窗口左上角向右1300px、向下20px的位置
click_x = win_left + 1300
click_y = win_top + 20
mouse.click(coords=(click_x, click_y))

方案3:图像识别点击(适配窗口大小变化场景)

如果Avast窗口大小不固定,可以用图像识别匹配Menu按钮的位置后点击,提前截取清晰的Menu按钮小图存为menu.png放在脚本同目录即可:

from pywinauto.application import Application
import pywinauto.mouse as mouse
from pywinauto.image import ImageFinder

app = Application(backend='uia').start(
    r'C:\Program Files\AVAST Software\Avast\AvastUI.exe'
).connect(title='Avast Business Antivirus', timeout=100)
main_window = app.AvastBusinessAntivirus
# 匹配Menu按钮的位置
menu_rect = ImageFinder.find(r'menu.png', main_window.capture_as_image())
if menu_rect:
    # 计算按钮中心坐标进行点击
    click_x = main_window.rectangle().left + menu_rect[0] + menu_rect[2]//2
    click_y = main_window.rectangle().top + menu_rect[1] + menu_rect[3]//2
    mouse.click(coords=(click_x, click_y))

注意事项

Avast作为安全软件自带自我保护机制,若模拟点击无响应,可以尝试临时关闭Avast的自我保护开关,或者使用管理员权限运行Python脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 22:06:02