AU3入门教程.docx
- 文档编号:3729808
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:57
- 大小:1.36MB
AU3入门教程.docx
《AU3入门教程.docx》由会员分享,可在线阅读,更多相关《AU3入门教程.docx(57页珍藏版)》请在冰豆网上搜索。
AU3入门教程
AU3入门教程
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AU3爱好者联盟虫子樱桃出品
=====前言=====
在看这本小小的电子书之前,也许您也和当初的我一样,不知道Au3是何种东西,也许您只是有听说过,却一直没有时间来试一试。
结识Au3完全是一个偶然,在去年夏天的时候,偶然在网上看见了SkyFree大大的《Let'sautoit》这本书,没事的时候,看了看,做了点笔记,但是完全不懂。
后来第二年我所学的专业要学习网页编程,自己硬着头皮去看了一点VbScript的书籍和视频。
后来又迷上系统精简。
偶然一天,又得到SkyFree大大的《XP不完全攻略》,里面有Autoit的常用函数,因为好奇,就自己谷歌了一个Autoit的汉化版,照着帮助看,看了好久,完全没有进展,然后就尝试写一些小软件,不明白的就看帮助文档,后来才渐渐得明白---------AU3是要在练习中才能明白的。
希望这本小册子一样的电子书,能够让同样喜欢AU3的您,有惊喜,有收获!
AU3爱好者联盟虫子樱桃
2010年9月26日
目录
零、AU3的下载与安装AU3的下载AU3的安装
我们的第一个AU3程序一、基本概念
变量与常量数据类型判断与循环之判断判断与循环之循环
二、常用函数串讲
【1】简单的对话框--msgbox函数
【2】显示一个输入框--inputbox函数
【3】关机函数shutdown
【4】执行一个程序
【5】将窗口玩转到底--其他几个与窗体相关的函数
【7】窗口是这样练成的
【8】键鼠模拟--将自动化进行到底
【9】字符串操作
【10】FileInstall
【11】_FileListToArray
篇外篇
你DllCall了吗?
四、后记
感谢
零、AU3的下载与安装
AU3的下载
Au3的原作者是JonathanBennett及AutoIt小组,他们的官方网站是载一个原版耍耍,不过俺英文不咋的,虽然说基本上看得明白一些,但是看久了还是会头疼。
还好,国人作出了汉化版。
大家可以谷歌一下“AUTOIT中文”,找到ACN的官网
AU3的安装
将下载下来的Au3双击运行,安装即可。
一般的杀毒软件可能会把AU3报为病毒,设置为信任即可,如果您的杀毒软件直接把Au3给消灭了,建议您卸载该杀毒软件换个小AOR者小红伞或者不玩Au3OR裸奔。
.
等您的电脑上安装好了Au3,好吧,给自己加油一下!
因为前面的一些知识可能因为是理论,比较枯燥,但是请确保您心中只有一个信念:
IloveAu3verymuch!
我们的第一个AU3程序都说光说不练是假把式,好吧,那咱来写咱们的第一个程序。
首先建立一个AU3文件,有两种方法
【方法1】在桌面找到SCITE编辑器,选择“文件--新建脚本”然后“文件--文件另存为”即可。
当然您可以先写代码,然后再“文件--保存脚本”。
呵呵
【方法2】使用这种方法的前提是您之前运行了SCITE编辑器,如果您之前没有运行
SCITE编辑器,在新建中是不会有下图中新建的项目的。
另外在Win7中好像用AU3好像也有一些问题。
至于是啥问题,因为我很久没有用win7了周围也没有用win7的同学,也不好跟大家具体说。
O(∩_∩)O~
接下来就是输入脚本啦。
用SCITE编辑器打开刚才新建的脚本(当然其他文本编辑器
也可以,只要文件扩展名是au3就行),输入以下代码:
MsgBox(0,"hello","我的第一个AU3程序")保存,然后选中脚本文件
运行脚本
好了,接下来让我们正式进入AU3的学习!
一、基本概念
变量与常量
变量与常量在AU3中都是以“$”为开头的一些东东,那么他们有何区别呢?
听俺慢慢道来。
变量
最近看黑羽的《AS3殿堂之路》里面有一个说法比较形象,原话是:
初学者往往误以为变量就是数据,其实上并不是这样,变量好比是一个遥控器,指向我们要操作的数据。
对变量进行操作,变量指向的数据就会发生相应的变化。
变量必须先申明再使用,不然编译器会报错。
那么为什么要先申明变量呢?
道理很简单,你必须先告诉FlashPlayer建立一个遥控器,才能给遥控器起名字,并使用这个遥控器。
不然,你觉得FlashPlayer能怎么做呢?
遥控器连名字都没有。
FlashPlayer怎么找到并操作它呢?
当然,黑羽说的是ActionScript,不是我们说的AU3(在以后的文章里,我们就使用Autoit通俗的叫法AU3来代替了),但是他们之间是有很多共通之处的。
虽然AU3的语法不如ActionScript那样严格,在使用一个变量之前,可以不申明就使用(不申明就使用,就得赋值,当然包括赋值为一个变量与赋值为一个常量,后面我们会讲到),但是我们不建议不申明变量就使用,因为对于很多语法检查严格的脚本甚至语言来说,这样是一个不好的习惯,坏习惯就好像抽烟,是很难戒掉的。
您可以把变量想象成一根电线,而把您与电脑分别想成供电器与用电器。
简单来说就是下面的图示:
图一用户通过变量来给程序提供“电能”。
在Au3中申明变量一般使用Dim来进行,当您申明一个变量时,您可以不立即赋值给它,但是您必须申明一下它,这样有两个好处:
一是告诉系统,您要建立一个变量,让系统在内存中开辟一个地方,呵呵,就好比您上银行,提前挂个号,而您并不立即去。
当然您可以在要使用变量的时候再来申明,不过,当您的代码很长很长的时候,通过查找找变量是件很痛苦的事情。
二是,使用变量之前先申明是一个好习惯,因为AU3毕竟只是一种脚本语言而已,很多事情还得靠我们学习高级语言来实现。
下面是一些申明变量的正确写法:
【1】Dim$a=1
Dim$b=2[注]这种方式用在变量比较少的情况下,变量多的时候,咕~~(╯﹏╰)b,不敢想象啊!
肯
定十分冗长。
【2】Dim$a,$b
$a=1
$b=2[注]这种赋值的形式一般用在变量比较多的时候,各个变量用英文的逗号分隔开来。
代
码较前者来说会短一点。
【3】Dim$a=1,$b
$b=2[注]这种赋值形式,测试可用。
是一种不很规范的赋值形式。
不推荐使用。
常量说完变量,接着我们来说下常量。
所谓常量,就是不变的量,O(∩_∩)O~,譬如说我们常见的π,它就是个常量,在
Au3中,常量用Const来进行申明。
Const告诉系统在内存中开辟一个类似于“一次性存储”
(有点像光盘一次性刻录的样子,常量被赋值后,一般是"只读"的,不会被轻易改变的)的空间。
如果对已经申明并赋值的常量进行赋值,脚本将会报错。
例如,我们写如下脚本:
Const$a=3
$a=6
MsgBox(0,"",$a)
运行之,会看见如图二提示:
图二
同样地,对于一个已经存在的变量,常量也是不能够将其拿来申明的。
看看下面例子:
Dim$a
Const$a=12
MsgBox(0,"",$a)
运行后,出现如图三对话框:
图三
常量的赋值形式基本和变量的赋值形式差不多,只是Dim被换成Const而已。
为节约篇幅,这里就不在赘述了。
数据类型
在编程中,存在很多种数据类型,那么多的数据类型有什么用呢?
举个例子,譬如说你是个会很多种语言的语言学家,如果你看见黄种人那么你肯定会自然而然地想到用亚洲地区的语言跟他交流。
但是如果你没有这个概念,那么你就会一种语言一种语言地使用,跟他交流,这样势必会造成很多麻烦。
数据类型就是类似于见到黄种人想到用亚洲语言的思维方式一样的一种东东。
也许这种说法不是很妥帖,但是基本就是这个意思。
合理使用不同的数据类型,可以提高程序执行效率。
数据类型的本质,我觉得就是一种分类,windows的核心我觉得也在于此。
(本人不是学编程的,所以说法难免有不妥之处,敬请谅解!
)文件管理效率的提高,也通常从分类的详细程度来提高。
Au3中数据类型主要有数字型、字符型、布尔型。
数字型
简单来说,数字型就是我们常见的阿拉伯数字0123456789,呵呵。
他们常用来参与数值运算(加减乘除之类的)或者作为排列顺序的工具以及一些函数的参数等。
字符型
字符型数据即是那些不参与算术运算的字符、汉字、数字等。
在AU3中一般字符型数据都由英文的双引号("")或者英文的单引号('')包括,未参与数值运算和运算的数字型数据也可看作字符型数据(个人观点,仅供参考)。
下面简单列出一些字符型数据
"欢迎光临Au3爱好者联盟""1234"
3*2
3
布尔值
布尔值就是“真”和“假”这两位。
真的就是true,假的就是false。
在二进制中一般用
1来表示真,而用0来表示false。
如果您认真看帮助的话,您会发现,很多函数都是有返回值的,而且大多数是1表示函数执行成功而用0来表示函数执行失败或者与预期值不一致。
当然,布尔值的功能不只于此,它还可以用来作为一个“开关”,这种用法对于一些小程序是很实用的。
下面的代码只是示例,不懂没有关系,以后会慢慢讲到。
打开AU3自带的SCITE编辑器,输入以下内容:
#include
#include
#include
#include
Dim$Form1,$Button1,$Button2,$cddrive
Global$status=True
$cddrive=DriveGetDrive("cdrom")
$Form1=GUICreate("光驱开关",255,83,192,114)
$Button1=GUICtrlCreateButton("光驱弹出/关闭",8,24,91,25)
$Button2=GUICtrlCreateButton("退出",112,24,75,25)GUISetState(@SW_SHOW)
While1
$nMsg=GUIGetMsg()Switch$nMsg
Case$GUI_EVENT_CLOSEExit
Case$Button1
If$status=TrueThen
CDTray($cddrive[1],"open")
$status=False
ElseIf$status=FalseThen
CDTray($cddrive[1],"closed")
$status=True
Else
MsgBox(0,"AU3爱好者联盟提示你","程序出错,您可能没有光驱。
")EndIf
Case$Button2
Exit
EndSwitchWEnd保存,运行之。
呵呵。
希望大伙能够喜欢。
判断与循环之判断对于我们人来说,判断就是根据由一些客观现象结合自身的道德、理智及自身利益来对
一件事情进行的主观感知。
对于一个想很好地活在这个世界的人来说,良好的判断是非险恶的能力是必须的。
同样地,对于一个程序来说,一个良好的判断机制也是决定其成败与否的要素之一。
在AU3,判断主要有以下两种:
If判断
select与switch判断接下来,我们就分别讲讲它们是怎样的。
If判断
中文表示
脚本语言表示
如果下雨
那么我不去参加会议
<--------等价于------->
ifitrainthen
I'llnotattendthemeetingendif
if判断的基本结构是if...then...endif,意思是“如果..那么...”,懂点英语的兄弟可以看看我这个句子Ifitrains,I'llnotattendthemeeting.逻辑结构是
实际上if...then..endif这个结构是隐含了一个对布尔值的引用的,例如下面这两个代码是等
价的。
If2=2thenDim$a,$b,$c
MsgBox(0,"您好","您的命题正确")$a=2
EndIf$b=2
$c=($a=$b)
If$c=TrueThenMsgBox(0,"您好","您的命题正确")EndIf
通常情况下,if..then..endif在一个语句中是要写全的,否则会报错,我们试试把上面例子中的endif删掉,运行该脚本,会得到图四的提示
图四
但是,当if..then..endif之后的then只有一个动作或者函数且与if..then..写在同一行的时候,
endif可以省略。
如上例中的例子写成如下格式,运行却是正确的。
Dim$a,$b,$c
$a=2
$b=2
$c=($a=$b)
If$c=TrueThenMsgBox(0,"您好","您的命题正确")
图五
当然,if..then..endif这个判断结构只能用来判断一种情况,要是要判断与这种情况的相反情形,就可以用到if..then..else..endif这个结构。
这个结构呢,咱也给个英文句子(不是为了炫耀咱的英文啊,我英文也不好的):
Whydon'tyoucomealittleearlier,everybodyelsehascome.意思是“你为什么不早点来啊,其他人都来了”,仔细体会这个句子,else是带一种排除的意味在里面的。
在这个英语句子中,是说的“除了'你之外的所有人”,在if..then..else..endif这个结构中,则是说的排除if所说情况之外的情形。
看看下面两段代码,它们是基本等价的:
代码一
Dim$a,$b
$a=InputBox("$a与$b值比较","请在这里输入一个$a值,$b已经被赋值为10")
$b=10
If$a>$bThen
MsgBox(0,"$a与$b值比较","$a>$b")
Else
MsgBox(0,"$a与$b值比较","$a<$b或者$a=$b或者输入的$b值无法与$a进行比较或者
您没有输入")EndIf
代码二
Dim$a,$b
$a=InputBox("$a与$b值比较","请在这里输入一个$a值,$b已经被赋值为10")
$b=10
IfStringIsDigit($a)=1And$a>$bThenMsgBox(0,"$a与$b值比较","$a>$b")IfStringIsDigit($a)=1And$a=$bThenMsgBox(0,"$a与$b值比较","$a=$b")IfStringIsDigit($a)=1And$a<$bThenMsgBox(0,"$a与$b值比较","$a<$b")If$a=""ThenMsgBox(0,"$a与$b值比较","您没有输入")
IfStringIsDigit($a)=0And$a<>""ThenMsgBox(0,"$a与$b值比较","输入的$b值无法与$a进行比较")
您会发现,前面那个代码简洁了很多。
呵呵,这就是这个Else的作用。
运行效果如图六:
图六
PS:
其实并非字符串无法与数字型数据进行大小比较,只是我们这里为了方便理解,要求输入的必须要为数字。
貌似经过我测试,任何非数字的字符串的数据在参与数值运算的时候,值都是0。
简单一个例子:
Dim$a,$b
$a=InputBox("$a的乘法","请在这里输入一个$a值,届时将执行$a*10")MsgBox(0,"",$a*10)
运行后的结果如图七
图七
加了一个else,判断就那么强了,那么现在咱们现在请出if判断家族中最牛的if..then..elseif..then..else..endif同学。
这种结构呢,可以说是前面两者的杂合,因为它兼具两者的优点,而且判断更加准确。
看看下面的例子。
Dim$a,$b
$a=InputBox("$a与$b值比较","请在这里输入一个$a值,$b已经被赋值为10")
$b=10
IfStringIsDigit($a)=1And$a>$bThen
MsgBox(0,"$a与$b值比较","$a>$b")ElseIfStringIsDigit($a)=1And$a<$bThenMsgBox(0,"$a与$b值比较","$a<$b")ElseIfStringIsDigit($a)=1And$a=$bThenMsgBox(0,"$a与$b值比较","$a=$b")
Else
MsgBox(0,"$a与$b值比较","程序出错,您没有输入或者您输入的不是数字")
EndIf
select与switch判断着俩判断有点像孪生兄弟,所以把他们凑一块介绍给大家了。
他们分别是select...case和
switch...case.select..case和上面的if系列判断是十分类似的,但通常用于判断多条件,这样会比if清晰很多。
如下面这个例子:
If结构
Dim$num=InputBox("AU3爱好者联盟提示您","请您输入一个数字")IfMod($num,2)=0Then
MsgBox(0,"您好","你输入的是一个偶数")ElseIfMod($num,3)=0Then
MsgBox(0,"您好","你输入的这个数可以被三整除")ElseIfMod($num,5)=0Then
MsgBox(0,"您好","你输入的这个数可以被五整除")
Else
MsgBox(0,"呵呵","和程序预期不同")
EndIf
Select结构
Dim$num
$num=InputBox("AU3爱好者联盟提示您","请您输入一个数字")Select
CaseMod($num,2)=0
MsgBox(0,"您好","你输入的是一个偶数")CaseMod($num,3)=0
MsgBox(0,"您好","你输入的这个数可以被三整除")CaseMod($num,5)=0
MsgBox(0,"您好","你输入的这个数可以被五整除")
CaseMod($num,2)<>0AndMod($num,3)<>0AndCaseMod($num,5)<>0
MsgBox(0,"呵呵","和程序预期不同")EndSelect
但是我们将if结构那个代码改写成这样,就能实现与上面代码不同的功能。
If结构
Dim$num=InputBox("AU3爱好者联盟提示您","请您输入一个数字")IfMod($num,2)=0ThenMsgBox(0,"您好","你输入的是一个偶数")
IfMod($num,3)=0ThenMsgBox(0,"您好","你输入的这个数可以被三整除")
IfMod($num,5)=0ThenMsgBox(0,"您好","你输入的这个数可以被五整除")
IfMod($num,2)<>0AndMod($num,3)<>0AndMod($num,5)<>0ThenMsgBox(0,"呵呵","和程序预期不同")
Select结构
Dim$num
$num=InputBox("AU3爱好者联盟提示您","请您输入一个数字")Select
CaseMod($num,2)=0
MsgBox(0,"您好","你输入的是一个偶数")EndSelect
Select
CaseMod($num,3)=0
MsgBox(0,"您好","你输入的这个数可以被三整除")EndSelect
Select
CaseMod($num,5)=0
MsgBox(0,"您好","你输入的这个数可以被五整除")EndSelect
Select
CaseMod($num,2)<>0AndMod($num,3)<>0AndMod($num,5)<>0
MsgBox(0,"呵呵","和程序预期不同")EndSelect
呵呵,看明白没,要执行几次判断就写几次完整的判断结构,不过在以后的GUI事件编程中,建议不要使用后者嵌套在原有的select结构中,那样会很混乱的,建议使用if.。
呵呵,个人见解,仅供参考。
Switch的用法和select差不多,就不多讲了。
呵呵。
[注]在Select或者Switch块中,执行完一个语句之后,其他语句将被忽略,此时可以使用ContinueCase。
在一个Select或者Switch块中,一个case执行结束将继续执行下一个Case的表达式(语句).执行
ContinueCase将告诉AutoIt停止执行当前的case,并开始执行下一个case.尝试在一个Select或者Switch
结构外执行ContinueCase将会得到一个错误.。
帮助中的例子:
$msg=""
$szName=InputBox(Default,"请输入一个单词","","M",Default,Default,Default,Default,10)Switch@error
Case2
$msg="超时"ContinueCase
Case1;继续上一Case事件
$msg&="取消"Case0
Switch$szName
Case"a","e","i","o","u"
$msg="这是元音字母"Case"QP"
$msg="数学"
Case"Q"to"QZ"
$msg="自然科学"CaseElse
$msg="其它"
EndSwitch
CaseElse
$msg="出现了非常可怕的错误."EndSwitch
MsgBox(0,Default,$msg)
判断与循环之循环
AU3里面的几种循环结构
For...NextWhile...WEndDo...
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AU3 入门教程