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

时间:2013-08-29 18:05:11

标签: 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应用程序,因为它有标签,单选按钮,按钮等。

有办法吗?

1 个答案:

答案 0 :(得分:1)

  

但我希望完全控制这个外部.exe应用程序,因为它有标签,单选按钮,按钮等。

     

有办法吗?

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

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

如果没有COM自动化接口,可能仍然存在较低级别的COM接口,这几乎同样易于通过win32com使用,但它通常不会提供对GUI控件的任何访问;相反,您将使用与GUI相同的低级功能。 (例如,请参阅Apple的iTunes COM Interface。)

如果根本没有COM支持,最简单的方法是通过Windows WM_ *事件自动化它。在pywin32文档中有一些这样做的例子,但也有很多更高级的包装器,比如AutoPypywinauto / swapy,等等会产生一些东西一件容易的事。有许多这些,免费和商业,甚至更多,如果你愿意走出Python并使用不同的脚本系统,并且SO不是一个讨论每个的利弊的好地方。

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