Win32API реплицирует возможности окна-информации Spy ++ в Python - PullRequest
0 голосов
/ 03 августа 2010

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

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

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

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

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

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

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

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

Спасибо,

Майк

Ответы [ 2 ]

3 голосов
/ 03 августа 2010
  1. WindowFromPoint

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

  3. SendMessageTimeout + WM_SETTEXT

  4. SendMessageTimeout + WM_GETTEXT или EM_STREAMOUT

2 голосов
/ 11 апреля 2011

У меня возникли проблемы с поиском очень простого примера для 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]
...