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 g
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.
win32gui.PyMakeBuffer
has been deprecated. Also, buffer
is a builtin function, so don't use it as a variable name.
Instead, just do this:
buf = " " * 255
length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 255, buf)
result = buf[:length]