Python: Как получить текстовую метку из другого окна программы?
Я хочу читать текстовые метки из другой программы с помощью Python. Я думаю, что мне нужно использовать WM_GETTEXT, но я не знаю, как и я ничего не мог найти в Интернете. Моя программа получает активное окно, но не читает текстовые метки. Поэтому я надеюсь, что кто-то может мне помочь.
EDIT: я добавил буфер и SendMessage Part. Например, я могу получить текст из редактора, но не из программы, с которой я пытаюсь получить текстовые метки.
У меня есть следующий код, который я нашел здесь в 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)
- Возможно ли получить доступ к API GetLongPathName () Win32 в Python?
- Как я могу имитировать ctrl alt del
- Уведомление с использованием python
- python.exe не является допустимой ошибкой приложения win32 внезапно
- убить main thead из дочернего потока python
Если текст вашего окна имеет более 20 символов, то созданный вами буфер слишком мал. Попытайтесь расширить его до большего, чем вам может понадобиться:
buffer = win32gui.PyMakeBuffer(255) length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 255, buffer)
Если вы хотите перейти к элементам управления в главном окне, используйте EnumChildWindows , передав дескриптор родительского окна. Возможно, вам придется делать это рекурсивно.
win32gui.PyMakeBuffer
устарел. Кроме того, buffer
является встроенной функцией, поэтому не используйте его как имя переменной.
Вместо этого просто выполните следующее:
buf = " " * 255 length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 255, buf) result = buf[:length]
- Пример обработки изображений MCMC в Matlab или Python
- Отображение пользователей LDAP пользователям Django с помощью Django Auth Ldap
- Как вы получаете точный путь к «Мои документы»?
- Выполнение модулей как скриптов
- Изменение среды по умолчанию в anaconda
- os.path.exists не распознает подкаталог под драйверами C: \ Windows \ system32 \
- Psutil повышает AccessDenied для всех процессов, не принадлежащих пользователю, при получении атрибутов процесса
- Итерации по очень большому количеству файлов в папке
- многопроцессорность в консоли IPython на компьютере Windows – если требование __name_
- Функции вызова из re.sub
- Как заставить Windows знать о службе, которую я написал на Python?