Python - управляющее приложение, запущенное другим пользователем в Windows

Я делаю приложение, которое управляет браузером с помощью SendKeys. Но поскольку SendKeys получают полный контроль над клавиатурой, я хочу запустить это приложение под другим пользователем. Таким образом, я буду работать, приложение будет делать то, что должно, и мы не будем создавать проблемы друг для друга).

Самый простой код

import time
import SendKeys

time.sleep(10)
SendKeys.SendKeys('hello')

Я запускаю его, сосредотачиваюсь на поле, куда я хочу вставить свой текст "привет", и жду. Если я не изменю пользователя, все будет сделано, как ожидалось. Но когда я запускаю его, меняю пользователя и возвращаюсь через 10 секунд, я вижу, что SendKeys ничего не отправил в программу.

Как отправить нажатия клавиш в программу под другим пользователем?

(Я пытался сделать то же самое с pywinauto, но результат был почти таким же - все хорошо, если я не меняю пользователя, и ошибка, если я меняю его. Поэтому я подумал, что решить эту проблему намного проще только с SendKeys).

1 ответ

Решение

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

Если вы хотите использовать SendKeys/TypeKeys/ClickInput методы (работающие как реальный пользователь), вам нужно запускать скрипт автоматизации в удаленном сеансе, а не локально. Это подробно объясняется в моем другом ответе: SetCursorPos завершается с ошибкой "параметр неверен" после завершения сеанса rdp.

Если вы хотите запустить автоматизацию на той же машине без вывода сообщений (в свернутом состоянии), есть пример для работы со скрытыми окнами: Python - окно управления с pywinauto, когда окно свернуто или скрыто. Просто сверните окно и используйте тихие методы (почти все, кроме ClickInput а также TypeKeys).

Не стесняйтесь задавать более подробные вопросы о pywinauto и автоматизации GUI.

Другие вопросы по тегам