在Python中调用AutoIt函数

22 投票
2 回答
48225 浏览
提问于 2025-04-16 01:38

我看到有个帖子提到有一个AutoIt3的COM版本,使用这个版本我可以在Python中调用AutoIt的功能。

但是我在AutoIt的网站上找不到这个COM版本。它是不是藏在哪里了?我该怎么才能得到它呢?

2 个回答

10

AutoItX.dllAutoItX3_x64.dll 是默认安装时会包含的文件,它们放在一个叫“AutoItX”的文件夹里。你可以在这个文件夹里找到帮助文件 AutoItX.chm,里面有更多的信息。

40

如何在Python中使用AutoItX COM/DLL

在Python中使用AutoIt有两种方法:

  1. pyautoit模块
  2. Windows扩展的Python(pywin32)

pyautoit模块会使用DLL,而pywin32则可以使用COM。根据我所知,这两者在功能上没有区别。

前提条件

  1. 需要安装Python
  2. 需要安装AutoIt
  3. 需要安装pyautoitpywin32中的任意一个。

并不是所有的AutoIt功能都可以通过COM/DLL接口使用。要查看哪些功能可用,可以查看AutoItX的帮助文件。

Pyautoit

可以通过pip或你喜欢的其他方式安装:

pip install -U pyautoit

如果在安装pyautoit时遇到错误:WindowsError: [Error 193] %1 不是有效的Win32应用程序,请使用32位版本的Python。我在使用64位版本的Python时无法成功安装pyautoit。当然,你的情况可能会有所不同。

导入并使用:

import autoit

autoit.run("notepad.exe")
autoit.win_wait_active("[CLASS:Notepad]", 3)
autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}")
autoit.win_close("[CLASS:Notepad]")
autoit.control_click("[Class:#32770]", "Button2")

autoit的命令都是用小写字母加下划线的形式,而不是AutoItX推荐的驼峰命名法。因此,ControlSend变成了control_send,WinClose变成了win_close,等等。

Pywin32

安装完pywin32后,可以通过以下方式调用AutoItX的功能:

import win32com.client
autoit = win32com.client.Dispatch("AutoItX3.Control")

autoit.Run("NotePad.exe")
autoit.ControlClick(WINDOW, "", "[CLASSNN:TTreeView1]", "left", 1, 53, 41)

如果这个版本有问题,请全部安装为32位版本,然后再试一次。

撰写回答