我在 python 2.7 上有自己的应用程序。我想控制一个外部 .exe 应用程序。我能够启动这样的应用程序,klm.exe
例如:
from win32com.client import *
ExtApp = Dispatch("Wscript.Shell")
ExtApp.Run("E:\XYZ\ABC\klm")
但我想完全控制这个外部 .exe 应用程序,因为它有选项卡、单选按钮、按钮等。
有没有办法这样做?
我在 python 2.7 上有自己的应用程序。我想控制一个外部 .exe 应用程序。我能够启动这样的应用程序,klm.exe
例如:
from win32com.client import *
ExtApp = Dispatch("Wscript.Shell")
ExtApp.Run("E:\XYZ\ABC\klm")
但我想完全控制这个外部 .exe 应用程序,因为它有选项卡、单选按钮、按钮等。
有没有办法这样做?
但我想完全控制这个外部 .exe 应用程序,因为它有选项卡、单选按钮、按钮等。
有没有办法这样做?
是的,有多种方式,具体取决于应用程序。
既然您已经在使用 COM(尽管我不确定您为什么使用它来启动应用程序)……该应用程序是否具有 COM 自动化 ( IDispatch
) 接口?如果是这样,可能会有说明如何从 VB#(或 VBScript 或 C# 或……)使用它的文档,您可以轻松地适应 Python 和win32com
. (有关此类应用程序的示例,请参阅Outlook自动化文档。)
如果没有 COM 自动化接口,可能还有一个较低级别的 COM 接口,它几乎和 via 一样容易使用win32com
,但它通常不会提供对 GUI 控件的任何访问;相反,您将使用与 GUI 相同的较低级别的功能。(有关一个很好的例子,请参阅 Apple 的iTunes COM 接口。)
如果根本没有 COM 支持,最简单的做法是通过 Windows WM_* 事件将其自动化。在 pywin32 文档中有一些这样做的例子,但也有很多更高级别的包装器,比如AutoPy
和pywinauto
/swapy
等等,这将使事情变得更容易。有几十个这样的,免费的和商业的,如果你愿意跳出 Python 并使用不同的脚本系统,甚至更多,SO 不是讨论每个优点和缺点的好地方。
最后,您总是可以忽略应用程序的窗口而只是自动化系统鼠标……但这几乎总是一件愚蠢的事情。