您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > autoit快速开发指南
Autoit快速开发指南2012年9月6日Autoit开发指南启动程序启动exe类型文件,一般使用Run函数Run(“路径”)如:Run(“D:\Java\MyEclipse6\eclipse\eclipse.exe”)如果运行该函数,程序还没有启动起来,请配置好程序运行的工作目录Run(“路径”,”工作目录”)如:Run(“D:\Java\MyEclipse6\eclipse\eclipse.exe”,”D:\Java\MyEclipse6\eclipse”)注:有时程序的目录不一定和工作目录相同启动lnk,txt等文件一般使用ShellExecute函数该函数除了可以指定工作目录外,还可以设置启动参数1.窗口操作窗口处理一般都是针对WindowsGUI窗口的操作,常用的如下:;窗口是否存在WinExists(窗口标题[,窗口文本]);激活窗口WinActivate(窗口标题[,窗口文本]);等待某个窗口WinWait(窗口标题[,窗口文本[,超时时间]]);关闭指定窗口WinClose(窗口标题[,窗口文本]);获取窗口句柄WinGetHandle(窗口标题[,窗口文本]);获取窗口标题WinGetTitle(窗口标题[,窗口文本]);获取窗口进程WinGetProcess(窗口标题[,窗口文本])……还有其他一些处理函数,这个可以直接去查找AutoIt的帮助文档。下面是一个例子,一般在很多地方用到,特别是程序启动或者运行到某个步骤,等待其他窗口处理,一般采用以下脚本判断WinWait(“窗口标题”,窗口文本,”等待时间”)IfWinExists(“窗口标题”)ThenWinActivate(“窗口标题”)……EndIf不建议使用WinWaitActive(“窗口标题”,窗口文本,”等待时间”),否则,如果该窗口处于非激活状态,会使脚本一直等待直到超时,按照非预设的流程解析运行下去,得不到预期结果。1.菜单操作菜单点击使用WinMenuSelectItem函数WinMenuSelectItem(“窗口标题”,,”主菜单”,”子菜单1”,”子菜单2”……)例如点击窗口菜单的文件=》保存WinMenuSelectItem(“未命名—画图”,,”文件”,”保存”)当该函数无法操作菜单时候(一般为非标准的WindowsGUI),可以在工具栏查找该菜单的快捷启动按钮或者通过发送快捷键进行控制3.工具栏操作对于工具栏快速按钮,可以使用ControlCommand函数处理,菜单操作中很多快捷方式一般都放在工具栏中,这种情况可以多一个选择。ControlCommand(“窗口标题”,窗口文本,”工具栏控件名”,SendCommandID,”控件ID”)ControlCommand只能操作ToolbarWindow32类型的控件。控件ID需要通过WindowsInfo工具获取。5.1文本框在文本框输入数据使用:ControlSetText(“标题”,,”控件名或ID”,”输入的字符串数据”)如果需要获取文本框的数据,则使用ControlGetText(“标题”,,”控件名或ID”)ControlSetText和ControlGetText可以操作单行文本框,密码输入框,多行文本框等。5.2选择控件选择控件使用ControlCommand函数操作,可以操作单选多选以及单行多行下拉选择(ComboBox和ListBox)等控件。如选择下拉框的某个选项:ControlCommand(“窗口标题”,,控件类名或ID,SelectString,选中选项文本)而针对Radio,CheckBox等选择类型的控件ControlCommand(“窗口标题”,,控件类名或ID,check,””)而对于ListBox类型的选择框,则需要通过一系列组合来操作选项,如下面是获取所有选项数据的例子:WinActivate(“窗口标题”)$hWnd=ControlGetHandle(“窗口标题”,,“控件ID”)$count=_GUICtrlListBox_GetCount($hWnd)For$i=0To$count-1$hLabel=_GUICtrlListBox_GetText($hWnd,$i)……Next1.点击操作6.1控件点击控件点击一般使用:ControlClick(窗口标题,,控件名或ID,按钮,点击次数)按钮分左键(left),右键(right)等此外还可以在函数后面添加坐标,这对于占用屏幕区域比较大的时候,精确点击某个位置触发其他操作比较重要比如在一个表格中,需要右击某一行记录,弹出右键菜单的情况。6.2鼠标点击MouseClick(“按钮”,“X坐标”,”Y坐标”,”点击次数”)MouseClick函数对于任何点击操作都有效,唯一不理想的是,它涉及坐标点的确定,降低了程序的通用性。如果非要这么做,建议:1)将当前窗口激活,并最大化WinActivate(窗口标题,)WinSetState(窗口标题,,@SW_MAXIMIZE);接下来进行鼠标点击相关操作……2)如果当前窗口禁用最大化,则使用当前窗口相对坐标进行操作AutoItSetOption(MouseCoordMode,1);这里指相对当前激活窗口的坐标WinActivate(窗口标题,);接下来进行鼠标点击相关操作……2.键盘操作键盘操作一般使用Send函数,想激活窗口发送模拟键盘操作7.1一般字符这种情况指向当前激活窗口文本框,发送按键字符,如:Send(向光标激活地方发送的字符串)7.2快捷操作这种情况一般没有光标的输入,只是针对当前的激活窗口的一些快捷操作,比如按键”ctrl+S”是保存等,如Send(^s)另外一些快捷键如:Ctrl=^Alt=!Win=#Shift=+其他如:Send(“{PRINTSCREEN}”)截屏键Send(“{SPACE}”)空格键Send(“{ENTER}”)回车键Send(“{BACKSPACE}”)退格键……3.字符串处理针对字符串的处理,一般常需要判断字符串是否存在,或对字符串进行拆分、替换等,下面用一个例子来说明一下:一个用&&连接的子字符串,需要跟某段文字进行匹配,如果发现存在子存在,则替换成指定的字符串$originalStr=………………$matchStr=政府&&奶奶的$array=StringSplit($matchStr,'&&',1)If$i=1To$array[0]ThenIfStringInStr($originalStr,$array[$i])0Then$originalStr=StringReplace($originalStr,$array[$i,XXX)EndIfEndIf其他可以参考官方帮助文档。4.数组处理数组可以包含不同数据类型的数据,处理起来有两种情况需要注意9.1一般数组这个跟其他程序语言无太大的差别,如下所示:Dim$array[2]$array[0]=1$array[1]=2注意下标从0开始9.2特殊数组特殊数组指某些函数的返回值为数组的情况,或是在运行脚本时候,传递给命令行的参数,AutoIT会初始化一个特殊的数组,这些数组下标也是从0开始,但是为0的项保存的是数组的个数。命令行返回数组对于脚本参数数组为$CmdLine,可以直接使用$CmdLine[0];参数的数量$CmdLine[1];第一个参数(脚本名称后面)$CmdLine[2];第二个参数...$CmdLine[$CmdLine[0]];可以用来表示得到最后一个参数...如果脚本是像下面这样被运行的话:AutoIt3.exemyscript.au3参数1这是一个其它参数$CmdLine[0]等价于...2$CmdLine[1]等价于...参数1$CmdLine[2]等价于...这是一个其它参数@ScriptName等价于...myscript.au3函数返回数组前面用到的StringSplit函数返回值也是一个数组,0位保存的是数组项的个数,数组内却是从1开始计数$matchStr=11&&22&33$array=StringSplit($matchStr,'&&',1)如上:$array[0]等于4$array[1]等于”11”$array[2]等于”22”$array[3]等于”33”其他还有另外一些特殊的函数,如FileGetTime,WinList等等很多函数,返回值都是数组的情况,具体用法可能有些差异,这些可以参考相关文档。5.日期时间当前日期时间,可以直接从日期和时间宏中获取,如:@SEC当前时钟的秒值,值的范围是00到59@MIN当前时钟的分值,值的范围是00到59@HOUR当前时钟的时值(24时制),值的范围是00到23@MDAY当天属本月的第几天,值的范围是01到31@MON当前月份,值的范围是01到12@YEAR当前年份(4位数)计算指定日期间隔后的新日期:_DateAdd(“计算类型”,“间隔数”,“指定日期”)计算两个指定日期的间隔:_DateDiff(“计算类型”,“计算的开始日期”,“计算的结束日期”)6.像素捕获像素捕获主要去获取屏幕某块区域像素点的色值,以此和给定的颜色色值来比较判断是否一致。WinActivate(窗口标题)$Handle=WinGetHandle(窗口标题,)AutoItSetOption(PixelCoordMode,2)$Color=PixelGetColor(X坐标,Y坐标,$Handle)$ColorStr=Hex($Color,6)在实际情况中,有时可能不止获取一个点的像素就够了,这时可以通过获取窗口的相关WinGetPos(窗口标题,)坐标位置,然后对某个区块进行扫描。7.文件操作12.1.一般文件对于一般文本文件的读取:可以使用FileOpen打开文件,在按照要求读取文件内容:$fHandle=FileOpen(文件,0)if$fHandle-1ThenWhile1$line=FileReadLine($fHandle)If@error=-1ThenExitLoopWendEndIfFileClose($fHandle)如果文件被独占打开,进行FileOpen操作时候,获取不到文件操作句柄,无法对文件进行读写操作,这时,如果只是针对文件读,可以将独占打开的文件进行一下复制,然后用拷贝文件进行目标操作。FileCopy(原文件,目标文件或路径,1)12.2.ini文件对于ini类型文件,形如:[字段名]关键字=数值文件中可以有多个不同的字段名,每个字段名下有多个关键字,不同字段名下的关键字可以相同。读取ini文件:IniRead(文件名,字段名,关键字,默认值)写入ini文件:IniWrite(文件名,字段名,键名,值)删除ini文件:IniDelete(文件名,字段名[,关键字])8.常用控件操作13.1.ListBox控件ListBox控件,如图所示:在前面提到选择控件,ListBox也是其中一种,前面介绍了如何选中的某行选项,但是在真正的ListBox空间中,多半是记录相关软件运行时的一些状态参数记录,需要做的只判断其中打印的相关记录:$hWnd=ControlGetHandle(窗口标题,,ListBox控件名)$count=_GUICtrlListBox_GetCount($hWnd)For$i=0To$count-1$hLabel=_GUICtrlListBox_GetText($hWnd,$i)Next其中第一行是获取控件操作句柄,第二行根据句柄获取控件的记录条数,最后根据记录上遍历,获取每一条记录。13.2.ListView控件ListView控件展示形如表格,如图所示:其操作如下$rows=ControlListView(窗口标题,,ListView控件名,GetItemCount)For$i=0To$rows-1$iText=ControlListView(窗口标题,,ListView控件名,GetText,$i,列名序号)Next上
本文标题:autoit快速开发指南
链接地址:https://www.777doc.com/doc-6070501 .html