autoit基础知识
上一篇 / 下一篇 2009-10-18 16:19:13 / 个人分类:AutoIt
1:函数学习
WinGetPos
--------------------------------------------------------------------------------
获取指定窗口的坐标位置和大小等属性.
WinGetPos ( "窗口标题" [, "窗口文本"] )
参数
窗口标题 目标窗口标题. 参考标题高级定义.
窗口文本 [可选参数] 指定窗口包含的文本.
返回值
成功: 返回一个含有下列信息的4维数组:
$array[0] = X 坐标
$array[1] = Y 坐标
$array[2] = 宽度
$array[3] = 高度
失败: 返回值为1,并把 @error 设为 1,说明未找到目标窗口.
2:Autoit用来软件安装
3:运行外部程序的命令
a:Run ( "文件名" [, "工作目录" [, 显示标志[, 可选标志]]] )
例子:Run("Notepad.exe", "", @SW_MAXIMIZE)
b:RunWait
--------------------------------------------------------------------------------
运行一个外部程序并暂停脚本的执行直至该程序执行完毕.
RunWait ( "文件名" [, "工作目录" [, 标志[,可选标志]]] )
c:运行一个DOS命令可以用 RunWait(@ComSpec & " /c " & "命令") ;不要忘了 "/c" 前的 ""
-------------------------------------------------------------------------------
使用 ShellExecute API 执行一个外部程序.
ShellExecute ( "文件名" [, "参数" [, "工作目录" [, "verb" [, 显示标志]]]] )
参数
文件名 需要运行的文件名 (.EXE,.txt,.lnk,等等).
参数 [可选] 程序需要的运行参数. 空白("")为不使用参数.
工作目录 [可选] 程序的工作目录. 空白 ("") 使用当前工作目录 directory.
verb [可选] 使用 "verb" ,公共 verbs 包含:
pen = (默认) 打开指定文件. 文件可以是可执行文件,文档,或者一个文件夹.
edit = 启动一个编辑器编辑指定文档. 如果 "文件名" 不是一个文档文件,函数将失败.
print = 打印指定的文档文件. 如果 "文件名" 不是一个文档文件, 函数将失败
properties = 显示文件或者文件夹的属性
显示标志 [可选] 可执行程序的显示标志:
@SW_HIDE = 隐藏窗口
@SW_MINIMIZE = 最小化窗口
@SW_MAXIMIZE = 最大化窗口
返回值
成功: 返回 1.
失败: 返回 0 并设置@error为非0值.
举一个自己写的启动oracle的用法
主要用于命令行语句,例: Run(@ComSpec & " /k help | more")
调用cmd启动服务。
#include <GUIConstantsEx.au3>
#打开cmd窗口
#ShellExecute ("cmd.exe","",@SystemDir,"",@sw_hide)
ShellExecute ("cmd.exe","-p -slave 192.168.0.2 8000 127.0.0.1 2000",@SystemDir,"")
WinWaitActive("C:\WINDOWS\system32\cmd.exe","",5)
Send("net start OracleServiceUSCDB" & "{enter}" )
Sleep(5)
Send("net start OracleDBConsoleuscdb" & "{enter}")
Sleep(5)
Send("net start OracleOraDb10g_home1iSQL*Plus" & "{enter}")
sleep(5)
#启动数据库监听程序
Send("net start OracleOraDb10g_home1TNSListener" & "{enter}")
Sleep(5)
#dba进入数据库
Send ("sqlplus / as sysdba " & "{enter}")
Sleep(5)
#dba查数据库
Send ("select * from tab;" & "{enter}")
Sleep(5)
4:文件相关的函数
FileOpen
--------------------------------------------------------------------------------
打开指定的文件以供读写.
FileOpen ( "文件名", 模式)
参数
文件名 要打开的文件名.
模式 指定以何种模式(读或写)打开文件:
可以是下列几种:
0 = 只读模式
1 = 写入模式(附加数据到文件尾部)
2 = 写入模式(先删除之前的内容)
4 = Raw 模式读取数据
8 = 如果目标目录不存在就创建(参考注意).
16 = 强制使用二进制(字节)模式读取与写入
32 = 使用 Unicode UTF16 小编码读写模式,读取不会覆盖存在的BOM.
64 = 使用 Unicode UTF16 大编码读写模式,读取不会覆盖存在的BOM.
128 =使用 Unicode UTF8 读写模式,读取不会覆盖存在的BOM.
如果文件不存在,使用两个写入模式将会创建文件. 当然,文件夹路径必须存在(如果没有指定模式 '8' - 见注释).
返回值
成功: 返回一个文件"句柄",用于后来的文件函数调用.
失败: 返回值为 -1,说明有错误发生.
FileClose
--------------------------------------------------------------------------------
关闭此前已打开的文本文件.
FileClose ( 文件句柄 )
参数
文件句柄 文件的句柄,在调用 FileOpen 函数时由其返回值得到.
返回值
成功: 返回1.
失败: 返回0 (如果文件句柄为无效的).
FileRead
--------------------------------------------------------------------------------
从此前已打开的文本文件中读取指定数量的字符.
FileRead ( 文件名句柄 或者 "文件名" [, 数量] )
参数
文件句柄 目标文件句柄,可由此前调用 FileOpen 函数的返回值获得。另外也可以直接使用目标文件名.
数量 [可选参数]指定要读取字符的数量。默认读取整个文件
返回值
成功: 返回所读取的字符/二进制数据.
特殊: 把 @error 设为 -1,说明已经读到文件尾.
失败: 把 @error 设为 1,说明文件并非以读取模式打开或者有其它错误.
把 @error 设为 2,说明文件并非以RAW读取模式打开或者有其它错误.
FileWrite
--------------------------------------------------------------------------------
向此前已打开的文本文件尾追加一行数据.
FileWrite ( 文件句柄 或 "文件名", "数据" )
参数
文件句柄 目标文件句柄,可由此前调用 FileOpen 函数的返回值获得.另外也可以直接使用目标文件名.
数据 需要写入的数据.程序不会对写入的每行字符自动添加 @CR 或 @LF 字符.
返回值
成功: 返回值为1.
失败: 返回值为0,说明文件无法以写入模式打开,文件具有只读属性或者无法写入数据.
举例子:
$file = FileOpen("test.txt", 1)
; 检查打开的文件可写
If $file = -1 Then
MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
FileWrite($file, "Line1")
FileWrite($file, "Still Line1" & @CRLF)
FileWrite($file, "Line2")
FileClose($file)
FileReadLine
--------------------------------------------------------------------------------
从此前已打开的文本文件中读取指定行的字符.
FileReadLine ( 文件句柄 或 "文件名" [, 行号] )
参数
文件句柄 目标文件句柄,可由此前调用 FileOpen 函数的返回值获得.另外也可以直接使用目标文件名.
行号 [可选参数] 要读取的行号.第一行用1表示(不是0).
返回值
成功: 返回指定行的文本.
特殊: 把 @error 设为 -1,说明已经读到文件尾.
失败: 把 @error 设为 1,说明文件并非以读取模式打开或者有其它错误.
这个函数应该是常用到的,用法举例子如下:
$file = FileOpen("test.txt", 0)
; 检查打开的文件是否可读
If $file = -1 Then
MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
; 每次读取一行文本,直到文件结束.
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
MsgBox(0, "读取的行:", $line)
Wend
FileClose($file)
FileWriteLine
--------------------------------------------------------------------------------
向此前已打开的文本文件尾追加一行数据.
FileWriteLine ( 文件句柄 或 "文件名", "数据" )
参数
文件句柄 目标文件句柄,可由此前调用 FileOpen 函数的返回值获得.另外也可以直接使用目标文件名.
数据 准备写入的数据.如果该行字符 并没有 以字符 @CR 或 @LF 结束则程序将自动添加一个 DOS 的换行符(@CRLF).
返回值
成功: 返回值为1.
失败: 返回值为0,说明文件无法以写入模式打开,文件具有只读属性或者无法写入数据.
举例:
$file = FileOpen("test.txt", 1)
; 检查打开的文件是否可写
If $file = -1 Then
MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
FileWriteLine($file, "Line1")
FileWriteLine($file, "Line2" & @CRLF)
FileWriteLine($file, "Line3")
FileClose($file)
IniRead
--------------------------------------------------------------------------------
从某标准配置文件(*.ini)中读取某个数值.
IniRead ( "文件名", "字段名", "关键字", "默认值" )
参数
文件名 目标文件名.
字段名 INI文件中的某个字段名.
关键字 INI文件中的某个关键字.
默认值 若指定的关键字未被发现则函数将返回此默认值.
返回值
成功: 返回指定的关键字的数值.
失败: 若指定的关键字未被发现则函数将返回默认值.
IniWrite
--------------------------------------------------------------------------------
向某标准配置文件(*.ini)中写入某个数值.
IniWrite ( "文件名", "字段名", "关键字", "值" )
参数
文件名 目标文件名.
字段名 .INI 文件中的某个字段名.
关键字 .INI文件中的某个关键字.
值 要写入/修改的数值.
返回值
成功: 返回值为 1.
失败: 返回值为 0 说明文件具有只读属性.
4:AutoIt的鼠标键盘操作
41、模拟鼠标点击(按钮等)控件
既然是模拟用户操作,自然就包括了模拟鼠标点击在内。
适用命令/函数:Click/MouseClick/ControlClick
其中Click/MouseClick用来模拟用户的物理操作(点击),把鼠标点击事件发送到指定坐标位置(相对当前窗口或绝对位置)上,但这种方法并不能保证100%的准确性,屏幕分辨率、用户干扰和系统环境等都会影响到它们的执行结果,而ControlClick则直接把鼠标点击事件发送到目标窗口的目标控件上,因而更准确,一般我们不考虑使用坐标位置方式的点击,下面仅以ControlClick为例说明:
AHK:
ControlClick [, 目标控件或坐标位置, 窗口标题, 窗口文本, 鼠标按钮, 点击次数, 选项,排除标题, 排除文本]
AU3:
ControlClick ( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]] )
对AHK而言,“目标控件”参数是指要点击的控件的类别名(ClassNN)或控件文本,另外还可以使用控件句柄(若用的是控件句柄则第一个参数需留空,并在第二个参数中使用ahk_id %控件句柄%)。
Q:用什么工具来获得目标控件的这些信息呢?
A:AHK用户请使用 AutoIt3 Window Spy,AU3用户则请使用AutoIt Window Info,你可以在相应的开始菜单项目里找到它们,或者到安装目录下寻找。
Q:如何使用这两个工具?
A:先打开你要进行操作的目标窗口,然后运行 AutoIt3 Window Spy 或 AutoIt Window Info,接下来就是把鼠标移到目标控件上(比如某个按钮):
AutoIt3 Window Spy 使用演示截图:
AutoIt Window Info 使用演示截图:
现在我们假设已打开并激活了“系统属性”窗口,而任务是点击它的“确定”按钮,则可用以下几种方法:
【示例4.1.1】
AHK:
ControlClick, 确定, 系统属性
ControlClick, Button2, 系统属性
AU3:
ControlClick("系统属性", "", 1)
ControlClick("系统属性", "", "Button2")
ControlClick("系统属性", "", "确定")
提醒:即使目标窗口或控件是隐藏状态,ControlClick命令还是可以“点击”目标控件,但不能保证成功率。
42、模拟键盘操作
键盘也是我们在操作窗口时会用到的工具,比如说在安装软件的时候经典的“一路回车大法”。下面简单介绍一下模拟键盘操作的方法。
Send
这个是最直接的方法,就是模拟用户按键行为,直接发送键击命令,用法请参考官方文档,在此不予说明。
最简单的应用――按回车:
AHK:
Run, Control Sysdm.cpl
WinWait, 系统属性
Send, {Enter}
AU3:
Run("Control Sysdm.cpl")
WinWait("系统属性")
Send("{Enter}")
常见的组合键――Alt+X / Ctrl+N等等,在安装软件的时候经常会有提供一个按钮“下一步(N)”,表示按下Alt+N即可触发等同于点击该按钮的效果,其它的可触类旁通。以打开记事本窗口的“文件”菜单为例:
AHK:
Run, Notepad
WinWait, 无标题 - 记事本
WinActivate, 无标题 - 记事本
WinWaitActive, 无标题 - 记事本
Send, !f
AU3:
Run("Notepad")
WinWait("无标题 - 记事本")
WinActivate("无标题 - 记事本")
WinWaitActive("无标题 - 记事本")
Send("!f")
5:控件操作
控件操作
然而,在真正实现自动化时仅靠上面的技术往往难以达到预期目的。下面开始进入最为重要的控件操作。
1、设置文本
在安装软件的过程中用户往往需要提供一些必需信息,比如安装目录。很多用户并不喜欢把软件安装到默认的C盘而更愿意把它们安装到别的地方,那么脚本究竟提供了什么方法能让我们修改如下图所示的路径呢?
我们先用上文中提到的AutoIt3 Window Spy 或 AutoIt Window Info 来获得这个路径的编辑框的信息,假设这个窗口的标题为Setup foobar,该路径编辑框的类名是Edit1,而我们需要把它改成“D:\foobar2000”,接下来就可以使用下列命令/函数来设置它的文本了:
AHK:
ControlSetText [, 目标控件, 新文本, 窗口标题, 窗口文本, 排除标题, 排除文本]
AU3:
ControlSetText ( "窗口标题", "窗口文本", 控件ID, "新文本")
具体用法如下:
【示例5.1.1】
AHK:
ControlSetText, Edit1, D:\foobar2000, Setup foobar
AU3:
ControlSetText("Setup foobar", "", "Edit1", "D:\foobar2000")
2、选中和取消选中单选框和复选框项目
有时程序为了满足用户的个性化设置而需要用户提供更多的信息,我们经常会遇到这样的情况:
如何保证选中所需项目并取消某些项目呢?
下面先来介绍AHK和AU3中用来对控件进行各种属性设置的命令/函数:
AHK:
Control [, 命令, 值, 目标控件, 窗口标题, 窗口文本, 排除标题, 排除文本]
AU3:
ControlCommand ( "窗口标题", "窗口文本", 控件ID, "命令", "选项")
其中,“命令”就是让我们指定要进行何种设置的参数。对这些单选框/复选框按钮来说,适用的命令是“Check”和“UnCheck”。
假设这个窗口的标题是为Setup foobar,我们打算进行下来操作:
选中它的“桌面”复选框(Button5)、取消选中“快速启动栏”复选框(Button7);
选中“0.7x”单选框(Button14)。
那么具体的用法示例如下:
【示例5.1.2】
AHK:
Control, Check, , Button5, foobar
Control, UnCheck, , Button7, foobar
Control, Check, , Button14, foobar
AU3:
ControlCommand("foobar", "", "Button5", "Check", "")
ControlCommand("foobar", "", "Button7", "UnCheck", "")
ControlCommand("foobar", "", "Button14", "Check", "")
2、选择下拉列表的项目
相信你肯定遇到过下面这种情况:
问题又来了:如何选中自己需要的项目?
答案仍是使用上面提到的命令/函数。对这种控件而言,AHK适用的命令是“Choose, N”和“ChooseString, String”,分别表示选中第N个项目和选中与字符串String匹配的项目;而AU3适用的命令则是“SetCurrentSelection, N”和“SelectString, String”,分别表示选中第N+1(注意是从零开始表示!)个项目和选中与字符串String匹配的项目。
假设我们要选中第五个项目“简体中文”,那么具体的用法示例如下:
【示例5.1.3】
AHK:
Control, Choose, 5, ComboBox1, Installer
Control, ChooseString, 简体中文, ComboBox1, Installer
AU3:
ControlCommand("Installer", "", "ComboBox1", "SetCurrentSelection", 4)
ControlCommand("Installer", "", "ComboBox1", "SelectString", "简体中文")
相关阅读:
- autoit another examples (huior, 2008-10-29)
- AutoIT 的学习和介绍 (chenlia28, 2009-9-15)
- 用Autoit脚本自动填充测试数据 (xb0726, 2009-10-14)
- 【QTP系列讲座 9】 == AutoItX技术的应用 == (zzxxbb112, 2009-10-17)
我的栏目
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | 5 | 6 | ||||
7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
28 | 29 | 30 |
我的存档
数据统计
- 访问量: 202573
- 日志数: 173
- 图片数: 4
- 建立时间: 2009-05-17
- 更新时间: 2015-04-02