JAVA 因简洁而美丽,因有效而动人 善待JAVA这颗种子的人,必将得到她的福荫

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", "简体中文")

 


TAG: AutoIt autoit

 

评分:0

我来说两句

Open Toolbar