下面是完整的脚本
; 脚本功能
; 请将下载的"极点中文20040813十全大补版"改名为"JDWB040813.exe"
; 并将其与脚本文件放在同一文件夹下
; ----------------------------------------------------------------------------
run("jdwb040813.exe");运行“jdwb040813.exe”
WinWaitActive("安装 - 极点中文输入平台","安装向导");等待窗体"安装 - 极点中文输入平台","安装向导"出现
send("!n");发送快捷键Alt+N
WinWaitActive("安装 - 极点中文输入平台","使用许可协议")
send("!a");发送快捷键Alt+A
send("!n")
WinWaitActive("安装 - 极点中文输入平台","信息")
send("!n")
WinWaitActive("安装 - 极点中文输入平台","选择目标文件夹")
send("!n")
if winactive("目录已存在") Then;如果窗体"目录已存在"是激活状态
send("!y");发送快捷键Alt+Y
EndIf
WinWaitActive("安装 - 极点中文输入平台","选择组件");如果选择其他安装方式请在这里修改
send("!n")
WinWaitActive("安装 - 极点中文输入平台","选择开始菜单文件夹")
send("!n")
WinWaitActive("安装 - 极点中文输入平台","准备安装")
send("!i");发送快捷键Alt+I
WinWaitActive("安装 - 极点中文输入平台","完成 极点中文输入平台 安装向导")
send("{SPACE}{TAB}{SPACE}{TAB}");默认状态下“查看 freewb.chm”获得焦点,发送空格将勾去掉,并用TAB切换到下一个复选框
Send("!f");发送快捷键Alt+F
; ----------------------------------------------------------------------------
四、从示例脚本考虑几个问题
1、 用Autoit Window Spy精确取得窗体信息
在开始菜单里依次选择“程序—AutoIt V3—Autoit Window Spy”。“Autoit Window Spy”是AutoIt附带的一个获取信息的工具。启动后一般它都在最上面,鼠标激活要查看信息的窗体,“Autoit Window Spy”窗体里将显示激活窗体在鼠标下的信息,如图,这时可以用Ctrl+Alt+F使窗口内容暂停,便于从窗体里复制需要的内容

2、 WinWaitActive的使用
WinWaitActive(“窗体标题”,”窗体文本”)——等待指定窗体出现。使用这个命令,在AutoIt默认的情况下,窗体标题可以是实际标题的一部分,比如上面的命令也可以用
WinWaitActive("安装","信息")
但这样在匹配时精确程度也下降了,也可能匹配到另一个标题带“安装”,文本包含“信息”的窗体,所以在使用这个命令时窗体标题尽量用完整标题,最好从Autoit Window Spy,窗体文本选择当前窗体里有代表性的文本。
3、 Send的使用
Send命令发送模拟按键是输出字符的首选。它的应用比较灵活
(1)组合按键:^ 表示Ctrl,! 表示 Alt,+ 表示Shift,#表示 Win
比如上面完成时Send(“!f”)
(2)多个Send命令可以合写,一次完成。
(3)Send命令是不能输出中文的,其实Unicode都是不能输出的。
Send命令中有很多特殊按键,请参看帮助文件。
4、 修改默认路径(ControlSetText和ControlSend)
如何"选择目标文件夹"中的默认路径?假如我们不希望它安装在系统盘,而要安装在“D:Program FilesFreeWB”。
方法一、上面我们已经知道了Send命令的用法,由于路径框这时是激活状态,这里就可以用到了,Send(“D:Program FilesFreeWB”)
方法二、使用命令ControlSetText ( "窗体标题", "窗体文本", "要设置文字的控件类名或控件精确标题", "需要设置的文字" )
ControlSetText功能是设置窗体里指定控件的文本,不论窗体或控件这时的状态是否激活。注意ControlSetText是可以输出中文的。
控件类名可以用Autoit Window Spy取得如上图,经查找输入框的类名为“TEdit1”
上面的要求可写命令为
ControlSetText("安装 - 极点中文输入平台","选择目标文件夹","TEdit1"," D:Program FilesFreeWB ")
方法三、使用命令ControlSend ( "窗体标题", "窗体文本", "接收文字的控件类名或控件精确标题", "需要输入的文字" )
ControlSend功能和ControlSetText类似,向窗体里指定控件的发送文本,不论窗体或控件这时的状态是否激活。但ControlSend不能输出中文
ControlSend("安装 - 极点中文输入平台","选择目标文件夹","TEdit1"," D:Program FilesFreeWB ")
5、 修改默认组件
极点在安装时提供了多种组件组合,如何修改呢?
其实很简单,我们模拟一下使用键盘如何解决就行了。使用键盘TAB将焦点切换到要修改的控件,再用键盘方法选择,这个方法只用到Send命令就可以完成。推荐使用
6、用其它方式按键(ControlClick和MouseClick)
上面脚本里遇到按键的地方我们都是用快捷键来完成的,如果没有快捷键应该怎么办呢?
(1)从模拟按键的角度思考,如果焦点可以切换到,我们就可以用Tab键切换,用Enter键确认
(2)使用ControlClick("窗体标题", "窗体文本","要点击的控件类名或控件精确标题")
ControlClick功能是点击指定窗体里的指定控件,不论窗体或控件这时的状态是否激活。
(3)使用模拟鼠标点击
这个方法是尽量不要使用的,但有的窗体没有快捷键,不能切换焦点,又找不到控件信息,这时只能用模拟鼠标点击的方法。
MouseClick(“鼠标左右键”,在屏幕的X位置,在屏幕的Y位置,点击次数)
使用这一方法必须取得准确的鼠标坐标,而且坐标要适应不同情况,最好用变量取得,具体方法以后再介绍。
总结
在这篇文章里我不想过多的介绍每一个命令的详细用法,其实一般的安装程序用上面的命令大概就能解决了。主要还是想介绍思路:先考虑使用一般命令和模拟键盘动作,再考虑复杂命令,最后用相对不精确的模拟鼠标。
学习AutoIT和其它学习一样,多思考,多练习,你一定会学的很好。
1.关于ctrl+shift+其他键如:ctrl+shift+f 时,建议把shift放在前面。成为:send("+!f")如果send("!+f")有事会调出输入法。因为ctrl+shift是各种输入法的切换方式。
2.关于(ControlSetText和ControlSend)ControlSend ( "title", "text", "classnameNN", "string" [, flag] )ControlSetText ( "title", "text", "classnameNN", "new text" )
如:Controlsend("last","","Edit1","http://www.1msoft.com"& @CRLF)ControlSetText ( "last", "", "Edit1", "http://www.1msoft.com" )controlsend 有时是把新的字符串追加到编辑框中,他后面可以带@CRLF,那即在输入后,可以发送一个回车符。而controlsettext肯定是把新的字符串替换了原来的数值,且后面不能带@CRLF,带了,也无效。


