1

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

from win32com.client import *

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

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

有没有办法这样做?

4

1 回答 1

1

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

有没有办法这样做?

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

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

如果没有 COM 自动化接口,可能还有一个较低级别的 COM 接口,它几乎和 via 一样容易使用win32com,但它通常不会提供对 GUI 控件的任何访问;相反,您将使用与 GUI 相同的较低级别的功能。(有关一个很好的例子,请参阅 Apple 的iTunes COM 接口。)

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

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

于 2013-08-29T18:24:11.220 回答