Win32API реплицирует возможности окна-информации Spy++ в Python
У меня есть сторонняя программа с графическим интерфейсом, которую я обёртываю с помощью класса Python (используя ctypes).
Существуют ли функции Win32 API, которые могут выполнять следующие действия?
1) Получить дескриптор окна для окна в данном месте экрана.
2) Получите дескриптор окна для кнопки или статического окна с заданным заголовком.
3) Отправьте текст в окно редактирования.
4) Извлечь текст из экземпляра RICHEDIT.
У меня есть WinSpy (приложение типа Spy++) и я знаю, что с помощью этого инструмента можно получить дескрипторы окон и подписи, но мне нужно что-то, что работает в Python.
Я предполагаю, что ctypes Python дает мне доступ к любой функции в Win32 API, поэтому я сканировал MSDN (особенно этот раздел windows/messages). Я не могу найти ничего, что работает.
Спасибо,
Майк
2 ответа
WindowFromPoint
FindWindowEx
найти дочернего элемента окна с заданным классом и именем (заголовок). Повторите операцию, чтобы пройти через каждую родительско-дочернюю косвенность.EnumChildWindows
может быть полезнымSendMessageTimeout
+WM_SETTEXT
SendMessageTimeout
+WM_GETTEXT
или жеEM_STREAMOUT
У меня были проблемы с поиском очень простого примера для WM_GETTEXT с pywin32, и я подумал, что это может быть хорошим местом для его добавления, поскольку он отвечает на часть вопроса:
MAX_LENGTH = 1024
handle = # A handle returned from FindWindowEx, for example
buffer = win32gui.PyMakeBuffer(MAX_LENGTH)
length = win32gui.SendMessage(handle, win32con.WM_GETTEXT, MAX_LENGTH, buffer)
result = buffer[:length]