Win32API реплицирует возможности окна-информации Spy++ в Python

У меня есть сторонняя программа с графическим интерфейсом, которую я обёртываю с помощью класса Python (используя ctypes).

Существуют ли функции Win32 API, которые могут выполнять следующие действия?

1) Получить дескриптор окна для окна в данном месте экрана.

2) Получите дескриптор окна для кнопки или статического окна с заданным заголовком.

3) Отправьте текст в окно редактирования.

4) Извлечь текст из экземпляра RICHEDIT.

У меня есть WinSpy (приложение типа Spy++) и я знаю, что с помощью этого инструмента можно получить дескрипторы окон и подписи, но мне нужно что-то, что работает в Python.

Я предполагаю, что ctypes Python дает мне доступ к любой функции в Win32 API, поэтому я сканировал MSDN (особенно этот раздел windows/messages). Я не могу найти ничего, что работает.

Спасибо,

Майк

2 ответа

Решение
  1. WindowFromPoint

  2. FindWindowEx найти дочернего элемента окна с заданным классом и именем (заголовок). Повторите операцию, чтобы пройти через каждую родительско-дочернюю косвенность. EnumChildWindows может быть полезным

  3. SendMessageTimeout + WM_SETTEXT

  4. 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]
Другие вопросы по тегам