AU3自动安装脚本基础

Au3脚本函数用法中文说明
Au3脚本,也就是AutoIt3 Windows自动安装脚本语言,用过Au3脚本的朋友都知道它的强大.和带来的方便,但它切没有中文教材,就连以前的一个中文论坛也在前段时间,莫明奇妙的关啦门,当然这也不能怪他们.他们也不是管方网站.这样一来就给那些想学Au3脚本切英文不好或没有学过其它语言的朋友带来了极大的不便,其实Au3脚本不难学,难的是看不懂它帮助文件里写的是什么,今天翻译了一些Au3的常用函数用法,希望对一些想学的朋友有些帮肋…

{系统环境变量}

EnvUpdate( )
;更新环境变量
EnvGet ( “变量名称” )
;取环境变量
ClipGet ( )
;取剪辑板文本
EnvSet ( “变量名称” [, “值”] )
;置环境变量
ClipPut ( “文本” )
;置剪辑板文本

{文件,目录,磁盘管理}

IniRead (“文件名”, “功能区”, “关键字”, “缺省值” )
;Ini文件读关键字的值
IniDelete ( “文件名”, “功能区”, “关键字” )
;Ini文件删除关键字
IniWrite ( “文件名”, “功能区”, “关键字”, “值” )
;Ini文件写关键字的值
FileInstall ( “源文件”, “目标文件” [,参数] )
;安装文件
FileFindFirstFile ( “文件名” )
;查找文件(第一次)
FileFindNextFile ( 文件号)
;查找文件(继续)
FileRecycle ( “源文件” )
;放入回收站
FileChangeDir ( “目录” )
;改变当前目录
FileCreateShortcut ( “文件名”, “快捷方式名” [, “工作目录”, “args”, “desc”, “图标”, “热键”] )
;建立快捷方式
DirCreate ( “目录” )
;目录创建
DirCopy ( “源目录”, “目标目录” [,参数] )
;目录复制
DirRemove ( “目录” [,参数] )
;目录删除
DirMove ( “源目录”, “目标目录” [,参数] )
;目录移动
DriveGetDrive ( “类别” )
;驱动器查找
FileGetLongName ( “完整路径和文件名” )
;取长文件名
DriveSpaceTotal ( “路径” )
;取磁盘空间
DriveSpaceFree ( “路径” )
;取磁盘剩余空间
FileGetShortName ( “完整路径和文件名” )
;取短文件名
DriveGetLabel ( “路径” )
;取驱动器卷标
DriveGetType ( “路径” )
;取驱动器类型
DriveGetFileSystem ( “路径” )
;取驱动器文件格式
DriveGetSerial ( “路径” )
;取驱动器序列号
DriveStatus ( “路径” )
;取驱动器状态
FileGetVersion ( “文件名” )
;取文件版本
FileGetSize ( “文件名” )
;取文件大小
FileGetTime ( “文件名” [,选项] )
;取文件日期
FileGetAttrib ( “文件名” )
;取文件属性
FileSaveDialog ( “标题”, “初始目录”, “文件类型” [,选项] )
;文件保存对话框
FileOpen ( “文件名”,打开方式 )
;文件打开
FileOpenDialog ( “标题”, “初始目录”, “文件类型” [,选项] )
;文件打开对话框
FileRead ( 文件号或”文件名”,字符个数 )
;文件读
FileReadLine ( 文件号或”文件名” [,行号] )
;文件读行
FileCopy ( “源文件”, “目标文件” [, 参数] )
;文件复制
FileClose ( 文件号 )
;文件关闭
FileSelectFolder ( “提示文本”, “根目录”,参数 )
;文件夹选择
FileDelete ( “路径” )
;文件删除
FileExists ( “路径” )
;文件是否存在
FileWrite ( 文件号或”文件名” , “内容” )
;文件写
FileWriteLine ( 文件号或”文件名” , “内容”)
;文件写行
FileMove ( “源文件”, “目标文件” [,参数] )
;文件移动
DriveSetLabel ( “路径”, “卷标名” )
;置驱动器卷标
FileSetTime ( “文件”, “日期”, 选项 [,参数] )
;置文件日期
FileSetAttrib ( “文件”, “+-RASHNOT” [,参数] )
;置文件属性

{键盘控制}

Send ( “按键” [,参数] )
;发送
HotKeySet ( “热键” [, “自定义功能函数”] )
;置热键

{鼠标控制}

MouseGetCursor ( )
;取鼠标指针类型
MouseGetPos ( )
;取鼠标坐标
MouseDown ( “按键” )
;鼠标按下
MouseClickDrag ( “按键”, 第一点横坐标, 第一点纵坐标, 第二点横坐标, 第二点纵坐标[,速度] )
;鼠标按住拖动
MouseClick ( “按键” [,横坐标,纵坐标[,次数 [,速度 ]]] )
;鼠标点击
MouseUp ( “按键” )
;鼠标放开
MouseMove ( 横坐标,纵坐标 [,速度] )
;鼠标移动

{数学函数}

Exp ( n )
;e的n次平方
BitNOT ( 数值 )
;非运算
BitOR ( 值1,值2 )
;或运算
Log ( 数字或数学表达式 )
;取对数
ACos (数字或数学表达式)
;取反余弦
ATan ( 数字或数学表达式 )
;取反正切
ASin ( 数字或数学表达式)
;取反正弦
Abs (数字或数学表达式)
;取绝对值
Mod ( 值1,值2 )
;取模数
Sqrt ( 数字或数学表达式 )
;取平方根
Random ( [[最小值 ,]最大值] )
;取随机数
Cos (数字或数学表达式)
;取余弦
Tan ( 数字或数学表达式 )
;取正切
Sin ( 数字或数学表达式 )
;取正弦
Round (数字或数学表达式[,小数点后保留位数] )
;四舍五入
BitXOR ( 值1,值2 )
;位或运算
BitShift ( 值,移动数 )
;位移运算
BitAND ( 值1,值2 )
;与运算

{信息框,对话框}

ProgressOn ( “标题”, “主文本” [, “子文本” [, 横坐标 [, 纵坐标[,选项]]]] )
;打开进度条窗口
ProgressOff ( )
;关闭进度条窗口
SplashOff ( )
;关闭置顶窗口
ProgressSet ( 进度值 [, “子文本” [, “主文本”]] )
;进度设置
InputBox ( “标题”, “提示” [, “缺省文本” [, “密码符号” [,宽度,高度 [,左边,右边[,等待时间]]]]] )
;输入框
MsgBox ( 按钮参数, “标题”, “信息文本” [,等待时间] )
;信息框
SplashImageOn ( “标题”, “图像文件名” [,宽度 [,高度 [,横坐标[,纵坐标 [,选项]]]]] )
;置顶图像窗口
SplashTextOn ( “标题”,”文本”[,宽度[,高度[,横坐标[,纵坐标[,选项[,”字体名称”[,”字体大小”[,”字体重量”]]]]]]]] )
;置顶文本窗口
ToolTip ( “提示文本” [,横坐标,纵坐标] )
;置提示文本
TrayTip ( “标题”, “提示文本”, 等待时间 [,图标选项] )
;置托盘气泡提示(2000/xp)

{系统函数}

SoundPlay ( “文件名” [,等待方式] )
;播放声音
Call ( “自定义功能函数” )
;调用自定义功能函数
CDTray ( “盘符”, “开关命令” )
;光驱开关
AdlibEnable ( “自定义功能函数” [,间隔时间] )
;激活意外窗口处理
TimerStop ( 时间标志 )
;计时结束
TimerStart ( )
;计时开始
Exit (0)
;结束
AdlibDisable ( )
;禁止意外窗口处理
BlockInput ( 参数 )
;禁止用户输入
Break ( 参数 )
;禁止用户退出
MemGetStats ( )
;取内存状态
AutoItWinGetTitle ( )
;取系统窗口标题
PixelGetRGB(横坐标,纵坐标)
;取像素点RGB三色
PixelGetColor ( 横坐标 , 纵坐标 )
;取像素点颜色
PixelSearch ( 左边, 顶边, 右边, 底边, 颜色值 [, shade-variation] [,间隔像素数]] )
;搜索颜色
URLDownloadToFile ( “连接地址及文件名”, “存储到的文件名” )
;下载文件
SetError ( 值 )
;置变量@error
AutoItWinSetTitle ( “新标题” )
;置系统窗口标题
SoundSetWaveVolume ( 音量大小 )
;置音量

{进程管理}

ProcessWait ( “进程” [,等待时间] )
;等待进程存在
ProcessWaitClose ( “进程” [,等待时间] )
;等待进程关闭
ProcessClose ( “进程” )
;关闭进程
Shutdown ( 关机方式 )
;关机
ProcessExists ( “进程” )
;进程是否存在
Sleep ( 时间 )
;睡眠/暂停运行
RunAsSet ( [“用户名”, “domain”, “密码”] )
;以别人身份登录运行
RunWait(@ComSpec & ” /c ” & ‘DOS命令行’, “”,参数)
;运行DOS命令
RunWait ( “文件名” [, “工作目录” [, 参数]] )
;运行并等待结束
Run ( “文件名” [, “工作目录” [,参数]] )
;运行程序

{注册表管理}

RegRead ( “键路径”, “键名” )
;读键值
RegDelete ( “键路径” [, “键名”] )
;删除键
RegWrite ( “键路径”, “键名”, “类型”, 值 )
;写键值

{字符串管理}

StringFormat ( “格式”, $var1 [, … $var32] )
;格式化字符串
StringLen ( “字符串” )
;取长度
StringRight ( “字符串”,字符数 )
;取右边
StringMid ( “字符串”,开始位置,字符数 )
;取中间
StringLeft ( “字符串”,字符数 )
;取左边
StringStripCR ( “字符串” )
;删除回车符
StringStripWS ( “字符串”,参数 )
;删除空格
StringTrimRight ( “字符串”,字符数 )
;删除右边
StringTrimLeft ( “字符串”,字符数 )
;删除左边
StringIsASCII ( “字符串” )
;是否为ASCII
StringIsDigit ( “字符串” )
;是否为阿拉伯数字
StringIsUpper ( “字符串” )
;是否为大写
StringIsFloat ( “字符串” )
;是否为浮点小数
StringIsSpace ( “字符串” )
;是否为空
StringIsXDigit ( “字符串” )
;是否为十六进制字符
StringIsAlNum ( “字符串” )
;是否为数字
StringIsLower ( “string” )
;是否为小写
StringIsInt ( “字符串” )
;是否为整数
StringIsAlpha ( “字符串” )
;是否为字母
StringAddCR ( “字符串” )
;添加换行符
StringReplace ( “字符串”, “查找的字符串”, “替换后的字符串” [,数量 [,区分大小写]] )
;文本替换
StringUpper ( “字符串” )
;转换为大写
StringLower ( “字符串” )
;转换为小写
StringInStr ( “字符串”, “字符” [,大小写] )
;字符包含
StringSplit ( “字符串”, “参考符” )
;字符串分离

{变量与转换函数}

IsDeclared ( 变量 )
;变量是否被声明
Asc ( “字符” )
;取Asc码
Eval ( 变量或表达式 )
;取变量值
UBound ( 数组名 [,维数] )
;取数组大小
Int ( 小数或表达式 )
;取整
Chr ( ASC码 )
;取字符
IsAdmin ( )
;是否为管理员
IsNumber ( 变量 )
;是否为数字
IsArray ( 变量 )
;是否为数组
IsFloat ( 变量或数值 )
;是否为小数
IsInt ( 变量或数值 )
;是否为整数
IsString ( 变量 )
;是否为字符
Dec ( “十六进制” )
;转换为十进制
Hex ( 十进制数, 长度 )
;转换为十六进制
Number ( 表达式 )
;转换为数字
String ( 表达式 )
;转换为字符

{窗口管理}

WinExists ( “标题” [, “文字”] )
;窗口是否存在
WinActive ( “标题” [, “文字”] )
;窗口是否激活
WinSetOnTop ( “标题”, “文字”, 参数 )
;窗口置顶
WinWait ( “标题” [, “文字” [,等待时间]] )
;等待窗口出现
WinWaitClose ( “标题” [, “文字” [,等待时间]] )
;等待窗口关闭
WinWaitActive ( “标题” [, “文字” [,等待时间]] )
;等待窗口激活
WinWaitNotActive ( “标题” [, “文字” [,等待时间]] )
;等待窗口取消激活状态
WinMenuSelectItem ( “标题”,”文字”,”菜单项1″ [,”菜单项2″ [,”菜单项3″……]] )
;调用菜单
WinClose ( “标题” [, “文字”] )
;关闭窗口
WinMinimizeAllUndo ( )
;恢复“全部最小化”的窗口
WinActivate ( “标题” [, “文字”] )
;激活窗口
WinKill ( “标题” [, “文字”] )
;强制关闭窗口
WinGetTitle ( “标题” [, “文字”] )
;取窗口标题
WinGetHandle ( “标题” [, “文字”] )
;取窗口句柄
WinGetClientSize ( “标题” [, “文字”] )
;取窗口客户区大小
WinGetClassList ( “标题” [, “文字”] )
;取窗口类列表
WinGetText ( “标题” [, “文字”] )
;取窗口文字
WinGetCaretPos ( )
;取窗口中控件坐标
WinGetState ( “标题” [, “文字”] )
;取窗口状态
WinGetPos ( “标题” [, “文字”] )
;取窗口坐标
WinMinimizeAll ( )
;全部最小化
WinMove ( “标题”, “文字”,横坐标,纵坐标[,宽度 [,高度]] )
;移动窗口
WinSetTitle ( “标题”, “文字”, “新标题” )
;置窗口标题
WinSetState ( “标题”, “文字” ,参数 )
;置窗口状态

{控制管理}

ControlCommand ( “窗口标题”, “窗口文字”, “控件类名称”, “命令”, “选项” )
;发送控制命令
ControlSend ( “窗口标题”, “窗口文字”, “控件类名称”, “文本” [,参数] )
;发送文本到控件
ControlDisable ( “窗口标题”, “窗口文字”, “控件类名称” )
;禁止控件
ControlGetFocus ( “窗口标题” [, “窗口文字”] )
;取焦点控件的类名称
ControlGetPos ( “窗口标题”, “窗口文字”, “控件类名称” )
;取控件位置
ControlGetText ( “窗口标题”, “窗口文字”, “控件类名称” )
;取控件文字
StatusbarGetText ( “窗口标题” [, “窗口文字” [, 状态栏部分]] )
;取状态栏文本
ControlSetText ( “窗口标题”, “窗口文字”, “控件类名称”,”新文本” )
;设置控件文本
ControlClick ( “窗口标题”, “窗口文字”, “控件类名称” [,鼠标按键] [,点击次数]] )
;鼠标点击控件
ControlShow (“窗口标题”, “窗口文字”, “控件类名称”)
;显示控件
ControlMove ( “窗口标题”, “窗口文字”, “控件类名称”,横坐标,纵坐标[,宽度 [,高度]] )
;移动控件
ControlHide (“窗口标题”, “窗口文字”, “控件类名称”)
;隐藏控件
ControlEnable ( “窗口标题”, “窗口文字”, “控件类名称” )
;允许控进
ControlFocus ( “窗口标题”, “窗口文字”, “控件类名称” )
;置焦点

{系统设置}

AutoItSetOption ( “MustDeclareVars”,参数 )
;变量是否预先声明
AutoItSetOption ( “WinTitleMatchMode”,参数 )
;标题匹配方式
AutoItSetOption ( “WinWaitDelay”,参数 )
;窗口等待延迟
AutoItSetOption ( “SendAttachMode”,参数 )
;发送跟随模式
AutoItSetOption ( “SendKeyDelay”,参数 )
;发送延迟
AutoItSetOption ( “CaretCoordMode”,参数 )
;符号坐标匹配方式
AutoItSetOption ( “SendCapslockMode”,参数 )
;恢复大小写状态
AutoItSetOption ( “WinDetectHiddenText”,参数 )
;检测隐藏文字
AutoItSetOption ( “WinSearchChildren”,参数 )
;检测子窗口
AutoItSetOption ( “SendKeyDownDelay”,参数 )
;键盘按下延迟
AutoItSetOption ( “MouseClickDownDelay”,参数 )
;鼠标按下延迟
AutoItSetOption ( “MouseClickDelay”,参数 )
;鼠标单击延迟
AutoItSetOption ( “MouseClickDragDelay”,参数 )
;鼠标拖动延迟
AutoItSetOption ( “MouseCoordMode”,参数 )
;鼠标坐标匹配方式
AutoItSetOption ( “ExpandEnvStrings”,参数 )
;特殊符号扩展
AutoItSetOption ( “TrayIconDebug”,参数 )
;托盘代码提示
AutoItSetOption ( “WinTextMatchMode”,参数 )
;文字匹配方式
AutoItSetOption ( “PixelCoordMode”,参数 )
;像素点坐标匹配方式
AutoItSetOption ( “TrayIconHide”,参数 )
;隐藏托盘
AutoItSetOption ( “RunErrorsFatal”,参数 )
;遇错终止

首页,我们应该安装autoIt3,下载地址及安装方法一会儿附上。
其次,自动安装整个过程的公式,如下
Run(“程序文件名”)

WinWaitActive(“软件的标题”,”软件界面中的关键字”)

ControlClick(“软件的标题”,”软件界面中的关键字”,”[class:互动的类型;INSTANCE:序号]”)

Send(“文字”)

公式分析:
Run:是系统自带函数,用于运行指定的软件;
程序文件名:就是你要运行的程序名,包括拓展名,也可以加上路径,如:c:\download\abc.exe
WinWaitActive:这个函数是用于确认出现的程序界面
软件的标题:就是软件的标题,界面最上面的那个(太简单了,不懂得说)
软件界面中的关键字:在安装软件的过程中,会出现很多安装界面,每个界面的描述都是不一样的,我把这里每个界面独有的那些字就做“关键字”
ControlClick:这个函数用于向系统发出点击命令
class:类型,这里的互动类型可以有很多种,比如button(按钮),Edit(对话框)等,这个可以用“窗口信息工具”来检测
INSTANCE:上面那个互动类型在界面上的序号,这个可以用“窗口信息工具”来检测
send:发送文字,这些文字可以是软件的序列号或者安装路径之类的。

举例:以下例子是我昨晚安装nero6的源码

MsgBox(1, “询问”, “您好,你将安装Nero,确定吗?”)
Run(“Nero.exe”)
WinWaitActive(“Nero Burning ROM安装向导”,”欢迎使用Nero Burning ROM的安装向导”)
ControlClick(“Nero Burning ROM安装向导”,”欢迎使用Nero Burning ROM的安装向导”,”[class:Button;INSTANCE:2]”)
WinWaitActive(“Nero Burning ROM安装向导”,”许可证协议。”)
ControlClick(“Nero Burning ROM安装向导”,”许可证协议。”,”[class:Button;INSTANCE:8]”)
ControlClick(“Nero Burning ROM安装向导”,”许可证协议。”,”[class:Button;INSTANCE:2]”)
WinWaitActive(“Nero Burning ROM安装向导”,”客户信息。”)
ControlClick(“Nero Burning ROM安装向导”,”客户信息。”,”[class:Edit;INSTANCE:3]”)
send(“1A23-0809-9030-2363-2601-9258”)
ControlClick(“Nero Burning ROM安装向导”,”客户信息。”,”[class:Button;INSTANCE:2]”)
WinWaitActive(“Nero Burning ROM安装向导”,”向导已成功完成安装。”)
ControlClick(“Nero Burning ROM安装向导”,”向导已成功完成安装。”,”[class:Button;INSTANCE:11]”)
ControlClick(“Nero Burning ROM安装向导”,”向导已成功完成安装。”,”[class:Button;INSTANCE:13]”)
ControlClick(“Nero Burning ROM安装向导”,”向导已成功完成安装。”,”[class:Button;INSTANCE:3]”)

自动安装脚本Autoit制作入门与技巧 自动安装脚本制作入门(一)

一、制作目的和原则
说到自动安装,淠康木褪悄D馐侄 僮鳎 远 瓿啥灾付ò醇 牡慊骱褪淙胫付 谌荩 砜赡艹鱿值那榭觯 钪胀瓿沙绦虻陌沧昂蜕柚谩? 也许有人说这样就明白了,用AutoIt里的MouseClick、Send来完成点击和输入,只要抓好点击的坐标就一切搞定了啊!这当然不能说不是个办法,但做出来的成品可能只能在你自己的电脑上能用,说不定下一次你自己也没法用了。因为每个人的电脑是不一样的,安装窗体在不同分辨率下的位置也是不一样的,如果用这样做的脚本在别人电脑上操作,就会看到鼠标经过N次狂奔后,打开了M个窗口,却没有点到你要的东西(用来整人倒不错)。

我们的目的是让脚本能有效的在其他人电脑上运行安装,处理遇到的情况,完成设置或注册等动作,然后结束。所以制作的原则就是通用、精确和可*

1、 尽量少的用鼠标模拟点击的方法,实在用要也要做到保证点击坐标的可*

原因上面都说了,但有时不得已用到点击坐标时怎么办呢,你先想想吧。后面告诉你我的办法

2、 尽量少用sleep等待语句,而换用其它准确的时间判断语句

有的朋友喜欢用sleep在一个操作后等待一下,来保证脚本的可*性,其实这却是个不可*的做法。因为每台电脑的性能有所差异,在不同的情况下也有差异,在你的电脑上制作脚本时要停顿5秒的,在一台第旧的电脑上可能要等待20秒也不一定。AutoIt里是有解决方法的,比如winwaitactive,winwaitclose等,再不行自己写判断啦!

3、 尽量考虑可能出现的情况

有的程序在安装时会提出一些要求,比如需要更新什么文件或进行什么操作,而且未必在每台电脑上安装时都会出现,这就要我们在做好脚本后多在不同环境测试一下,考虑到一些常见的问题

二、如何学好AutoIt
对于AutoIt我也是个菜鸟,没有什么经验可谈,但我觉得有三点一定要做到
1、充分利用帮助文件。AutoIt的帮助文件写的非常详细,索引和搜索功能使它在查询上非常方便,而且每个命令最后都有例子。有什么问题先找它问问。

有的朋友经常说自己英文不好,其实我的也不怎么样,正好利用这个机会学习一下,再说很多软件在使用时都要用到英文,这方面加强还是有必要的。

2、经常实践。写脚本和编程有几分相似,经常实践,特别在学习新命令时

3、到AutoIt论坛请教。http://www.autoitscript.com/forum/index.php毕竟是AutoIt的官方论坛,高手非常多。全都是英文,大家也练习一下吧。

4、开拓思路,变换方法。和编程一样,很多问题不一定只有一个解决方法,普通方法解决不了时还可以多试试其它方法。

软件自动安装应用脚本命令:

脚本头:

$title=”窗口标题”
Run(“*.exe”)
WinWaitActive($title,”窗口文本”)
ControlClick($title, “窗口文本”, “下一步按钮ID”)

接受条款:

WinWaitActive($title,”请阅读版权许可”)
ControlClick($title, “请阅读版权许可”, “我同意控件ID”)
ControlClick($title, “请阅读版权许可”, “下一步按钮ID”)

输入信息:

WinWaitActive($title,”窗口文本”)
ControlSetText($title, “窗口文本”, “选项框ID”, “信息文本”)
ControlClick($title, “窗口文本”, “下一步按钮ID”)

删除不要的选项:

WinWaitActive($title,”窗口文本”)
ControlCommand($title,”窗口文本”, “选项框ID”, “UnCheck”, “”)
ControlClick($title, “窗口文本”, “下一步按钮ID”)

选中需要要的选项:

WinWaitActive($title,”窗口文本”)
ControlCommand($title,”窗口文本”, “选项框ID”, “Check”, “”)
ControlClick($title, “窗口文本”, “下一步按钮ID”)

关闭程序安装后自启动窗口:

WinWait(“窗口标题”)
WinClose(“窗口标题”)

结束某个进程:

WinWait(“进程名”)
ProcessClose (“进程名”)

脚本结束:

exit
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容