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.