AutoIt3相关——基本使用篇
零、AutoIT v3在线中文手册
https://www.jb51.net/shouce/autoit/
番外:https://www.robvanderwoude.com/
一、AutoIT可以干啥
1.运行Windows 及 DOS 下的可执行文件
2.模拟键击动作(支持大多数的键盘布局)
3.模拟鼠标移动和点击动作
4.对窗口进行移动、调整大小和其它操作
5.直接与窗口的“控件”交互(设置/获取文字、移动、关闭等)
6.配合剪贴板进行剪切/粘贴文本操作
7.对注册表进行操作
二、如何使用AutoIT
1.安装:
百度下载安装or(http://forspeed.onlinedown.net/down/autoit-v3-setup.zip 解压下一步安装即可)
2.运行:
a.桌面双击运行
b.dos命令调用执行
3.快速开始:
注:autoIT关键字不区分大小写;autoIT以缩进来表示代码块;$CmdLine[0] 保存着命令行中参数的个数,$CmdLine[1] 是第 1 个参数,
$CmdLine[2] 则是第 2 个参数……;
a.注释:
autoIT中以分号为单行注释,注释掉的内容不会被执行
b.信息弹窗——MsgBox:
; 这是我写的第二个脚本(带自定义函数) MsgBox(0, "我是弹窗标题", "我是弹窗内容") ; 函数名调用 TestFunc() Func TestFunc() MsgBox(0, "我是函数调用弹窗标题", "我是函数调用弹窗内容") EndFunc
c.脚本编译:
开始菜单点击Compile Script to .exe(x64),选择如下(ico可以不选),后点击convert,生成如第二张图的可执行文件
生成的可执行文件即可脱离autoIT安装环境而执行
4.窗口信息工具(AutoIt Window Info):
开始菜单点击AutoIt Window Info(x64),打开窗口信息工具如下
窗口信息工具可以获取的窗口信息如下:
5.窗口标题与文本
注:窗口标题和文本是严格区分大小写的;窗口信息工具中可以直接复制标题等
WinWaitActive ( "窗口标题", ["窗口文本"], [超时时间] ):使脚本暂停执行并 一直等到 指定窗口出现且激活为止
一般来说有效的文本是指编辑框控件内的文本,此外还可以使用下面这些文本:
- 按钮上的文本,比如 &Yes、&No、&Next、确定(&O) 等(“&”号后的字符将带有下划线)
- 对话框上的文本,比如 “是否要继续?”
- 其它控件上的文本
a.AutoItSetOption("属性", 参数):调整各种函数/参数的运作方式
参数
属性 | 要改变的选项。请查看下面的注意部分。 |
参数 | 相关参数(因设置的属性不同而不同)。请查看下面的注意部分。 |
返回值
返回上一次设置的值。
注意
可用缩写函数 Opt() 代替 AutoItSetOption()(两者实际是同一函数).
如果指定一个未知属性则 AutoIt 将会暂停执行并显示错误信息。有效的属性包括:
属性 | 参数 |
CaretCoordMode | 设置用于caret(插入符)函数的坐标参照,可以是绝对位置也可以是相对当前激活窗口的坐标位置。 0 = 相对激活窗口的坐标 1 = 屏幕的绝对位置(默认) 2 = 相对激活窗口客户区的坐标 |
ColorMode | 设置要使用的颜色模式,RGB 或 BGR。RGB 是默认的模式,但老版本的 AutoIt(3.0.102 之前)是以 BGR 为默认模式: 0 = 颜色值以 RGB 格式表示(0xRRGGBB)(默认) 1 = 颜色值以 BGR 格式表示(0xBBGGRR) (用于旧版的 AutoIt) |
ExpandEnvStrings | 更改字面字符串和 % 符号的解释方式。默认情况下字符串按原文解释,此选项允许您在字符串中使用形如 %environment% 这样的环境变量,例如 "临时文件夹的路径是: %temp%"。 1 = 展开环境变量(类似于 AutoIt v2) 0 = 不展开展环境变量(默认) 若未设置此选项则要实现类似功能的方法是:"临时文件夹的路径是: " & EnvGet("temp") |
ExpandVarStrings | 更改字面字符串和变量/宏($ 和 @)符号的解释方式。默认情况下字符串按原文解释,此选项允许您在字符串中使用变量和宏,例如 "变量 var1 的值是 $var1$"。 1 = 展开变量(在此模式下如果要表示 $ 或 @ 本身则请用连续两个相应符号表示,例如:"这里有一个美元符号 $$")。 0 = 不展开变量(默认) |
FtpBinaryMode | 调整FTP文件的传输模式。 1 = 二进制(默认) 0 = ASCII |
GUICloseOnESC | 当用户在一个GUI窗口(处于激活状态时)按下 ESC 键则 $GUI_EVENT_CLOSE 消息将被发送。此选项用以切换这一行为。 1 = 在按下 ESC 时发送消息 $GUI_EVENT_CLOSE(默认). 0 = 在按下 ESC 时不发送消息 $GUI_EVENT_CLOSE |
GUICoordMode | 设置用于 GUICtrlSetPos 函数的坐标参照。 1 = 绝对坐标(默认)将相对于对话框。 0 = 相对于上一个控件的起始位置(左上角)。 2 = 相对当前单元格的位置。若参数“左侧”或“上方”指定为 -1则并不会增加起始位置,因此下一行应该用 -1,0 来表示;下一个单元格则是 0,-1;当前单元格则是 -1,-1 |
GUIOnEventMode | 启用/取消 OnEvent 函数 0 = (默认)取消。 1 = 启用。 |
GUIResizeMode | 更改控件大小调整的模式。 0 = (默认)不调整 <1024 = 详情请查看 GUICtrlSetResizing 函数的说明。 |
MouseClickDelay | 更改每个鼠标点击命令之间的延迟时间长度。 以毫秒为单位(默认值 = 10)。 |
MouseClickDownDelay | 更改在松开按键之前按住按钮的时间长度。 以毫秒为单位(默认值 = 10)。 |
MouseClickDragDelay | 更改鼠标开始拖曳到结束拖曳之间的时间长度。 以毫秒为单位(默认值 = 250)。 |
MouseCoordMode | 设置用于鼠标函数的坐标参照,可以是绝对位置也可以是相对当前激活窗口的坐标位置。 0 = 相对激活窗口的坐标 1 = 屏幕的绝对位置(默认) 2 = 相对激活窗口客户区的坐标 |
MustDeclareVars | 如果设置了此选项为1则所有变量在使用之前必须先使用 Dim/Local/Global 声明,这将有助于减少各种因误拼变量而引起的bug的出现。 1 = 变量必须先声明 0 = 变量不需预先声明(默认) |
OnExitFunc | 设置在 AutoIt 退出时将调用的函数(默认值为 OnAutoItExit). |
PixelCoordMode | 设置用于象素函数的坐标参照,可以是绝对位置也可以是相对当前激活窗口的坐标位置。 0 = 相对激活窗口的坐标 1 = 屏幕的绝对位置(默认) 2 = 相对激活窗口客户区的坐标 |
RunErrorsFatal | 设置脚本在遇到严重错误时是否自动终止(比如在 Run/RunWait 函数因为 路径错误/找不到文件/登陆帐号错误 而导致执行失败时): 1 = 严重(致命性)错误(默认) 0 = 静默(普通的)错误(@error 将设为 1) |
SendAttachMode | 指定在使用 Send() 函数时 AutoIt 是否捆绑(attach)输入线程。当不捆绑的时候(默认模式 = 0)对 capslock/scrolllock/numlock 等按键状态的检测将是不准确的(指在 NT4 下)。不过,在设置捆绑模式 = 1的时候,Send("{... down/up}") 等语法将不被支持,在发送按键的时候也可能会导致系统挂起等问题。至于 ControlSend() 函数则 总是 捆绑线程的,而且不受此模式设置的影响。 0 = 不捆绑(默认) 1 = 捆绑 |
SendCapslockMode | 指定是否让 AutoIt 在执行 Send 函数之前保存大小写切换键(CapsLock)的状态并在完成操作后恢复到原来的状态。 0 = 不保存/恢复 1 = 保存并恢复(默认) |
SendKeyDelay | 更改发送键击命令之间的延迟时间长度。 以毫秒为单位(默认值 = 5)。设置此值为0时也许会无效,这时请使用1代替。 |
SendKeyDownDelay | 更改在每次键击期间(松开按键之前)按住按键的时间长度。对于一些需要花费一定时间才能注册键击的应用程序(以及各种游戏)您可能就要提高这一数值。 以毫秒为单位(默认值 = 1)。 |
TrayIconDebug | 在托盘图标上显示当前脚本执行到的那一行的相关信息(工具提示)以助调试。 0 = 不显示调试信息(默认) 1 = 显示调试信息 |
TrayIconHide | 隐藏 AutoIt 托盘图标。注意:托盘图标仍会在程序刚运行时出现大约 750 毫秒。 0 = 显示托盘图标(默认) 1 = 隐藏托盘图标 |
WinDetectHiddenText | 指定是否让隐藏的窗口文本也能被窗口匹配函数“看见”(可用于窗口文本参数)。 0 = 不检测隐藏文本(默认) 1 = 检测隐藏文本 |
WinSearchChildren | 允许窗口搜索程序在搜索顶层窗口的同时也搜索子窗口。 0 = 仅搜索顶层窗口(默认) 1 = 搜索顶层窗口及子窗口。 |
WinTextMatchMode | 更改窗口函数在执行搜索操作时的窗口文本匹配模式。 1 = 完全匹配(较慢)模式(默认) 2 = 快速模式 在快速匹配模式下,AutoIt 将只能“看见”对话框文本、按钮文本和某些控件的标题,而在默认模式下则能检测到更多的文本(例如记事本窗口的内容)。 如果在执行较多窗口的搜索操作时遇到性能(指速度)上的问题,那么您就应该考虑使用快速模式。 |
WinTitleMatchMode | 更改窗口函数在执行搜索操作时的标题匹配模式。 1 = 只匹配标题的前面部分(默认) 2 = 标题的任意子串皆可匹配 3 = 完全匹配标题 4 = 高级模式,详情请查看 窗口标题与文本(高级篇)。 |
WinWaitDelay | 更改每次成功执行窗口相关操作后的延迟时间长度。 以毫秒为单位(默认值 = 250)。 |
b.WinWait四种模式
模式1(默认):只匹配标题的前面部分(默认)
模式2: 标题的任意子串皆可匹配
模式3:完全匹配标题
模式4:高级模式
"classname=" 只匹配具有相同类别名的窗口。例如要识别一个类别名为 “MYCLASS1”的窗口,则可把“classname=MYCLASS1”作为窗口标题 参数使用。"active" 表示当前激活的窗口(实际作用与默认的 WinTitleMatchMode 模式下的 "" 一样)。"last" 使用上一次成功匹配的窗口,这样就不必三番四次地指定窗口标题和窗口文本了。
AutoItSetOption("WinTitleMatchMode", 4)
WinWaitActive("demo")
WinWait("classname=Notepad++","",5) ;匹配classname是Notepad++的窗口
WinClose("last") ;关闭前面匹配成功的记事本窗口
6.控件
注:AutoIt 仅支持标准的 Microsoft 控件 - 有些应用程序(的作者)自己写的自定义控件看起来很像是标准的 MS 控件,但却无法被脚本程序识别,那就只能靠您的经验判断了,实践出真理!
a.控件的信息包括:
- 控件 ID(Control ID):窗口信息工具获取
- 类别名(ClassNameNN):窗口信息工具获取
- 文本(Text):窗口信息工具获取
- 控件句柄 (HWND):使用 ControlGetHandle 函数获取,ControlGetHandle ( "窗口标题", "窗口文本", 控件ID)
b.ControlClick ( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]] ):向指定控件发送鼠标点击命令
参数
窗口标题 | 目标窗口标题。 |
窗口文本 | 目标窗口文本。 |
控件ID | 目标控件。请查看关于 控件 的说明。 |
按钮 | [可选参数] 要点击的按钮,可以是 "left"(左键)、"right"(右键) 或 "middle"(中键)。默认值为 left(左键)。 |
点击次数 | [可选参数] 要点击鼠标按钮的次数。默认值为 1. |
返回值
成功: | 返回值为1。 |
失败: | 返回值为0。 |
注意
在执行此命令前可能还需要使用 ControlFocus 命令把焦点转到目标控件上。
模拟点击控件仅在目标控件的父窗口处于激活状态(一般程序会自动激活该窗口)时才能保证100% 的准确性。
相关
ControlCommand, ControlFocus, MouseClick
持续更新中。。。。。。