简介这是一份面向Windows自动化脚本初学者与运维人员的AutoIt V3.3.6.1绿色汉化特别版围绕模拟键击、鼠标操作、窗口控件交互及注册表读写等场景帮助读者用BASIC风格语法快速完成重复性任务脚本。压缩包共194个文件约6.44MB以au3脚本示例和api定义为主辅以properties、lua配置文件及exe工具兼顾脚本编写、编辑器配置与辅助程序调用目录组织便于按功能查找参考。已有871人学习下载说明该版本在AutoIt学习与Windows自动化实践中具有一定参考价值。读者可从中了解键击与鼠标模拟、窗口移动调整、控件文本读写、剪贴板剪切粘贴、注册表操作等典型用法并借助Aut2Exe将脚本编译为独立运行文件或通过AutoItX把AutoIt特性接入常用脚本语言与程序设计语言。1. 从「一天点两百次鼠标」说起AutoIt 到底是个什么东西很多人第一次听说脚本能替人干活脑子里冒出来的画面是黑底绿字的命令行于是还没开始就先怯了。AutoIt圈里常简称 AU3偏偏不是那种吓人的东西它是运行在 Windows 上的一个自动化脚本工具语法长得像早期的 BASIC写出来接近大白话几行代码就能让电脑自己去点按钮、等窗口、敲键盘、填表格。这里拿到的 V3.3.6.1 绿色汉化特别版解压出来就能用不用装环境、不用配路径对完全没碰过编程的人非常友好。它最适合三类人每天要在同一批软件里重复操作的办公人员、需要反复验证界面的测试人员以及想学一门脚本语言又怕门槛太高的零基础新手。2. 为什么零基础也值得学三件 AutoIt 最擅长的事2.1 它最擅长的三件事等窗口、点按钮、敲键盘AutoIt 的定位非常窄但窄得刚刚好。它不去抢 Python 那种通用编程语言的活也不做数据分析、不做网站它就盯着一件事模拟一个人在 Windows 桌面上的操作。你平时怎么用电脑它就怎么用电脑只不过它不知疲倦、不会点错、不会因为下午三点犯困而漏填一格。具体来说它最擅长三类动作。第一类是「等」。电脑上很多操作不是你想点就能点得等某个窗口弹出来、等某个按钮从灰色变成可点、等一个加载条走完。人盯着屏幕等很浪费AutoIt 的WinWait可以挂在后台等等到条件满足再往下走最多等多少秒也能指定超时就不等了避免卡死。第二类是「点」。点按钮、点菜单、勾选框、切换标签页这些都能通过窗口标题、控件 ID 或者文字来定位而不是靠「屏幕第 837 个像素」这种一换分辨率就废掉的方式。这一点是新手最容易忽略、也最值得一开始就养成习惯的地方。第三类是「敲」。往输入框里打字、按组合键、按回车、按 Tab 跳到下一个格都是Send一句话的事。你可以把它理解成一个看不见的人在替你敲键盘。这三件事组合起来能覆盖的场景其实远超新手想象批量把某个软件里的数据导出、每天定时打开几个程序做一遍检查、把一个格式固定的表格逐行填进老系统、把一堆文本按规则改名。这些事情单个做不费劲重复几百次就是折磨而折磨正是脚本存在的理由。2.2 和常见的其他方案比它站在哪个位置新手常常会问既然有别的自动化办法为什么还要学这个我一般会这样解释。如果你要做的是「录一遍鼠标键盘动作然后原样重放」市面上确实有那种傻瓜式录制工具上手五分钟。但它的毛病也很明显一换分辨率、一改窗口大小、一慢半拍整个流程就崩了而且崩了之后你几乎没法排查因为它是个黑匣子你只知道「没成功」。AutoIt 是写代码虽然要多花半天学语法但每一步你都知道自己在干什么出错能定位到具体哪一行。如果你要学通用编程Python 是更好的长期选择生态大、路子宽。但它的入门曲线是「先装环境、再学语法、再学怎么操作桌面」对只想让电脑替自己点按钮的人来说前半段全是与目标无关的负担。AutoIt 的语法接近 BASICIf ... Then ... EndIf这种写法读起来几乎就是英文当天就能写出能跑的东西。所以我的建议是把 AutoIt 当成「第一门能立刻见效的脚本语言」。它给你的不只是几个能用的脚本还有一种「原来我可以让电脑听话」的信心。这种信心比语法本身值钱很多人就是靠这点信心后来才敢去碰更复杂的工具。2.3 开始之前要准备什么一台 Windows 就够门槛低到有点不像话一台 Windows 电脑加上这份解压即用的绿色汉化版就够了。不需要显卡、不需要联网、不需要注册账号也不需要提前学任何编程概念。如果你连「变量」「循环」是什么都不知道完全不影响你跟着往下走因为前面几个例子用不到这些。唯一需要提前说清楚的是心态头一两个脚本几乎一定会翻车这跟你聪不聪明没关系是自动化的固有特性——你写的指令是给一个「看不见的人」看的它不会自己领会你的意图。所以第一次跑不通别急着怀疑自己多半是窗口标题差一个字、或者目标程序还没反应过来。后面我专门留了一章讲这些坑基本上新手会撞的墙都在里面。3. 第一次上手把绿色版跑起来写出第一个能动的脚本3.1 解压后先认三样东西编辑器、帮助文档、运行按钮绿色版解压之后目录里文件不少新手容易看花眼。你不用全认识先记住三样就够开工了。第一样是编辑器通常是一个带图标的程序双击打开会出现一个像记事本但带颜色的窗口左边一般还有行号。以后所有脚本都在这里写。第二样是帮助文档。这份资源最值钱的部分其实不是脚本引擎而是那份汉化过的帮助文件。AutoIt 的每一个函数在帮助里都有说明、参数表和可直接运行的示例代码你以后遇到「这个函数怎么用」的问题八成能在里面找到答案。新手常犯的错是跑去到处问人其实答案就在自己文件夹里。第三样是运行方式。写完代码不用编译直接在编辑器里按快捷键或者点菜单里的运行就能看到效果。编译成 exe 是后面的事入门阶段完全用不上而且编译反而容易触发杀毒软件误报先别碰。提示第一次打开编辑器后先随便敲一行MsgBox(0, 测试, 能跑)按一下运行确认环境是通的再开始正式学。3.2 第一个例子三行代码弹出一个对话框真正意义上的第一个脚本我们只做一件事让屏幕弹出一个框告诉你脚本跑起来了。代码如下。; 第一个脚本弹出一个对话框验证环境是否可用 MsgBox(0, 我的第一个脚本, AutoIt 跑起来了) ; 三个参数按钮样式、标题、正文这段代码只有一行有效内容但它是你后面所有脚本的地基。运行之后如果看到一个带「确定」按钮的小窗口说明编辑器、解释器、运行链路全是通的可以继续。参数怎么理解第一个参数0控制弹窗长什么样0 表示只有一个「确定」按钮改成4会变成「是/否」两个按钮改成16会多一个红色错误图标这些在帮助文档的 MsgBox 条目下有一张完整的表格需要的时候查一下就行。第二个参数是窗口标题栏上的文字第三个参数是框里显示的内容。标题和正文都支持中文绿色汉化版对中文的处理没问题。注意代码里以分号;开头的部分是注释解释器会直接跳过写给自己看的不影响运行。养成随手写注释的习惯一周后回来改代码你会感谢自己。3.3 第二个例子让脚本自己打开记事本并敲一行字弹窗只是打招呼接下来做点真活让脚本打开记事本等它出现然后在里面敲一行字。这段代码把 AutoIt 最核心的三个动作——启动、等待、输入——串在了一起。; 第二个脚本打开记事本等窗口出现然后输入一行文字 Run(notepad.exe) ; 启动记事本程序 WinWait(无标题 - 记事本, , 10) ; 最多等 10 秒直到窗口出现 WinActivate(无标题 - 记事本) ; 把记事本窗口切到最前面 Send(这行字是 AutoIt 自动敲进去的) ; 模拟键盘输入一行一行看。Run负责启动一个程序参数可以是系统自带程序的名字比如notepad.exe也可以是一个完整的文件路径。它启动完立刻返回不会等你所以下一行必须自己等。WinWait是等待窗口出现第一个参数是窗口标题第二个参数是窗口上的附加文字这里留空表示不关心第三个参数是最多等多少秒。10 秒是个保险值程序启动慢一点也来得及真等不到就往下走不会把脚本卡死在那儿。WinActivate把窗口提到最前面。这一步很多人觉得多余实际上非常关键——Send是把按键发给「当前活动窗口」的如果你的记事本还藏在别的窗口后面那行字就敲到别人家去了。Send就是敲键盘。它支持普通字符也支持特殊按键比如{ENTER}表示回车、{TAB}表示 Tab、{ESC}表示 Esc组合键写成^s表示 CtrlS、!f表示 AltF。3.4 想改代码先记住这几个能立刻见效的参数跑通之后别急着往下学新函数先动手改一改改坏了再改回来这个过程中你会对参数产生手感。第一处可以改的是WinWait的等待秒数把 10 改成 2你会发现有时候脚本抢在记事本出现之前就往下走了输入失败。这就是为什么不建议把等待时间设得太短宁可多等两秒也别赌它够快。第二处可以改的是Send的内容。试着在里面加上{ENTER}让脚本敲完一行再回车或者加两次让它多空一行。特殊按键必须用花括号包起来写成Send(第一行{ENTER}第二行)直接写「回车」两个字是不行的。第三处可以改的是Run的目标把notepad.exe换成calc.exe脚本就会去开计算器。这时候注意窗口标题也得跟着改计算器的标题和记事本完全不同不改的话WinWait会一直等到超时然后后面的输入全部落空——这正好是新手最典型的翻车现场我们在下一章详细拆。4. 新手最容易踩的 5 个坑脚本没反应、窗口抓不到怎么办4.1 双击脚本文件没反应反而用记事本打开了现象双击.au3文件屏幕上弹出一个记事本里面是代码原文脚本并没有执行。原因.au3这个后缀在你的系统里没有被关联到 AutoIt 的解释器系统默认把它当成文本文件处理了。绿色版因为不写注册表这种情况尤其常见。解决不要双击文件改成从编辑器里打开再运行这是最稳的做法。如果确实想要双击运行可以在文件上右键选择「打开方式」手动指向绿色版目录里的解释器程序并勾选「始终使用此应用打开」。另外还有一种情况是文件关联正常但脚本一闪就没了那多半是脚本执行完自动退出了属于正常现象不是失败。4.2 在自己电脑上跑得好换台机器全乱套现象在自己电脑上跑得挺顺复制到同事电脑上鼠标点的地方完全不对点到了别的按钮上。原因用了绝对坐标去点击。很多新手图省事直接用鼠标位置来定位代码里写死了「点屏幕 800, 600 这个位置」。一旦换了分辨率、换了缩放比例、或者目标窗口位置不一样这个坐标就废了。解决改用窗口和控件来定位而不是坐标。优先用ControlClick按控件 ID 或控件文字点击实在抓不到控件也至少用WinActivate先把窗口摆到前面再用相对窗口的坐标。另外提醒一句Windows 的显示缩放125%、150%对坐标影响非常大这是自动化里出了名的玄学问题能避开坐标就避开。4.3 Send 打字丢字、顺序乱、变成拼音现象本来要输入一段英文结果出来一堆拼音或者输入一半少了几个字顺序还乱了。原因三个来源。一是输入法还停在中文状态模拟按键被输入法吃掉了二是目标窗口没真正拿到焦点按键发给了别的程序三是目标程序响应慢按键发得太快它来不及处理。解决在Send之前先WinActivate把窗口提到最前加一个Sleep(300)给它一点反应时间。输入法的问题比较麻烦最省事的办法是让脚本只输入英文和数字中文内容改用剪贴板方式粘贴或者干脆在脚本开头用Send({SHIFT})之类的方式手动切一次输入状态。如果内容较长把Send拆成几次、中间加短暂停顿稳定性会明显提升。4.4 编译出来的 exe 被杀毒软件拦下来现象脚本在编辑器里跑得好好的一编译成 exe 就报毒文件直接被删掉。原因这是自动化脚本工具的通病不是你的代码有问题。因为这类工具能把「模拟键鼠」打包成可执行文件容易被当成可疑行为杀毒软件往往按特征直接拦不做区分。解决入门阶段根本不需要编译直接在编辑器里运行.au3源文件就行功能一模一样。确实需要分发给别人时把文件加到信任列表或者换一种分发方式。我见过不少人为了绕开这个折腾半天其实退一步用源文件运行问题就没了。4.5 循环停不下来鼠标被脚本抢走现象脚本进入死循环鼠标自己乱点你动都动不了只能强行关机。原因写了一个没有退出条件的循环比如「一直找某个窗口找不到就再找」。当目标窗口因为某种原因始终没出现循环就永远转下去。解决给自己留一个后悔药。脚本开头就设一个热键按下去立刻退出写法是HotKeySet({ESC}, Quit)然后定义一个叫Quit的函数里面调用Exit。这样无论脚本卡在哪一步按一下 Esc 就能停下来。另外凡是循环都加一个次数上限比如「最多试 20 次还不行就退出并提示」这条血泪经验能省掉很多麻烦。5. 入门先学这几个函数一份能覆盖八成场景的清单5.1 窗口四件套等、激活、判断、关闭AutoIt 的世界是以「窗口」为单位组织的所以窗口相关的函数是地基先把这四个用熟能解决大半问题。函数作用常用参数WinWait等窗口出现最多等指定秒数窗口标题、附加文字、超时秒数WinActivate把窗口切到最前面窗口标题、附加文字WinExists判断窗口在不在返回真或假窗口标题、附加文字WinClose关闭窗口窗口标题、附加文字WinExists特别值得单独说因为它让脚本有了「判断」的能力。比如你可以先判断某个提示框在不在在就点掉、不在就继续这比闷头往下执行稳得多。新手写脚本爱用一条直线从头执行到尾一出意外就全乱老手写脚本到处是判断看着啰嗦但抗造。窗口标题的匹配支持部分匹配默认是「标题以指定文字开头」就算命中也可以在参数里改成包含匹配。这一点非常实用因为很多程序的标题会带上文件名或者当前状态比如「无标题 - 记事本」和「日记.txt - 记事本」用部分匹配就能一个条件覆盖两种情况。5.2 键鼠三件套Send、MouseClick、Sleep这三个是执行层的主力。Send前面已经用过负责键盘输入。MouseClick负责鼠标参数是按钮、横坐标、纵坐标、点击次数能用控件就不用它实在没办法再用。Sleep是让脚本暂停指定的毫秒数看着最不起眼实际上是稳定性的关键。关于Sleep的用法我一般建议新手在三个地方主动加一是Run启动程序之后二是窗口切换之后三是每次点击或输入之后。加的时长不用精确300 到 500 毫秒就够。有人觉得这样会拖慢速度其实脚本跑得再快目标程序跟不上也是白搭稳定比快重要得多。还有一组常被忽略的ControlSetText和ControlGetText一个往输入框里直接塞文字一个从控件里读出文字。它们比Send可靠得多因为不经过键盘模拟。只要目标程序的控件能被识别出来优先用这两个这是新手进阶到能用的分水岭。5.3 让脚本会思考If 判断和 For 循环有了判断和循环脚本才真正从「录制回放」变成「程序」。语法接近 BASIC读起来不费劲。; 判断窗口是否存在存在就关掉不存在就提示 If WinExists(提示, ) Then WinClose(提示, ) ; 关闭这个弹窗 Else MsgBox(0, 检查结果, 没有发现弹窗) ; 弹一个提示给自己看 EndIf ; 循环 5 次每次输入一行并回车 For $i 1 To 5 Send(第 $i 行内容) ; 用来把文字和数字拼起来 Send({ENTER}) Sleep(300) ; 每次之间停一下别太急 Next第一段是If ... Then ... Else ... EndIf读起来就是「如果窗口在就关掉否则提示一下」。条件写在Then前面结束必须用EndIf这个结尾不能省。第二段是For循环$i从 1 数到 5每数一次执行一遍循环体。$i是变量前面加美元符号是 AutoIt 的写法不用纠结为什么记住就行。中间那个是拼接符把字符串和变量接在一起。这两段放在一起其实已经能写出相当实用的脚本了遍历一个列表、逐个检查窗口、按条件处理。真正卡住新手的从来不是语法而是「不知道拿它干什么」所以下一步最好从自己每天重复的那件事开始。5.4 一个能直接改成自用的小例子把前面学的串起来写一个每天都会用到的脚本打开记事本自动写上当天的日期和一句固定内容。; 自动记事打开记事本写入当天日期和一行备注 HotKeySet({ESC}, Quit) ; 按 Esc 随时退出防止卡死 Local $sDate YEAR - MON - MDAY ; 拼出年月日 Run(notepad.exe) WinWait(无标题 - 记事本, , 10) WinActivate(无标题 - 记事本) Send(今天日期 $sDate) Send({ENTER}{ENTER}) ; 连按两次回车空一行 Send(待办检查昨天导出的表格) Sleep(500) Func Quit() Exit ; 热键触发时执行的退出动作 EndFuncYEAR、MON、MDAY是 AutoIt 内置的宏分别代表当前年、月、日直接拿来用不需要额外声明。这是它很讨喜的一点常用的系统信息都给你准备好了查一下帮助文档的宏列表就能找到。HotKeySet给自己留了一条退路按 Esc 立刻退出。Func ... EndFunc是定义函数Quit这个名字要和前面HotKeySet里写的一致大小写不敏感但建议保持一致方便阅读。这个脚本要改成自用非常简单把最后那句待办换成你每天都要写的内容把notepad.exe换成你常用的编辑器改窗口标题匹配。改完之后你会发现它已经不太像我写的例子而像你自己的工具了——这是个好信号。6. 下一步学什么从「能跑」到「敢用」的三步路跑通两三个脚本之后很多人会卡在一个尴尬的位置简单会写复杂不会不知道往哪走。我的建议是按下面三步来别跳。第一步把「定位」这件事吃透。整整一周只练怎么准确找到窗口和控件包括用 AutoIt 自带的窗口信息工具去看控件的 ID、类名、文字。这一步做扎实后面写什么都是事半功倍做不扎实写什么都在碰运气。第二步学会读别人的脚本。绿色版自带的帮助文档里每个函数下面都有示例代码那些示例就是最好的教材。一句一句读猜它干什么然后复制到编辑器里跑一遍验证。这个过程比看教程有用因为你在建立「代码到效果」的直觉。第三步处理异常。新手脚本是一条直线老手脚本到处是判断和兜底。练习写「如果窗口没出现该怎么办」「如果文件不存在该怎么提示」把每个可能失败的地方都补上分支。这一步做完你的脚本才敢交给别人用。阶段大概投入目标判断标准定位一周左右能准确找到任意窗口和控件换台电脑也能跑通读示例两周左右看懂帮助文档里的示例能改示例为自己的用途异常处理长期脚本失败时能自己说明原因出错有提示不静默失败最后说个我自己的教训。刚开始写脚本那阵子我最爱干的事是「先跑起来再说」不做任何等待保护结果同一份脚本今天能跑、明天不能跑我还以为是电脑的问题。后来被折腾得没脾气了才老老实实在每个动作之间加上等待、在每个可能失败的地方加上判断。从那以后我每次写新脚本第一件事就是先加HotKeySet的退出热键第二件事是把所有等待时间往宽了设宁可慢十秒也不让自己事后对着屏幕猜它到底卡在哪。学到这里你已经不需要任何人带着走了打开编辑器挑一件自己每天重复的事写第一个真正属于你自己的脚本就行。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?