如何使用 pywinauto 从没有标题或 ID 的静态无名 object 中获取信息?

How do you get the information from a static nameless object with no title or id using pywinauto?

我有一个程序故意阻止任何文本选择。他们甚至在 UI 方面也使它无法寻址。我想从 "Current Height" Static - '' object 中获取文本信息。我可以在界面上看到文本,但您无法单击它,使用 WinSpy 它也没有提供任何信息。有标题的 "Current height" 只是一个标签 ('Static3') 但有信息的 'Static4'.

Dialog - 'STATE MACHINE'    (L378, T149, R1670, B933)
['STATE (Machine: 5799)', 'Dialog', 'STATE MACHINE']
child_window(title="STATE MACHINE", class_name="#32770")
   |
   | GroupBox - ''    (L388, T200, R1662, B276)
   | ['StateGroupBox', 'GroupBox', 'GroupBox0', 'GroupBox1']
   | child_window(class_name="Button")
   |
   | Static - ''    (L386, T265, R1662, B286)
   | ['Static', 'StateStatic', 'Static0', 'Static1', 'StateStatic0', 'StateStatic1']
   | child_window(class_name="Static")
   |
   | Static - ''    (L386, T341, R1662, B362)
   | ['Static2', 'StateStatic2']
   | child_window(class_name="Static")
   | Static - 'Current height:'    (L625, T512, R700, B525)
   | ['Static3', 'Current height:', 'Current height:Static', 'Current height:Static0', 'Current height:Static1']
   | child_window(title="Current height:", class_name="Static")
   |
   | Static - ''    (L625, T528, R1330, B606)
   | ['Static4', 'Current height:Static2']
   | child_window(class_name="Static")

由于程序是专有的,我无法显示 GUI。

因为 print_control_identifiers() 似乎将 object 视为 'Static4',我有办法将其用作标识符吗?我似乎无法使用:

label = win.child_window(title="static4", class_name="Static")

如果我尝试过:

label.print_control_identifiers()

我会得到找不到元素的错误。

根据上面的打印元素,没有标题为 "static4" 的项目,这就是引发错误的原因。看起来所有列出的元素的标题都是 ''.

获取元素的正确方法是:

label = win.Static4

这样做,您就可以打印控件标识符了。有关参考,请参阅 here,其中讨论了 Marginsinches