Python 在远程桌面上安装和运行pywinauto

Python 在远程桌面上安装和运行pywinauto,python,remote-desktop,pywinauto,Python,Remote Desktop,Pywinauto,我想自动化一个非常旧的软件(drafix),它只能在远程桌面上的Windows XP中运行 是否可以编写pywinauto脚本,直接与软件控件交互,而不需要在GUI上发送鼠标/键盘单击,然后最小化远程桌面屏幕,甚至锁定PC 我需要打开程序,循环浏览文件名列表,打开每个文件名,并保存为不同的格式 我通过一些基本的GUI自动化实现了这一点——如有必要,单击按钮,发送键盘快捷键,并在列表中输入文件名。但是它不是很可靠,我想最小化远程桌面窗口,使用我的电脑,而不是把它放在前台 从我所读到的内容来看,通过

我想自动化一个非常旧的软件(drafix),它只能在远程桌面上的Windows XP中运行

是否可以编写pywinauto脚本,直接与软件控件交互,而不需要在GUI上发送鼠标/键盘单击,然后最小化远程桌面屏幕,甚至锁定PC

我需要打开程序,循环浏览文件名列表,打开每个文件名,并保存为不同的格式

我通过一些基本的GUI自动化实现了这一点——如有必要,单击按钮,发送键盘快捷键,并在列表中输入文件名。但是它不是很可靠,我想最小化远程桌面窗口,使用我的电脑,而不是把它放在前台


从我所读到的内容来看,通过一些变通方法应该是可行的,我需要在远程桌面上安装一个较旧版本的Python(知道是哪个版本的吗?),以便在那里编写和运行脚本。

您可以做的就是将脚本复制到远程机器并在那里运行。关于最小化或关闭的RDP,中介绍了一些解决方法和技巧,其中总结了一些StackOverflow答案。

还有其他方法可以使用pywinauto控制远程桌面上的gui应用程序。您可以使用rpyc或远程Python调用。这是一个用于rpc(远程过程调用)的python库

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

在rpyc中,远程计算机作为服务器,主机作为客户端

首先,连接到远程计算机并使用pywinauto库后,需要在远程计算机中运行rpyc_classic.py。例如,我使用rpyc在带有pywinauto的远程计算机上启动microsip

远程计算机的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')")

非常感谢。问题是我想使用SWAPY或py_inspect来正确识别控件,并在机器上进行调试,而不必在机器之间来回移动脚本。Drp不向本地机器提供任何GUI元素信息。因此,在您的情况下,所有调试应仅在远程计算机上进行。顺便说一下,您必须在Windows XP上卸载comtypes:
pip install pywinauto
,然后
pip uninstall-y comtypes
。这是必需的,因为WinXP上不存在
UIAutomationCore.dll
,因此
backend=“uia”
不可用。如果您需要
backend=“uia”
,则必须安装WinXP可用的.NET Framework 3.5或更高版本。我已设法使其工作-使用swapy检查控件,并在我自己的计算机上对其进行编程,然后使用pyinstaller准备可执行文件。真正的挑战是让它在XP上工作-但是你关于comtypes的提示有帮助,必须添加
——隐藏导入comtypes,comtypes.gen,comtypes.patcher,comtypes.GUID
,到pyinstaller选项中,并在32位Python 3.4环境中准备所有内容-miniconda在这里提供了帮助。谢谢你,瓦西里!不客气。我计划稍后在图书馆修复它: