Установка и запуск pywinauto на удаленном рабочем столе

Я хочу автоматизировать очень старое программное обеспечение (drafix), которое можно запустить только в Windows XP на удаленном рабочем столе.

Можно ли написать сценарий pywinauto, который бы напрямую взаимодействовал с программными элементами управления, без необходимости отправлять щелчки мышью / клавиатурой в графическом интерфейсе, а затем свернуть экран удаленного рабочего стола или даже заблокировать ПК?

Мне нужно открыть программу, просмотреть список имен файлов, открыть каждое из них и сохранить в другом формате.

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

Из того, что я прочитал, здесь, это должно быть возможно с некоторыми обходными путями, и мне нужно будет установить более старую версию Python (какая идея?) на удаленный рабочий стол, чтобы написать и запустить там сценарий.


person Sargro    schedule 03.04.2019    source источник


Ответы (2)


Что вы можете сделать, так это просто скопировать свой скрипт на удаленный компьютер и запустить его там. Что касается свернутого или закрытого RDP, существует несколько обходных путей и приемов, описанных в Руководстве по удаленному выполнению который суммирует несколько ответов StackOverflow.

person Vasily Ryabov    schedule 03.04.2019
comment
Спасибо. Проблема в том, что я хочу использовать SWAPY или py_inspect для правильной идентификации элементов управления и выполнения отладки на машине без необходимости перемещать скрипт вперед и назад между машинами. - person Sargro; 03.04.2019
comment
RDP не предоставляет никакой информации об элементах графического интерфейса на локальный компьютер. Таким образом, в вашем случае вся отладка должна происходить только на удаленной машине. - person Vasily Ryabov; 03.04.2019
comment
Кстати, в Windows XP вам нужно удалить комтипы: pip install pywinauto, затем pip uninstall -y comtypes. Это необходимо, потому что UIAutomationCore.dll отсутствует в WinXP, поэтому backend="uia" недоступен. Если вам нужен backend="uia", вы должны установить .NET Framework 3.5 или более позднюю версию, доступную для WinXP. - person Vasily Ryabov; 03.04.2019
comment
Мне удалось заставить его работать - использовал swapy для проверки элементов управления и запрограммировал их на моей собственной машине, а затем просто использовал pyinstaller для подготовки исполняемого файла. Настоящая проблема заключалась в том, чтобы заставить его работать на XP, но ваш намек на комтипы помог, пришлось добавить --hidden-import comtypes, comtypes.gen,comtypes.patcher, comtypes.GUID в параметры pyinstaller и подготовить все в 32-битной среде Python 3.4 - здесь помогла miniconda. Спасибо, Василий! - person Sargro; 04.04.2019
comment
Пожалуйста. Я планирую исправить это в библиотеке позже: github.com/pywinauto/pywinauto/issues/ 703 - person Vasily Ryabov; 06.04.2019

Есть другой способ управления приложением GUI на удаленном рабочем столе с помощью pywinauto. Вы можете использовать rpyc или удаленный вызов Python. это библиотека python для rpc (удаленный вызов процедуры)

https://rpyc.readthedocs.io/en/latest/

ваш удаленный компьютер является сервером, а ваш хост - клиентом в rpyc.

сначала вам нужно запустить rpyc_classic.py на удаленном компьютере после подключения к нему и использовать библиотеку pywinauto. например, я использую rpyc для запуска микросипа на удаленном компьютере с pywinauto.

IP удаленного компьютера - 192.168.222.222.

import rpyc
ip = "192.168.222.222"
conn = rpyc.classic.connect(ip)
conn.execute("from pywinauto import Application")
conn.execute(r"Application().start(r'C:\Program Files (x86)\MicroSIP\microsip.exe')")
person mohammad noroz    schedule 26.09.2020