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

如何使用pywinauto获取Cisco AnyConnect的属性文本?

获取pywinauto控件的属性文本(判断VPN连接状态)

我来帮你解决用pywinauto获取VPN连接状态文本的问题,结合你已经输出的控件标识符,咱们一步步操作:

首先,pywinauto里获取控件文本最常用的是window_text()方法(部分控件也可以用text(),如果前者没结果可以试试后者)。你已经通过print_control_identifiers()拿到了所有控件的定位信息,接下来只需要定位到目标控件,调用方法就能拿到文本。

方法1:通过控件的标题和类名精准定位

从你的控件输出看,那个Edit控件(标题为"Brock AppDMZ VPN")应该是显示连接状态的地方,你可以这样定位并获取文本:

# 定位到目标Edit控件
edit_ctrl = window.child_window(title="Brock AppDMZ VPN", class_name="Edit")
# 获取控件的文本内容
connection_status = edit_ctrl.window_text()
print(connection_status)

如果VPN连接后这个文本会变成"Connected to Brock AppDMZ VPN",直接判断字符串里是否包含"Connected to"就能知道连接状态了。

方法2:用控件别名快速定位

pywinauto会给每个控件生成别名(就是你输出里方括号里的那些名称),比如那个Edit控件的别名是Edit或者Connected to Brock AppDMZ VPN.Edit,你可以直接用别名调用控件:

# 用别名获取Edit控件
edit_ctrl = window.Edit
# 获取文本
connection_status = edit_ctrl.window_text()
# 判断连接状态
if "Connected to" in connection_status:
    print("VPN已成功连接")
else:
    print("VPN未连接或处于其他状态")

额外提示:ComboBox控件的文本获取

如果你的连接状态是显示在ComboBox里,除了window_text(),还可以用get_value()方法获取选中项的文本:

combo_ctrl = window.child_window(title="Brock AppDMZ VPN", class_name="ComboBox")
combo_status = combo_ctrl.get_value()
print(combo_status)

最后把这些代码整合到你的原有代码里,完整示例如下:

import pywinauto
pwa_app = pywinauto.application.Application()
path = r'C:\Users\me\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe'
pwa_app.start(path)
w_handle = pywinauto.findwindows.find_windows(title=u'Cisco AnyConnect Secure Mobility Client', class_name='#32770')[0]
window = pwa_app.window_(handle=w_handle)
window.SetFocus()

# 获取连接状态文本
edit_ctrl = window.child_window(title="Brock AppDMZ VPN", class_name="Edit")
connection_status = edit_ctrl.window_text()

# 判断并输出结果
if "Connected to" in connection_status:
    print(f"✅ VPN已连接:{connection_status}")
else:
    print(f"⚠️ VPN当前状态:{connection_status}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:50:36