AutoIt3相关——基本使用篇-飞外

零、AutoIT v3在线中文手册

https://www.jb51.net/shouce/autoit/

番外:https://www.robvanderwoude.com/

一、AutoIT可以干啥

1.运行Windows 及 DOS 下的可执行文件

2.模拟键击动作(支持大多数的键盘布局)

3.模拟鼠标移动和点击动作

4.对窗口进行移动、调整大小和其它操作

5.直接与窗口的“控件”交互(设置/获取文字、移动、关闭等)

6.配合剪贴板进行剪切/粘贴文本操作

7.对注册表进行操作

二、如何使用AutoIT1.安装:

百度安装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) 等(“ ”号后的字符将带有下划线)对话框上的文本,比如 “是否要继续?”其它控件上的文本

注意

可用缩写函数 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:高级模式

"classactive"表示当前激活的窗口(实际作用与默认的 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 [, 按钮] [, 点击次数]] ):向指定控件发送鼠标点击命令

参数


[可选参数] 要点击的按钮,可以是 "left"(左键)、"right"(右键) 或 "middle"(中键)。默认值为 left(左键)。