Python: How to get the text label from another program window?

advertisements

I want to read text labels from another program, with Python. I think I have to use WM_GETTEXT, but I don't know how and I couldn't find anything on the internet. My program gets the active window, but doesn't read the text labels. So I hope that somebody can help me.

EDIT: I have added the buffer and SendMessage Part. I can get the text from Editor for example, but not from the program I am trying to get the text labels from.

I have the following code, which I found here on stackoverflow(Get text from popup window):

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)


If the text of your window has more than 20 characters, then the buffer you have created is too small. Try expanding it to more than you're likely to need:

buffer = win32gui.PyMakeBuffer(255)
length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 255, buffer)

If you want to get to the controls within the main window, then use EnumChildWindows, passing the handle of the parent window. You may need to do this recursively.