python - 如何控制外部可执行应用程序?

标签 python python-2.7

我在 python 2.7 上有自己的应用程序。我想控制外部 .exe 应用程序。 我能够启动这样一个应用程序,klm.exe:

from win32com.client import *

ExtApp = Dispatch("Wscript.Shell")
ExtApp.Run("E:\XYZ\ABC\klm")

但我想完全控制这个外部 .exe 应用程序,因为它有选项卡、单选按钮、按钮等。

有办法吗?

最佳答案

But I want to have full control of this outside .exe application as it has tabs, radio buttons, push buttons, etc.

Is there a way to do so?

是的,有多种方式,具体取决于应用程序。

既然您已经在使用 COM(尽管我不确定您为什么只是使用它来启动应用程序).​​..该应用程序是否具有 COM 自动化 (IDispatch) 接口(interface)?如果是这样,可能会有文档展示如何从 VB#(或 VBScript 或 C# 或...)使用它,您可以轻松地适应 Python 和 win32com。 (有关此类应用程序的示例,请参阅 Outlook 自动化文档。)

如果没有 COM 自动化接口(interface),可能仍然存在较低级别的 COM 接口(interface),通过 win32com 几乎可以轻松使用,但它通常不会提供对 GUI 的任何访问控制;相反,您将使用 GUI 使用的相同较低级别的功能。 (有关一个很好的示例,请参阅 Apple 的 iTunes COM Interface。)

如果根本不支持 COM,最简单的方法就是通过 Windows WM_* 事件将其自动化。 pywin32 文档中有一些这样做的示例,但也有很多更高级别的包装器,例如 AutoPypywinauto/swapy 等等,这将使事情变得更加容易。有几十种,免费的和商业的,如果您愿意跳出 Python 并使用不同的脚本系统,甚至更多,所以并不是讨论每种脚本优缺点的好地方。

最后,您始终可以忽略应用程序的窗口,而只自动化系统鼠标......但这几乎总是一件愚蠢的事情。

关于python - 如何控制外部可执行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518038/

相关文章:

php - MediaWiki python 端口?

linux - 如何将 python 脚本转换为 python 中的可执行文件?

python - pip 失败,出现 AttributeError : 'module' object has no attribute 'wraps'

numpy - 突出单条轮廓线

python - atexit:如何手动触发它?

python - 使用 netCDF4 和 Python 以编程方式列出 NetCDF 文件的所有变量

python - 创建 Tkinter 数学测验

python - pybind11 包装的对象的内存开销?

python - 使用 str 中的常量值在 pandas df 中添加日期列

python - Macports 无法识别 pip 安装的包