Python:如何从另一个程序窗口获取文本标签?

Xir*_*ama 4 python window win32gui textfield

我想使用Python从另一个程序中读取文本标签。我想我必须使用WM_GETTEXT,但我不知道怎么做,也无法在互联网上找到任何东西。我的程序获取活动窗口,但不读取文本标签。所以我希望有人能帮助我。

编辑:我已经添加了缓冲区和SendMessage部分。例如,我可以从编辑器中获取文本,但不能从试图从中获取文本标签的程序中获取文本。

我有以下代码,这些是在stackoverflow(从弹出窗口获取文本)上找到的:

import win32gui
import time

while True:
    window = win32gui.GetForegroundWindow()
    title = win32gui.GetWindowText(window)
    if 'GLS Exportdatei' in title:
        control = win32gui.FindWindowEx(window, 0, 'static', None)
        buffer = win32gui.PyMakeBuffer(20)
        length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 20, buffer)

        result = buffer[:length]
        print result
        time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

Ste*_*yne 5

如果窗口的文本超过20个字符,则您创建的缓冲区太小。尝试将其扩展到超出您可能需要的范围:

buffer = win32gui.PyMakeBuffer(255)
length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 255, buffer)
Run Code Online (Sandbox Code Playgroud)

如果要转到主窗口中的控件,请使用EnumChildWindows,传递父窗口的句柄。您可能需要递归执行此操作。