2016-04-22 2 views
0

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

Простейший код

import time 
import SendKeys 

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

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

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

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

+1

Приложение, работающее с пользователем X, способным отправлять нажатия клавиш приложениям пользователя Y, будет серьезной проблемой безопасности. Это не должно быть возможным по дизайну. –

+0

Как насчет запуска сценария автоматизации под пользователем Y? Конечно, для этого вам нужен простой сценарий запуска. –

+0

@ João Pinto Нет, пользователь X запускает программу и должен работать в среде X. Даже когда пользователь изменен, все его программы должны продолжать работать. Например, если я запускаю сценарий, который вычисляет что-то и меняет пользователя на другой, после переустановки я вижу, что скрипт работал все это время. – SKulibin

ответ

1

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

Если вы хотите использовать методы SendKeys/TypeKeys/ClickInput (работающий как настоящий пользователь), вам необходимо запустить сценарий автоматизации на удаленном сеансе, а не локально. Это подробно объясняется в моем другом ответе: SetCursorPos fail with "the parameter is incorrect" after rdp session terminated.

Если вы хотите запустить автоматизацию на той же машине тихо (в минимизированном состоянии), есть пример для работы со скрытыми окнами: Python - Control window with pywinauto while the window is minimized or hidden. Просто скройте окно и используйте бесшумные методы (почти все, кроме ClickInput и TypeKeys).

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

Смежные вопросы