当前位置:文档之家› ref_of_au3

ref_of_au3

ref_of_au3
ref_of_au3

AutoIt快速开发指南

2010年11月

神州数码系统集成服务有限公司

AutoIt快速开发指南 (1)

1. 启动程序 (2)

2. 窗口操作 (3)

3. 菜单操作 (5)

4. 工具栏操作 (5)

5. 表单控件操作 (6)

5.1 文本框 (6)

5.2 选择控件 (7)

6. 点击操作 (8)

6.1 控件点击 (8)

6.2 鼠标点击 (8)

7. 键盘操作 (9)

7.1 一般字符 (9)

7.2 快捷操作 (9)

8. 字符串处理 (9)

9. 数组处理 (10)

9.1 一般数组 (10)

9.2 特殊数组 (10)

10. 日期时间 (11)

11. 像素捕获 (12)

12. 文件操作 (12)

12.1. 一般文件 (12)

12.2. ini文件 (13)

13. 常用控件操作 (13)

13.1. ListBox控件 (13)

13.2. ListView控件 (14)

14. 运行参数设置 (15)

15. 加密解密 (15)

15.1. 加密 (15)

15.2. 解密 (16)

16. GUI操作 (16)

17. IE操作 (17)

18. 自定义函数 (18)

19. 附录 (28)

1.启动程序

启动exe类型文件,一般使用Run函数

Run(“路径”)

如:

如果运行该函数,程序还没有启动起来,请配置好程序运行的工作目录Run(“路径”,”工作目录”)

如:

注:有时程序的目录不一定和工作目录相同

启动lnk,txt等文件一般使用ShellExecute函数

该函数除了可以指定工作目录外,还可以设置启动参数

2.窗口操作

窗口处理一般都是针对Windows GUI窗口的操作,常用的如下:

还有其他一些处理函数,这个可以直接去查找AutoIt的帮助文档。

下面是一个例子,一般在很多地方用到,特别是程序启动或者运行到某个步骤,等待其他窗口处理,一般采用以下脚本判断

不建议使用WinWaitActive(“窗口标题”,"窗口文本",”等待时间”),否则,如果该窗口处于非激活状态,会使脚本一直等待直到超时,按照非预设的流程解析运行下去,得不到预期结果。

3.菜单操作

菜单点击使用WinMenuSelectItem函数

例如点击窗口菜单的文件=》保存

当该函数无法操作菜单时候(一般为非标准的Windows GUI),可以在工具栏查找该菜单的快捷启动按钮或者通过发送快捷键进行控制

4.工具栏操作

对于工具栏快速按钮,可以使用ControlCommand函数处理,菜单操作中很多快

捷方式一般都放在工具栏中,这种情况可以多一个选择。

ControlCommand只能操作ToolbarWindow32类型的控件。

控件ID需要通过Windows Info工具获取。

5.表单控件操作

5.1文本框

在文本框输入数据使用:

ControlSetText(“标题”,"",”控件名或ID” ,”输入的字符串数据”)

如果需要获取文本框的数据,则使用

ControlG etText(“标题”,"",”控件名或ID”)

ControlSetText和ControlGetText可以操作单行文本框,密码输入框,多行文本框等。

5.2选择控件

选择控件使用ControlCommand函数操作,可以操作单选多选以及单行多行下拉选择(Com boBox和ListBox)等控件。

如选择下拉框的某个选项:

而针对Radio,CheckBox等选择类型的控件

而对于ListBox类型的选择框,则需要通过一系列组合来操作选项,如下面是获取所有选项数据的例子:

6.1控件点击

控件点击一般使用:

按钮分左键(left),右键(right)等

此外还可以在函数后面添加坐标,这对于占用屏幕区域比较大的时候,精确点击某个位置触发其他操作比较重要

比如在一个表格中,需要右击某一行记录,弹出右键菜单的情况。

6.2鼠标点击

MouseClick函数对于任何点击操作都有效,

唯一不理想的是,它涉及坐标点的确定,降低了程序的通用性。

如果非要这么做,建议:

1)将当前窗口激活,并最大化

2)如果当前窗口禁用最大化,则使用当前窗口相对坐标进行操作

键盘操作一般使用Send函数,想激活窗口发送模拟键盘操作

7.1一般字符

这种情况指向当前激活窗口文本框,发送按键字符,如:

7.2快捷操作

这种情况一般没有光标的输入,只是针对当前的激活窗口的一些快捷操作,比如按键”ctrl+S”是保存等,如

另外一些快捷键如:

8.字符串处理

针对字符串的处理,一般常需要判断字符串是否存在,或对字符串进行拆分、替换等,下面用一个例子来说明一下:

一个用&&连接的子字符串,需要跟某段文字进行匹配,如果发现存在子存在,则替换成指

定的字符串

其他可以参考官方帮助文档。

9.数组处理

数组可以包含不同数据类型的数据,处理起来有两种情况需要注意

9.1一般数组

这个跟其他程序语言无太大的差别,如下所示:

9.2特殊数组

特殊数组指某些函数的返回值为数组的情况,或是在运行脚本时候,传递给命令行的参数,AutoIT会初始化一个特殊的数组,这些数组下标也是从0开始,但是为0的项保存的是数组的个数。

命令行返回数组

对于脚本参数数组为$CmdLine,可以直接使用

$CmdLine[0] ;参数的数量

$CmdLine[1] ;第一个参数(脚本名称后面)

$CmdLine[2] ;第二个参数

...

$CmdLine[$CmdLine[0]] ;可以用来表示得到最后一个参数...

如果脚本是像下面这样被运行的话:

AutoIt3.exe myscript.au3 参数1 "这是一个其它参数"

$CmdLine[0] 等价于 (2)

$CmdLine[1] 等价于... 参数1

$CmdLine[2] 等价于... 这是一个其它参数

@ScriptName 等价于... myscript.au3

函数返回数组

前面用到的StringSplit函数返回值也是一个数组,0位保存的是数组项的个数,数

其他还有另外一些特殊的函数,如FileGetTime,WinList等等很多函数,返回值都是数组的情况,具体用法可能有些差异,这些可以参考相关文档。

10.日期时间

当前日期时间,可以直接从日期和时间宏中获取,如:

@SEC 当前时钟的秒值,值的范围是00 到59

@MIN 当前时钟的分值,值的范围是00 到59

@HOUR 当前时钟的时值(24时制),值的范围是00 到23

@MDAY 当天属本月的第几天,值的范围是01 到31

@MON 当前月份,值的范围是01到12

@YEAR 当前年份(4位数)

计算指定日期间隔后的新日期:

_DateAdd(“计算类型”, “间隔数”, “指定日期”)

计算两个指定日期的间隔:

_DateDiff(“计算类型”, “计算的开始日期”, “计算的结束日期”)

11.像素捕获

像素捕获主要去获取屏幕某块区域像素点的色值,以此和给定的颜色色值来比较

在实际情况中,有时可能不止获取一个点的像素就够了,这时可以通过获取窗口的相关WinGetPos("窗口标题","")坐标位置,然后对某个区块进行扫描。

12.文件操作

12.1.一般文件

对于一般文本文件的读取:可以使用FileOpen打开文件,在按照要求读取文件

对文件进行读写操作,这时,如果只是针对文件读,可以将独占打开的文件进行

12.2.ini文件

对于ini类型文件,形如:

[字段名]

关键字=数值

文件中可以有多个不同的字段名,每个字段名下有多个关键字,不同字段名下的关键字可以相同。

写入ini文件:

13.常用控件操作

13.1.ListBox控件

ListBox控件,如图所示:

在前面提到选择控件,ListBox也是其中一种,前面介绍了如何选中的某行选项,但是在真正的ListBox空间中,多半是记录相关软件运行时的一些状态参数记录,

其中第一行是获取控件操作句柄,第二行根据句柄获取控件的记录条数,最后根

据记录上遍历,获取每一条记录。

13.2.ListView控件

ListView控件展示形如表格,如图所示:

其操作如下

上面代码,我们首先获取行数,然后指定某列,获取其所有行的文本。

更多ListView操作可以参考ControlListView函数说明。

14.运行参数设置

运行参数设置可以调整Autoit各种函数/参数的运作方式,可以通过Opt或者AutoItSetOption函数来设置:

常用的有:

更多运行参数设置可以参考AutoItSetOption帮助文档说明

15.加密解密

15.1.加密

这里加密的是一个16进制的字符串,其中加密匙可以自己设置,示例中为sop,

其中加密算法为AutoIt内置的$CALG_RC4,还可以为$CALG_RC2等等其他。15.2.解密

很简单的两行,不过其中的解密匙和解密算法要跟之前的加密参数对应。16.GUI操作

GUI操作包括创建窗口面板,在面板上创建表单控件及其互动事件处理等一系列连贯配置:

上面是一个简单界面包装,一旦界面检测到$WM_COMMAND事件响应,即触发自定义函数WM_COMMAND,窗口包括两个简单的文本编辑控件。

我们还可以设置其他控件的事件处理:

这里是针对按钮设置了点击触发事件。

17.IE操作

IE操作,不像GUI界面一样,通过AutoIt Window Info就能得到相关控件,进而获取控件句柄进行操作。

我们在操作IE网页时候,需要事先获取HTML页面中的相关Dom节点或元素,所以需要对HTML有一些了解。下面是一个简单的例子:

实例是一个简单操作,打开一个IE窗口,访问百度,然后在搜索网页表单,输入一个要查询的关键字,点击百度搜索。

一般网页很多超链接,对于这些链接的页面,都有很多的Dom节点嵌套,单纯的以对象名称不一定能够获取到某个操作的对象,这时需要从顶级Dom节点,一级一级缩小范围,直到获取到最终操作对象节点,如下所示:

这里实例主要是从一个打开的浏览器窗口,获取名为iFrame的frame页面,然后获取其中为Id为divId的节点,进而,取到divId节点下的所有超链接对象,最后一个一个判断,找到某个url,点击超链接。

18.自定义函数

把一些常用而相关逻辑的操作,抽离出来,独立成一个模块,供脚本调用,这就需要涉及到自定义函数。

用户可通过使用Func...EndFunc 语句来自定义函数,函数中可以有Return返回值,也可以无,下面我们列出了一些常用的自定义函数,供参考:

#include

#Include

#include

#Include

#Include

#Include

#include

#include

;获取配置文件

Func GetConfigFile()

Return String("D:\Digitalchina\AutoAgent\scripts\ConfigParameter.ini") EndFunc

;根据给定的日期格式字符串转换成当前日期格式

Func ReplaceDateStr($DateStr)

Select

Case StringInStr($DateStr,"YYYYMMDD")

Return StringReplace($DateStr,"YYYYMMDD",DateYYYY() & DateMM() & DateDD())

Case StringInStr($DateStr,"YYYY-MM-DD")

Return StringReplace($DateStr,"YYYY-MM-DD",DateYYYY() &"-"& DateMM() &"-"& DateDD())

Case StringInStr($DateStr,"YYYY/MM/DD")

Return StringReplace($DateStr,"YYYY/MM/DD",DateYYYY() &"/"& DateMM() &"/"& DateDD())

Case StringInStr($DateStr,"ABCDD-YYYY")

;ABC代表英文的短月份格式,如1月=Jan

Return StringReplace($DateStr,"ABCDD-YYYY",_DateToMonth(@MON,1) & DateDD() &"-"& DateYYYY())

Case StringInStr($DateStr,"MMDD")

Return StringReplace($DateStr,"MMDD", DateMM() & DateDD()) Case Else

Return $DateStr

EndSelect

EndFunc

;返回日期格式

Func DateYYYY()

Return String(@YEAR)

EndFunc

Func DateYY()

Return StringRight(String(@YEAR),2)

EndFunc

Func DateMM()

Return String(@MON)

EndFunc

Func DateDD()

Return String(@MDAY)

EndFunc

;写日志,截屏等操作

;$fileName 日志文件

;$flag 操作标识1为成功,0为失败

;$logTxt 写入日志内容,增加在行尾

Func WriteLog($fileName,$flag,$logTxt)

相关主题
文本预览
相关文档 最新文档