在pywinauto中如何找到对应进程的正确对话框名称?
解决方法
方法1:通过窗口标题直接匹配
控制面板在中文Windows 10里的窗口标题是**"控制面板",英文系统则是"Control Panel"**,直接修改代码用标题定位窗口:
from pywinauto.application import Application app = Application().start("control.exe") # 中文系统用这句,英文系统把title值改成"Control Panel" window = app.window(title="控制面板").wait('visible', timeout=10) window.print_control_identifiers()
方法2:枚举应用窗口获取名称
要是不确定窗口标题,先打印应用的所有窗口信息,找到目标窗口的标题:
from pywinauto.application import Application import time app = Application().start("control.exe") time.sleep(1) # 给窗口留加载时间 # 打印所有属于该应用的窗口 print("应用窗口列表:", app.windows())
运行后会输出类似 <WindowSpecification - '控制面板', 123456> 的内容,单引号里的就是窗口标题,把它替换到app.window(title="xxx")里就行。
方法3:用系统工具查看控件属性(可选)
用Windows自带的Inspect.exe(可通过Windows SDK获取或搜索下载),打开后点击控制面板窗口,就能看到窗口的标题、类名等属性。比如查到类名是CabinetWClass,也能这样定位:
window = app.window(class_name="CabinetWClass")
内容的提问来源于stack exchange,提问作者Piklpil
相关产品推荐
相关产品推荐

