Автоматизация графического интерфейса Windows в свернутом окне - PullRequest
4 голосов
/ 28 октября 2010

Как заявление об отказе от ответственности, я совсем не знаком с разработкой Win32. Мне было интересно, если есть какой-либо способ автоматизации ввода управления в приложение с графическим интерфейсом, если это приложение свернуто. Большинство инструментов автоматизации, которые я видел, специально используют смещения координат из окна (tlx, tly). Мне не нужна среда тестирования, я просто хочу, чтобы мое собственное приложение вызывало какое-то действие в минимизированном (с другим - закрытым исходным кодом) приложении. Чем я об этом говорю, тем меньше это кажется возможным. Любой вклад оценивается как это может быть достигнуто.

Ответы [ 3 ]

4 голосов
/ 29 октября 2010

Хорошо, самый простой способ познакомиться с поведением минимизации по умолчанию - поиграть с чем-то простым, например, Calculator. Просто запустите его и используйте Microsoft Spy++, чтобы увидеть свойства окна, представляющего некоторую кнопку в окне калькулятора.

В моем случае я вижу:

  • в нормальном состоянии: прямоугольник (1096, 222) - (1130, 249), 34x27
  • в свернутом состоянии: прямоугольник (-31911, -31839) - (- 31877, -31812), 34x27

Таким образом, по умолчанию минимизация изменяет положение окна, перемещая его очень далеко. Если вы смогли сохранить HWND, вы все равно можете отправить любое сообщение в окне, которое вам нужно.

Что нужно иметь в виду:

  • приложения могут настраивать свое поведение при минимизации, например вообще уничтожить окно - переключиться на трей.
  • даже если вам удастся отправить необходимые сообщения нужным элементам управления - логика приложения может быть препятствием - например, это может зависеть от результатов IsWindowVisible, оно может предполагать, что координаты прямоугольника окна всегда положительны и т. д.
0 голосов
/ 27 октября 2015

Для таких вещей существует решение Python - pywinauto .

Пример: Python - Окно управления с pywinauto, когда окно свернуто или скрыто

Хотя WinForms частично поддерживаются, простые действия, такие как тихий щелчок (метод Click), могут быть выполнены с использованием относительных координат для нераспознанных элементов управления.

0 голосов
/ 28 октября 2010

Вы можете сделать это с помощью PostMessage или SendMessage , я знаю, что это возможно, поскольку я видел игровых ботов, которые делают подобные вещи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...