【AI飞】AutoIT入门四(重点):Autolt代替你操控计算机就快要实现了~
目标:通过python调用大模型,获得结果,然后根据返回信息,控制AutoIT操作电脑软件,执行具体工作。让AI更具有执行力。本文,继续学习AutoIT,通过一个简单的示例,来快速了解基本语法。本文,继续学习AutoIT,autoit的重点,是其他通用语言不具备的,桌面对象的操控,即模拟人工的点击鼠标、键盘等系统操作功能,这就是本节的内容,所以本节很重要,很重要,很重要
目标:
终极目标:通过python调用大模型,获得结果,然后根据返回信息,控制AutoIT操作电脑软件,执行具体工作。让AI更具有执行力。
已完成部分:
关于python调用大模型的,可以参考之前的文章:
AI入门7:python三种API方式调用本地Ollama+DeepSeek_deepseek大模型下载到本地后,如何在python代码中调用-CSDN博客
AI入门8:通过vsCode用python访问公网deepseek-r1等模型(Tocken模式)-CSDN博客
AutoIT介绍,和如何安装及配置,以及运行了第一个hello程序,然后学习了基本工具的使用和基本语法,见前面文档:
【AI飞】AutoIT入门一:AutoIT来了,准备让AI动起来-CSDN博客
【AI飞】AutoIT入门二:Autolt v3 Window Info,和SciTE Script Editor的使用及鼠标操作-CSDN博客
【AI飞】AutoIT入门三:Autolt基本语法-CSDN博客
本文,继续学习AutoIT,autoit的重点,是其他通用语言不具备的,桌面对象的操控,即模拟人工的点击鼠标、键盘等系统操作功能,这就是本节的内容,所以本节很重要,很重要,很重要。。。
主要系统对象操作函数
一、鼠标控制
在上面入门二,用的就是鼠标函数为例子,介绍工具的使用,这里不重复了,需要的翻一下:
【AI飞】AutoIT入门二:Autolt v3 Window Info,和SciTE Script Editor的使用及鼠标操作-CSDN博客
其他常用函数见下面内容。
核心函数
-
MouseMove($iX, $iY [, $iSpeed=10])
- 移动鼠标到指定坐标
- 参数:
$iX
,$iY
屏幕坐标;$iSpeed
移动速度(0-100)
MouseMove(500, 300, 50) ; 中速移动到(500,300)
-
MouseClick("button" [, $iX, $iY [, $iClicks=1 [, $iSpeed=10]]])
- 模拟鼠标点击
- 按钮类型:
"left"
(默认)、"right"
、"middle"
MouseClick("right", 800, 600) ; 右键单击(800,600)
-
MouseWheel("direction" [, $iClicks=1])
- 滚轮操作:
"up"
向上,"down"
向下
MouseWheel("down", 3) ; 向下滚动3格
- 滚轮操作:
参考示例
;执行后,用缓冲时间,把鼠标移到到打开的画图板上,默认是画线
Sleep(1000)
; 在画图程序中绘制一条线
MouseMove(500, 400)
MouseDown("left") ; 按下左键
MouseMove(300, 300, 10) ; 拖拽
MouseUp("left") ; 松开左键
二、键盘控制
示例学习:
我们经常用win+r打开cmd,输入ipconfig查看当前系统ip,用autoit就是这样滴:
Sleep(1000)
;模拟win+R
send("#r")
Sleep(1000)
;默认是中文输入法,需要回车来输入字符
Send("cmd{ENTER}")
;避免太快看不起,增加缓冲
Sleep(1000)
;回车执行cmd命令
Send("{ENTER}")
;替换下面命令,太快看不清
;Send("cmd{ENTER}{ENTER}{ENTER}")
;弹出新窗口,时间要久一点,根据自己系统弹出窗口速度调整
Sleep(3000)
Send("ipconfig{ENTER}{ENTER}")
其中,autoit用到了特殊字符,这些字符有特殊左右,如: ^ 代表Ctrl,# 代表Win(徽标键)等,还有{ENTER}代表回车键,这种特殊字符的说明在最后附录里,用时查一下就行了。
主要注意:其中要适当的sleep,就想人操作,要等窗口打开,在输入内容,不然太快没输到窗口里,示例根据自己系统的速度调整。
下面是常用函数语法。
核心函数
-
Send("keys" [, $iFlag=0])
- 发送按键:支持组合键(
!
=Alt,^
=Ctrl,+
=Shift) - 标志位:
0
(默认,恢复初始状态),1
(保持修饰键按下)
Send("^s") ; Ctrl+S 保存 Send("Hello{ENTER}") ; 输入文本并回车
- 发送按键:支持组合键(
-
HotKeySet("key", "function")
- 设置全局热键绑定
HotKeySet("{ESC}", "ExitScript") ; 按ESC触发退出函数
-
ControlSend("title", "text", "controlID", "string")
- 向指定控件发送输入(无需窗口激活)
ControlSend("登录窗口", "", "Edit1", "admin") ; 填写用户名
三、窗口操作
示例学习
打开记事本,获得记事本窗口,然后写入内容,关闭窗口,示例代码:
;打开记事本
Run("notepad.exe")
Sleep(1000)
;定位窗口
;WinWaitActive("无标题 - Notepad")
WinWaitActive("[CLASS:Notepad]")
;WinActive("无标题 - Notepad")
;WinActive("[CLASS:Notepad]")
Sleep(300)
Send("哇哈哈。。。")
Sleep(1000)
;关闭窗口
WinClose("[CLASS:Notepad]")
Sleep(2000)
;按不保存按钮 Alt+n,如果不运行,则根据自己系统中记事本的快捷键修改
Send("!n")
激活窗口,有两种参数,一种是窗口标题,一种是class,同一个程序,在不同系统打开时,标题不一定相同,class相同的几率高一点,无论怎样,要以程序所运行的系统为准。
常用函数的基本语法如下。
核心函数
-
WinActivate("title" [, "text"])
- 激活指定窗口
-
WinWaitActive("title" [, "text" [, $iTimeout=0]])
- 等待窗口激活
WinActivate("记事本") WinWaitActive("无标题 - 记事本", "", 5) ; 最多等待5秒
-
WinMove("title", "text", $iX, $iY [, $iWidth, $iHeight])
- 移动/调整窗口
WinMove("计算器", "", 0, 0, 400, 300) ; 调整到400x300
-
WinClose("title" [, "text"])
- 关闭窗口
四、进程管理
学习示例
检测系统notepad程序是否运行,运行则关闭,未允许,则启动,请原谅这个例子的逻辑性,只为了测试函数功能:
;检测进程是否存在
if ProcessExists("notepad.exe") Then
MsgBox(0,"","notepad is running")
Sleep(4000)
;存在关闭进程
ProcessClose("notepad.exe")
Else
MsgBox(0,"","no notepad")
;不存在,打开进程,并以最大化方式运行,返回PID
$ntid=Run("notepad.exe", "", @SW_MAXIMIZE)
Sleep(2000)
;把pid写到记事本中,方便查看
Send($ntid)
EndIf
进程名称和pid,对应于任务管理器的“详细信息”
核心函数
1、Run("程序路径" [, "工作目录" [, @SW_状态]])
-
启动进程,返回PID
$pid = Run("notepad.exe", "", @SW_MAXIMIZE) ; 最大化启动
状态参数:
AutoIt参数 | 对应Win32 API常量 | 数值 | 说明 |
---|---|---|---|
@SW_HIDE | SW_HIDE | 0 | 完全隐藏窗口 |
@SW_MAXIMIZE | SW_MAXIMIZE | 3 | 最大化窗口 |
@SW_MINIMIZE | SW_MINIMIZE | 6 | 最小化窗口 |
@SW_RESTORE | SW_RESTORE | 9 | 还原窗口状态 |
@SW_SHOWNA | SW_SHOWNA | 8 | 非激活显示 |
2、ProcessWait("进程名" [, $iTimeout=0])
ProcessWait("chrome.exe", 10) ; 等待Chrome启动,最多10秒
- 等待进程启动
3、ProcessClose("进程名或PID")
ProcessClose("notepad.exe") ; 结束所有记事本进程
五、文件/目录/驱动器管理
文件操作
-
FileCopy("源文件", "目标路径" [, $iFlag=0])
- 标志:
1
=覆盖,8
=创建目标目录
FileCopy("C:\logs\*.txt", "D:\backup\", 1+8) ; 覆盖复制并创建目录
- 标志:
-
FileDelete("路径")
FileDelete(@TempDir & "\cache_*.tmp") ; 删除临时缓存
目录操作
-
DirCreate("路径")
DirCreate("D:\Projects\AutoIT\") ; 创建多级目录
-
FileFindFirstFile/FileFindNextFile
$hSearch = FileFindFirstFile("C:\*.docx") ; 遍历Word文档 While 1 $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop MsgBox(0, "找到文件", $sFile) WEnd
驱动器管理
-
DriveGetDrive("类型")
- 类型:
"ALL"
,"FIXED"
,"CDROM"
$aDrives = DriveGetDrive("CDROM") ; 获取所有光驱 For $i = 1 To $aDrives[0] MsgBox(0, "光驱", $aDrives[$i]) Next
- 类型:
注意事项
- 权限问题:文件/进程操作需管理员权限时,使用
#requireadmin
指令 - 路径分隔符:建议使用
@ScriptDir
和@DesktopDir
等宏代替硬编码路径 - 窗口匹配:优先使用窗口句柄
WinGetHandle()
提高准确性 - 错误处理:关键操作后检查
@error
宏,例如:If Not FileDelete("重要文件.txt") Then MsgBox(16, "错误", "删除失败:" & @error) EndIf
结尾:
文中,主要介绍各类对象的使用形式,只涉及了一小部分常用函数,更多的内容还得用时查帮助手册。
今天超额完成了学习进度,万里长城又进了一步,哇哈哈😄😄😄
附录:AutoIt 中特殊字符
以下基于官方文档及技术资料,系统总结 AutoIt 脚本语言中特殊字符的核心含义及用法,涵盖键盘控制、字符串处理、路径操作等多个场景。
(一)、键盘控制相关特殊字符
1. 修饰键符号
用于 Send()
函数中的组合键操作,需配合标志位参数使用:
字符 | 含义 | 示例 | 功能说明 |
---|---|---|---|
! |
Alt | Send("!f") |
触发 Alt+F 菜单 |
+ |
Shift | Send("+{TAB}") |
Shift+Tab 切换焦点 |
^ |
Ctrl | Send("^c") |
复制操作 (Ctrl+C) |
# |
Windows键 | Send("#r") |
打开运行窗口 (Win+R) |
注意事项:
- 默认情况下 (
标志=0
),特殊字符会被识别为修饰键 (autoit 在线手册中文版_脚本之家) - 若需输入原文字符(如
!
本身),需设置标志=1
:Send("!", 1)
2. 特殊按键转义符
使用 {}
包裹按键名称,支持组合操作:
Send("{ENTER}") ; 回车键
Send("{F5 3}") ; 按3次 F5
Send("{UP down}") ; 按住↑方向键
Sleep(1000)
Send("{UP up}") ; 释放↑方向键
常用转义列表:
转义符 | 功能描述 |
---|---|
{ESC} |
退出键 |
{BACKSPACE} |
退格键 |
{CAPSLOCK} |
切换大写锁定 |
{LWIN} / {RWIN} |
左/右 Windows 键 |
{NUMPAD0} ~{NUMPAD9} |
小键盘数字键 |
3. ASCII/UNICODE 字符输入
通过 {ASC nnnn}
格式发送任意字符:
Send("{ASC 65}") ; 发送 ASCII 65 (A)
Send("{ASC 2709}") ; 发送 Unicode 汉字(如示例)
规则:
- 必须使用 3-4 位数字,不足补零(如
{ASC 065}
) - 支持 Unicode 扩展字符集
(二)、字符串处理相关特殊字符
1. 转义字符
字符 | 含义 | 示例 |
---|---|---|
" |
双引号包裹字符串 | $s = "文本" |
' |
单引号包裹字符串 | $s = '文本' |
@CR |
回车符 (ASCII 13) | Send("A@CR") → "A\r" |
@LF |
换行符 (ASCII 10) | Send("A@LF") → "A\n" |
@TAB |
制表符 (ASCII 9) | Send("A@TAB") → "A\t" |
转义示例:
$sPath = "C:\\Windows\\system32" ; 路径需双反斜杠转义
MsgBox(0, "", "他说:""你好!""") ; 双引号嵌套需转义
2. 字符串函数控制符
在 String*
系列函数中使用:
StringRegExp($sText, "[0-9]{3}") ; 正则表达式匹配三位数字
StringReplace($sText, "\n", @CR) ; 替换换行符为系统回车
正则特殊字符:
符号 | 含义 | 示例 |
---|---|---|
\d |
匹配数字 | \d+ → 任意整数 |
\w |
匹配字母/数字/下划线 | \w{5} → 5位单词 |
[^] |
排除字符集 | [^A-Z] → 非大写字母 |
(三)、文件路径与系统符号
1. 路径处理符号
符号 | 含义 | 示例 |
---|---|---|
@ScriptDir |
脚本所在目录 | FileOpen(@ScriptDir & "\log.txt") |
@HomeDrive |
系统主驱动器盘符 | MsgBox(0, "", @HomeDrive) |
\ |
路径分隔符 | DirCreate("D:\Data\2024") |
路径转义技巧:
; 使用双反斜杠或单斜杠
$sPath1 = "C:/Program Files/App/config.ini"
$sPath2 = "C:\\Program Files\\App\\config.ini"
2. 系统宏符号
以 @
开头的预定义宏:
If @OSVersion = "WIN_10" Then ; 判断操作系统版本
MsgBox(0, "", "运行在 Win10")
EndIf
常用系统宏:
宏名称 | 返回值示例 |
---|---|
@ComputerName |
"PC-01" |
@UserName |
"Administrator" |
@OSArch |
"X64" |
中文帮助
官方帮助(英文):AutoIt

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)