1、AUTOIT3中文教程 GOOGLECODEAutoIt3中文教程 AutoIt v3 预览介绍AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化任务,而这是其它语言所无法做到或尚无可靠方法 实现的(比如VBScript和SendKeys)。AutoIt 最初是为PC(个人电脑)的“批量处理”而设计,用于对数千台PC进行(同样的)配置,不过随着v3版本的到来它也很适合用于家庭自动化和编写用以完成重复性任务的脚本。AutoIt 可以做
2、的事: 运行 Windows 及 DOS 下的可执行文件 模拟键击动作(支持大多数的键盘布局) 模拟鼠标移动和点击动作。 对窗口进行移动、调整大小和其它操作。 直接与窗口的“控件“交互(设置/获取 文字、移动、关闭,等等) 配合剪贴板进行剪切/粘贴文本操作 对注册表进行操作 不同于 AutoIt v2,新的v3版本含有更多的标准语法类似于VBScript和BASIC而且现在支持更复杂的表达式、用户函数、循环以及脚本编写老手们所期待的其它所有内容。正如前一个版本一样,AutoIt 被设计得尽可能小(大约115KB)并且不用依赖外部DLL文件或添加注册表项目即可独立运行。使用 Aut2Exe 这个
3、工具即可把脚本文件编译为可独立运行的文件。此外我们还更新了 AutoIt 的 ActiveX 和 DLL 版本AutoItX,与v2版本不同的 是,这是个组件化的语言(COM 同一DLL文件中的标准DLL函数)。AutoItX 将使得您可以加入一些AutoIt 独有的特性到您最常用的脚本语言或程序设计语言中去!请查看 AutoItX 的帮助文档(开始 所有程序 AutoIt v3 Extras AutoItX AutoItX Help File)以获得更多信息和示例。最重要的是,AutoIt 将继续是免费的不过如果您打算支持我们花在此工程和网站主机上的时间、费用以及所作努力的话,那么您可以到A
4、utoIt 的 主页 上进行捐赠。 新内容v3 具有完全不同于v2.64的语法,因此不能兼容旧的脚本。不过,v2.64仍旧受到支持并且可以下载。AutoIt v3 和 v2.64可以同时装在同一台机器上而不会有任何问题,同时还可以保持旧脚本的完好。v2版本使用的是.aut后缀的扩展名,而v3版本使用的是.au3后缀的扩展名。因此不必为了适应v3版本而重写v2.64版本的脚本。 v3 保持了前一版本中窗口标题、窗口文字、按键和鼠标模拟这些概念,但同时也有了很多新的特性:控件直接获取编辑框、复选框、列表框、选择框、按钮、状态栏上的信息,并且作用于这些控件而不必担心键击动作落空。甚至还可以作用于非活
5、动窗口上的控件!语言升级“更适用的”数值类型、无限长度的字符串、混合语句、if 语句、条件选择语句、while 循环语句、for 循环语句、do 循环语句、函数、数组、优秀的字符串处理(超过25个函数!)其余功能尚未列出。所有这些都使得制作自动化程序的过程不再痛苦。是的,这是个GUI自动化语言,但v3版的语法将更加强大,足以用来编写一般用途的脚本。AutoIt 的旧版本总是被认为是“不太合适的语言”,现在将不再是这样了。模拟键击和鼠标动作我们花了许多时间用在对键击和鼠标动作的模拟功能的优化上,使其在目前所有的操作系统上都可以做到尽可能的精确。在这一版本中鼠标动作的功能也表现 得更像“人类”了,
6、甚至可以用来创建灵活的演示脚本。所有模拟鼠标和键盘动作的程序在模拟动作的“速度”及其它功能上都是高度可定制的。窗口操作除了“标题/文字”这种v2版本已有的识别窗口的方法以外,现在还可以通过类别名和句柄来识别窗口。您可以对窗口进行移动、隐藏、显示、调整大小、激活、关闭以及其它所有您想要实现的操作。还有很多很多. AutoIt v3 官方下载地址: AutoIt3中文教程 编写运行我的第一个脚本运行脚本如果您运行 AutoIt(AutoIt3.exe) 则会被询问要打开哪个 脚本文件。所谓脚本文件是指包含有AutoIt的关键字及相关函数的文本文件。使用简单的文本编辑器(比如记事本 notepad.
7、exe)即可创建脚本文件,当然我们还有更好的 选择。尽管 AutoIt v3 的脚本只是些纯文本文件,但为了区分脚本文件和文本文件我们给它定义了 .au3 这个特殊的文件后缀。如果您完整安装了AutoIt,那么只需直接双击这些脚本文件即可运行它们。如果您在一个后缀为 .au3 的脚本文件上点击右键的话,还可以看到有其它的关联操作如 open(打开)、edit(编辑)或者 compile script(编译脚本)等。下面是一个示例脚本。注意第一行的英文“;”号被用来注释语句(类似于DOS下批处理文件的 REM命令): ; 这是我写的第一个脚本MsgBox(0, 这是我写的第一个脚本程序!, He
8、llo World!)更复杂的脚本一般会用到 函数,通常我们把函数放在脚本的最后部分。下面是一个带有函数的脚本示例:; 这是我写的第二个脚本(带自定义函数)MsgBox(0, 第二个脚本!, 此对话框从主脚本中调出!)TestFunc()Func TestFunc()MsgBox(0, 第二个脚本!, 此对话框从函数中调出!)EndFunc命令行参数AutoIt 脚本程序可通过命令行调用,当我们传递命令行参数到脚本中的时候会有一个特殊的数组 $CmdLine 保存相关数据。注意,脚本文件名不算进参数,如果要获得脚本文件名请查看关于 ScriptName 的说明。如果某个参数中包含有空格字符则必
9、须用英文“双引号”把这个参数围住。已编译的 脚本的也是以同样的方式接收命令行参数的。$CmdLine0 保存着命令行中参数的个数(不包括脚本文件名)$CmdLine1 是第 1 个参数$CmdLine2 则是第 2 个参数.我们常用 $CmdLine$CmdLine0 来表示最后一个参数.如果您的脚本是像下面这样被运行的话: AutoIt3.exe myscript.au3 参数1 这是一个字符串型参数$CmdLine0 等价于. 2$CmdLine1 等价于. 参数1$CmdLine2 等价于.这是一个字符串型参数ScriptName 等价于. myscript.au3除了$CmdLine之
10、外,还有一个变量叫做 $CmdLineRaw,它保存着完整的未被拆分的命令行语句,对于上面这个例子$CmdLineRaw 等价于.myscript.au3 参数1 这是一个字符串型参数AutoIt3中文教程 脚本编辑器脚本编辑器(Script Editors)AutoIt 脚本都是一些很简单的文本文件,用记事本就可以轻松编辑了。但是更好的选择或许是使用一些强大的免费/共享编辑器,它们一般都会提供诸如语法高亮(让AutoIt的关键字和函数高亮并着色显示从而使得脚本 更加 易读而且减少错误的产生)等功能,因此会更适合用来编写脚本程序,目前多数的 AutoIt 用户使用的编辑器是 SciTe,Aut
11、oIt开发小组已开发了SciTe的 AutoIt 版本,该版本带有所有的语法高亮功能,同时还整合了很多AutoIt的第三方工具(比如语法错误检查和脚本整理等)。如需要 SciTe 的AutoIt 版本请访问此页:下面是一些推荐的编辑器:TextPad Crimson Editor (免费的) Source Edit (免费的) UltraEdit 论坛 里经常会有关于哪一个编辑器最好的争论:)AutoIt 已附带了一些为各种编辑器预写的语法文件,您可在AutoIt安装目录的 Extra 文件夹下找到它们(在开始菜单 / AutoIt v3 / Extra 有一个快捷方式)。AutoIt3中文教
12、程 使用Aut2Exe编译脚本使用Aut2Exe编译脚本(Compiling Scripts with Aut2Exe)把AutoIt的.au3脚本文件编译成可独立运行的程序当然是可实现的,这样就可以使得编译后的程序得以在没有安装AutoIt(或者说没有AutoIt3.exe这个解释程序)的机器上运行。此外,编译好的脚本程序是经过压缩和加密的,而且还可使用 FileInstall 函数来绑定(装入)所需文件(同样也会被压缩和加密)到生成的程序中。当然,所有被 #include (包含)的文件都会被连接并编译进目标文件中,这样脚本(程序)在运行时就不再需要这些文件了。Aut2Exe 的使用方法有
13、以下三种:方法 1 - 开始菜单(Start Menu)此方法要求完整安装AutoIt.1. 打开开始菜单并选择 AutoIt v3 程序组。2. 点击“Compile Script to .exe”。3. Aut2Exe的主界面就出现在您的面前了。 4. 点击浏览(Browse)按钮来选择要编译的脚本文件(.au3)和程序的输出位置(.exe)。5. 如要修改目标程序的图标则请点击(第三个)浏览(Browse)按钮并指定图标文件(也可使用由AutoIt提供的一些示例图标:默认位于Program FilesAutoIt3Aut2ExeIcons).6. 如果不希望有任何人反编译您的脚本程序(现
14、已有反编译工具)则请在下方输入加密密码。7. 现在只剩下一个可能会需要调整的设置了,那就是编译程序时的压缩级别(在使用FileInstall装入大量文件时特别有用)。打开压缩级别(Compression)菜单即可进行设置。正如其它压缩程序一样,您选择的压缩级别越高则压缩速度越慢。不过,无论您选择哪一种压缩级别(最终生成的.exe程序)在解压(运行)的时候速度都是差不多的。8. 点击转换(Convert)按钮即可编译脚本。方法 2 - 右键菜单(Right Click)此方法要求完整安装AutoIt.1. 在资源管理器中找到您要编译的 .au3 脚本文件。2. 在其上点击右键。 3. 在出现的右
15、键菜单上点击“”,则脚本文件即被编译并在同一目录下生成一个同名文件(当然,扩展名变成.exe)。当您选择使用这种编译方式的时候,Aut2Exe 将使用当前的图标和压缩级别设置(也即上一次通过第一种方式编译时的设置)。方法 3 - 命令行(The Command Line)Aut2Exe.exe 也可在命令行环境下运行,例如: Aut2exe.exe /in /out /icon /nodecompile /comp 0-4 /pass 长文件名应该用双引号围住,如 C:Program FilesTesttest.au3。若没有给定“out” 文件名则生成与脚本文件同名的程序(仅扩展名不同)。注
16、:参数中的指的是要编译的脚本文件位置(相对路径或绝对路径),指的是编译后的程序生成的位置,指的是图标文件的位置,/comp 0-4指的是压缩级别,指的是加密密码。技术细节在脚本编译和使用FileInstall函数装入外部文件时所用的是我本人(Jon) 的压缩算法。因为一个编译好的脚本程序必须能做到无需密码(解压)而又能够得以解析并运行。也就是说压缩是双向的(即压缩和解 压都是用同一种算法)。正因为如此,您应该把生成的程序纯粹地视为编译文件而不能认为(其中保存的信息)是完全安全的。举个例子来说,如果我(为了桌面展 示的目的)写了一个需要含有用户名和密码的脚本,那么我可能会用工作站级别的用户名/密
17、码而 不会 认为脚本程序已足够安全而使用域或整个网络的密码,除非我非常确定不会有任何终端用户可获取该程序。AutoIt3中文教程 AutoIt 窗口信息工具AutoIt 窗口信息工具AutoIt v3 附带了一个独立的工具,名为 窗口信息工具(AutoIt Window Info Tool )(默认位于Program FilesAutoIt3AU3Info.exe)。AU3Info 让您可以获取指定窗口的相关信息从而便于更有效地实现自动化操作。窗口的信息主要包括以下这些:窗口标题(Window titles) 窗口上的文本文字(Text)(包括可见部分和不可见部分) 窗口的大小和坐标位置 状态
18、栏的内容 鼠标指针的坐标位置 鼠标指针所指象素的颜色值 鼠标经过的 控件(Control)的相关信息 要使用 AU3Info 首先当然要运行它了(可从命令行启动或在开始菜单找到它)。AU3Info 将保持在所有窗口的最上层以便您总能看到获取的信息内容。激活您感兴趣的窗口则AU3Info即可获取该窗口的相关信息并显示出来。有了AU3Info的 帮助您就能迅速地实现自动化了。当 AU3Info 运行的时候您可能会想(用 CTRL-C 快捷键)把AU3Info窗口上的信息直接复制下来然后粘贴到脚本中以避免拼写错误。但这是很困难的,因为信息内容几乎一直在变(特别是象素信息和鼠标信息)!这时只需按下 C
19、TRL-ALT-F 快捷键即可立即暂停AU3Info的信息刷新,此时信息内容不再更新以供复制,要再次更新内容则只需再按一次快捷键就行了。下面演示了使用 AU3Info 获取 写字板 的窗口信息时的情况:AutoIt3中文教程 AutoIt 窗口信息工具窗口标题与文本(基础篇)窗口标题与文本(基础篇)当我们在编写用以实现自动化操作(通常是指窗口操作)的脚本的时候,经常要解决的一个问题就是如何(在众多窗口中)准确识别出目标窗口,一般来说我们把窗口的 标题(title) 作为它的ID,有时候只给标题还不够,这时就需要同时给出 标题及文本(text)。要获得某个窗口的标题是件很简单的事情(直接就可以看
20、到),可以使用 AutoIt 提供的 AutoIt Window Info(窗口信息工具)。大多数窗口的标题都是显而易见的,例如系统自带的记事本程序(notepad.exe),它的标题是 无标题 - 记事本,并不难理解对吧?而且一般来说这就已经足以帮助我们完成自动化任务了。 注意:若作为参数传递到窗口函数的 窗口标题 和 窗口文本 都是空字符串的话,则该函数的操作目标将会是当前激活的窗口(但设置了非默认的 窗口匹配模式(WinTitleMatchMode) 时除外)!窗口标题及其文本是 大小写敏感(或者说是严格区分大小写)的。包括标点符号在内您必须确保它们是完全匹配的。为了避免在这种小问题上出
21、错,您可以使用工具 Window Info 然后选中获得的标题或文本,按下 ctrl-c 复制之后就可以直接粘贴到脚本中使用了。AutoIt 的大部分窗口函数都有窗口标题和文本参数,比如说下面的 WinWaitActive 函数。这个函数的功能是使脚本暂停执行并 一直等到 指定窗口出现且激活为止。WinWaitActive ( 窗口标题, 窗口文本, 超时时间 )其中 窗口标题 是必须指定的参数,而 窗口文本 和 超时时间 都是可选参数。不过也有些函数的 窗口文本 参数是必须指定的,如果想省略这个参数的话只需指定 (表示空字符串)作为参数即可。在参数 窗口文本 中指定一个空字符串或者干脆留空的
22、话相当于告诉 AutoIt 任何文本都是有效的(反正只管标题匹配了就OK)。下面以记事本窗口为例说明上面提到的函数的两种用法:WinWaitActive(无标题 - 记事本)以及WinWaitActive(无标题 - 记事本, )如果我们打些字到该窗口上,比如说“这里是足以区分其它记事本窗口的文字”,则在 Window Info 的窗口上将会显示相关信息:我们可以注意到 Window Info 已经 “看到” 了这个记事本窗口的标题及文本并显示出来了。记住,凡是 Window Info Tool 能“看到”的 AutoIt 也能“看到”(指能在脚本中使用)。现在我们得到的这些信息已经足以用来准
23、确识别此窗口了(就算此时还打开了很多记事本窗口)。这时我们应该这么使用函 数:WinWaitActive(无标题 - 记事本, 这里是足以区分其它记事本窗口的文字)窗口文本作为参数使用的窗口文本必须是符合 AutoIt 的要求。一般来说有效的文本是指编辑框控件内的文本(比如像上面的“这里是足以区分其它记事本窗口的文字”),此外还可以使用下面这些文本:按钮上的文本,比如 &Yes、&No、&Next、确定(&O) 等(“&”号后的字符将带有下划线) 对话框上的文本,比如 “是否要继续?” 其它控件上的文本 其它文本我也不知道那是什么 :) 另外还有一个必须了解的技巧就是除了上面这些文本之外,很多
24、程序窗口的标题会根据操作对象的不同而不同(通常会在默认标题后附加),因此把接在标题后的文本作为窗口文本参数使用也是可以的。其实我们传递到窗口函数中的 窗口文本 参数是被 AutoIt 当作子串(substring)来处理的。还是以上面的记事本窗口为例,即使把“区分其它记事”作为窗口文本参数也是可以获得同样效果的。前面提到的所有应用都是以在 默认 模式下操作为例的,AutoIt 还提供了其它几种 更高级 的方法,可能会稍微比这里的难一点 :)窗口标题与文本(高级篇)AutoIt 支持四种“窗口匹配”模式。若要更改此模式可通过函数 AutoItSetOption 修改 WinTitleMatchM
25、ode 属性即可。模式 1 (默认)只匹配标题的前面部分。在此模式下,若一个窗口的标题是 无标题 - 记事本 则可使用如“无标题 - 记事本”、“无标题” 甚至是 “无” 等字符串作为窗口标题参数使用。例如: WinWait(无标题)模式 2标题的任意子串皆可。在此模式下,若一个窗口的标题是 无标题 - 记事本 则可使用如“无标题 - 记事本”、“无标题”、“记事本” 甚至是 “本” 等字符串作为窗口标题参数使用。eg. WinWait(记事本)模式 3完全匹配标题。在此模式下,若一个窗口的标题是 无标题 - 记事本 则只可使用 “无标题 - 记事本” 作为窗口标题参数使用。模式 4高级模式。
26、在此模式下,一些特殊的字符串可用来代替 窗口标题 参数,这样我们就可以使用窗口的 类别名 和 句柄 来识别窗口了。至于 窗口标题 参数维持原样即可。这些特殊的字符串不能含有空白符(whitespace,一般指空格、制表符、回车等)。它们分别是: classname=CLASSNAME active last 或 classname= 只匹配具有相同类别名的窗口。例如要识别一个类别名为 “MYCLASS1”的窗口,则可把“classname=MYCLASS1”作为窗口标题 参数使用。active 表示当前激活的窗口(实际作用与默认的 WinTitleMatchMode 模式下的 一样)。last
27、 使用上一次成功匹配的窗口,这样就不必三番四次地指定窗口标题和窗口文本了。例如: AutoItSetOption(WinTitleMatchMode, 4) WinWaitActive(无标题 - 记事本) WinClose(last) ; 关闭前面匹配成功的记事本窗口注意: 如果classname=, active, last 或 都没有作为窗口标题出现在该参数中,则自动以 模式 1 进行匹配。窗口句柄(Window Handles / HWNDs ) AutoIt 中的变量可用来存储窗口句柄(HWND)。所谓窗口句柄是指 Windows 自动分配给每个新创建的窗口的特殊值。窗口句柄可用来代
28、替窗口标题参数。使用窗口句柄来代替窗口标题的好处是能够更加精确地识别窗口,比如说有时候我们会同时打开同一应用程序的多个副本,这些窗口具有完全相同的窗口标题和窗口文本,这时就可以利用窗口句柄的唯一性来准确识别窗口了。另外,当使用窗口句柄代替窗口标题参数时,窗口文本参数将被完全忽略。很多函数如 WinGetHandle、WinList 和 GUICreate 都会返回窗口句柄。这里要特别提醒大家的是,不能 简单的把窗口句柄归类为数值或者字符串,它是使用特殊的数据类型的。 注意:不管当前的 WinTitleMatchMode 被设置为何种模式,窗口句柄始终可用。示例$handle = WinGetH
29、andle(无标题 - 记事本, )WinClose($handle)控件(Controls)AutoIt v3 的其中一个最优秀的新功能就是提供了直接操作某些窗口控件的支持。我们在窗口上能看到的东西大多都是以下控件的一种:按钮、列表框、文本编辑框、静态文本 等。比如说系统自带的记事本程序的主窗口也不过只是一个相对而言比较大一点的“编辑框(Edit)”控件罢了!正因为 AutoIt 提供了直接对控件操作的途径,我们再也不需要(也不应该)使用模拟键击等低级的方法来操作窗口了,这使得需要实现窗口操作的脚本更加可靠。注意: AutoIt 仅支持标准的 Microsoft 控件 有些应用程序(的作者)
30、自己写的自定义控件看起来很像是标准的 MS 控件,但却无法被脚本程序识别,那就只能靠您的经验判断了,实践出真理!运行 AutoIt Window Info 之后您可以试着把鼠标移动到自己感兴趣的窗口上,在 Window Info 的窗口就会显示当前鼠标经过的控件的信息。这些信息包括:控件 ID(Control ID) 类别名(ClassNameNN) 文本(Text) 控件句柄 (HWND) (这个不能利用 AutoIt Window Info 获得,获得方法请看下文) 如果你看到某个 Control.() 函数要求提供 控件ID(ControlID)作为参数(实际上大部分控件函数都需要此参数),那么
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1