我在 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 文档中有一些这样做的示例,但也有很多更高级别的包装器,例如 AutoPy
和 pywinauto
/swapy
等等,这将使事情变得更加容易。有几十种,免费的和商业的,如果您愿意跳出 Python 并使用不同的脚本系统,甚至更多,所以并不是讨论每种脚本优缺点的好地方。
最后,您始终可以忽略应用程序的窗口,而只自动化系统鼠标......但这几乎总是一件愚蠢的事情。
关于python - 如何控制外部可执行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518038/