2

我有一个 GUI 应用程序,它可以在桌面上创建许多类似的窗口。所有窗口都有相同的标题。我必须枚举所有具有相同标题的对话框,并对每个这样的对话框进行一些测试。

如果我打电话:

dialog = app['Window Name']

pywinauto 返回一个 WindowSpecification 对象,该对象在按名称访问控件时很有用。

当我打电话时:

dialogs = app.windows_(title='Window Name')

pywinauto 向我返回了一个不太有用的 HwndWrapper 实例列表。

如何获取具有指定标题但作为 WindowSpecification 对象的窗口列表?

4

1 回答 1

4

你真的不能。WindowSpecification 是符合所提供标准的所有窗口的单一规范。当您使用 WindowSpecification 实例时,您经常与 WindowSpecification 正在为您查找和访问的 HwndWrapper 实例进行交互。

所以我认为答案是使用 app.windows_() 返回的 HwndWrapper(类似于 WindowSpecification.WrapperObject() 返回的单个 HwndWrapper

注意 - 如果您总是试图通过查看窗口中的特定控件来缩小窗口列表 - 然后使用 app['Window Name']['Unique Control Name'].Parent() 应该返回窗口。

WindowSpecification 和 HwndWrapper 之间的主要区别在于 WindowSpecification 不必存在,而 HwndWrapper 实例反映特定的底层窗口句柄。这允许 WindowSpecification 实现等待窗口或检查它们是否存在的代码。

于 2010-05-15T07:01:08.493 回答