Как автоматизировать несколько программ одновременно (отправлять ввод с клавиатуры и мыши)

Как автоматизировать несколько программ одновременно (отправлять ввод с клавиатуры и мыши)

Я хотел бы использовать скрипт для отправки событий, таких как ввод с клавиатуры или мыши, для автоматизации другой программы. Представьте себе бота, который играет в игру, например (хотя я не играю в видеоигры).

Я хочу сделать это с несколькими парами (скрипт, программа) одновременно.

Я знаю, что могу автоматизировать мышь и клавиатуру в Windows с помощью Autoit или Win32 API, но в Windows есть концепция «активных окон»: в каждый момент времени может быть активно только одно окно, и именно эти окна могут получать ввод.

Из-за этой концепции «активного окна» я не могу автоматизироватьнесколькопрограммы одновременно.

Какая у меня есть альтернатива?

РЕДАКТИРОВАТЬ:Мне нужно автоматизировать программы, не дожидаясь другой программы. Переключение активного окна с помощью сочетаний клавиш не поможет. Также я хочу использовать компьютер, пока программы автоматизированы в фоновом режиме.

решение1

Обновлено с целью включения альтернатив привязке текущего ввода пользователя.

Автоит Используя autoit вы можете сделать что-то похожее на

Opt("WinTitleMatchMode", 2)

While WinActive('Search')
    Send("{ALT DOWN}")
    Send("{TAB}")
    Send("{ALT UP}")
WEnd

Где «search» содержит часть заголовка окна.

Если вы знаете порядок фокуса окна, вы можете просто отправить клавишу tab достаточное количество раз, чтобы добраться до указанного окна.

Порядок сочетания клавиш alt+tab всегда обратен порядку фокуса.

Win32 На это уже ответили в других темах, и это углубляется в программирование. Если вы хотите пойти по этому пути, вам придется отправлять сообщения Windows в нужный вам процесс. Я бы посмотрел на:Как отправить нажатия клавиш в окно, не активируя его с помощью Windows API?

Это не кажется надежным и будет иметь много подводных камней. Необходимо сделать предположения о том, как обрабатывается ввод с клавиатуры в данных приложениях.

Не зная, чего вы пытаетесь добиться, я могу предложить использовать виртуальную машину и разрешить этому экземпляру запускать макросы/скрипты. Это должно позволить пользователю продолжать использовать компьютер, не загромождая рабочий стол, который он использует.

Связанный контент