从另一个应用程序的表单/字段中获取文本

时间:2019-06-28 02:20:29

标签: python pywin32

我正在尝试从另一个应用程序导入/提取表单的值,以便使用python和pywin32在我的代码中使用。

我使用Spy ++找出了需要定位的元素的句柄,但无法弄清楚如何从元素中获取文本。

目标应用程序的结构方式:

top app level
    (no name) class: MDIClient        (this is the centerWidget)
    (no name) class: ThunderRT6FormDC (occupies same space as centerwidget)
    (Ticket) class: ThunderRT6Frame  (Frame that holds all fields to extract from)
        (no name) class: NumEdit/DateEdit/TextEdit... (fields to import)
    (Information) class ThunderRT6Frame  (2nd frame with fields)
        (no name) class: NumEdit/DateEdit/TextEdit... (fields to import)
    (Process) class ThunderRT6Frame  (3rd frame with fields)
        (no name) class: NumEdit/DateEdit/TextEdit... (fields to import)
f = win32gui.FindWindow('ThunderRT6MDIForm', 'ApplicationName')
ex = win32gui.FindWindowEx(f, 0, 'MDIClient', None)
exx = win32gui.FindWindowEx(ex, 0, 'ThunderRT6FormDC', None)
exxx = win32gui.FindWindowEx(exx, 0, 'ThunderRT6Frame', None)
exxxx = win32gui.FindWindowEx(exxx, 0, 'NumEdit', None)

exxxx是我要从中提取标题/文本的句柄/元素。 我确定FindWindowEx在搜索Windows时不是正确的功能,但是我必须使用什么功能?

1 个答案:

答案 0 :(得分:0)

如果树中的两个“连续”窗口(例如 ex exx <)之间的关系,则

[MS.Docs]: FindWindowExW function(由win32gui.FindWindowEx包裹)应该可以解决问题。 / em>)是一个父级-子级

另一种方法是使用[MS.Docs]: EnumChildWindows functionwin32gui.EnumChildWindows)-还要检查 EnumWindows
有关更多详细信息,请查看:

从那里,您可以使用 GetWindowTextW win32gui.GetWindowTextW)获取所需窗口的标题。