AU3爱好者联盟AU3入门教程 不完整版.docx

上传人:b****0 文档编号:9197606 上传时间:2023-05-17 格式:DOCX 页数:43 大小:725.96KB
下载 相关 举报
AU3爱好者联盟AU3入门教程 不完整版.docx_第1页
第1页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第2页
第2页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第3页
第3页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第4页
第4页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第5页
第5页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第6页
第6页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第7页
第7页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第8页
第8页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第9页
第9页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第10页
第10页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第11页
第11页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第12页
第12页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第13页
第13页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第14页
第14页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第15页
第15页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第16页
第16页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第17页
第17页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第18页
第18页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第19页
第19页 / 共43页
AU3爱好者联盟AU3入门教程 不完整版.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

AU3爱好者联盟AU3入门教程 不完整版.docx

《AU3爱好者联盟AU3入门教程 不完整版.docx》由会员分享,可在线阅读,更多相关《AU3爱好者联盟AU3入门教程 不完整版.docx(43页珍藏版)》请在冰点文库上搜索。

AU3爱好者联盟AU3入门教程 不完整版.docx

AU3爱好者联盟AU3入门教程不完整版

AU3入门教程

 

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

AU3爱好者联盟虫子樱桃出品

=====前言=====

在看这本小小的电子书之前,也许您也和当初的我一样,不知道Au3是何种东西,也许您只是有听说过,却一直没有时间来试一试。

结识Au3完全是一个偶然,在去年夏天的时候,偶然在网上看见了SkyFree大大的《Let'sautoit》这本书,没事的时候,看了看,做了点笔记,但是完全不懂。

后来第二年我所学的专业要学习网页编程,自己硬着头皮去看了一点VbScript的书籍和视频。

后来又迷上系统精简。

偶然一天,又得到SkyFree大大的《XP不完全攻略》,里面有Autoit的常用函数,因为好奇,就自己谷歌了一个Autoit的汉化版,照着帮助看,看了好久,完全没有进展,然后就尝试写一些小软件,不明白的就看帮助文档,后来才渐渐得明白---------AU3是要在练习中才能明白的。

希望这本小册子一样的电子书,能够让同样喜欢AU3的您,有惊喜,有收获!

AU3爱好者联盟虫子樱桃

2010年9月26日

 

目录

零、AU3的下载与安装

AU3的下载

AU3的安装

我们的第一个AU3程序

1、基本概念

变量与常量

数据类型

判断与循环

数组

二、常用函数串讲

3、篇外篇

四、后记

 

零、AU3的下载与安装

 

AU3的下载

Au3的原作者是JonathanBennett及AutoIt小组,他们的官方网站是

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_CLOSE

Exit

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

EndSwitch

WEnd

保存,运行之。

呵呵。

希望大伙能够喜欢。

判断与循环之判断

对于我们人来说,判断就是根据由一些客观现象结合自身的道德、理智及自身利益来对一件事情进行的主观感知。

对于一个想很好地活在这个世界的人来说,良好的判断是非险恶的能力是必须的。

同样地,对于一个程序来说,一个良好的判断机制也是决定其成败与否的要素之一。

在AU3,判断主要有以下两种:

If判断

select与switch判断

接下来,我们就分别讲讲它们是怎样的。

If判断

if判断的基本结构是if...then...endif,意思是“如果..那么...”,懂点英语的兄弟可以看看我这个句子Ifitrains,I'llnotattendthemeeting.逻辑结构是

中文表示脚本语言表示

如果下雨ifitrainthen

<--------等价于------->I'llnotattendthemeeting

那么我不去参加会议endif

实际上if...then..endif这个结构是隐含了一个对布尔值的引用的,例如下面这两个代码是等价的。

If2=2thenDim$a,$b,$c

MsgBox(0,"您好","您的命题正确")$a=2

EndIf$b=2

$c=($a=$b)

If$c=TrueThen

MsgBox(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<$bThen

MsgBox(0,"$a与$b值比较","$a<$b")

ElseIfStringIsDigit($a)=1And$a=$bThen

MsgBox(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差不多,就不多讲了。

呵呵。

判断与循环之循环

AU3里面的几种循环结构

For...Next

While...WEnd

Do...Until

For...In...Next

啥叫循环喃?

循环就是在满足一定条件的时候不停地工作、执行相同的动作,但是当条件不满足的时候,就立马罢工,退出来、不干!

这就好比咱找了个工作,老板给的工资也挺不错的,然后我们就把工资当做在这工作的条件,哪一天老板说不给发工资了,咱就不干活了,甚至辞职了。

(这里不涉及任何就业观之类的东西,只是个简单的比喻而已,好事者请飘过。

)循环有两种,死循环和“活循环(我们讲的这些啦,好像没有活循环这个,我发明的?

)”,所谓死循环就是一直那样干,直到终结,话说我们人生就是在死循环啊,不断地执行吃饭、喝水的动作,直到心脏停止跳动。

电脑呢,遇到有死循环的程序,就会一直执行,直到down机为止。

记得批处理里面有个不很出名的死循环,代码很简单但是巨强大!

start

%o

运行之后,直接弹出N多命令提示符,直到死机(大家不要去试哦,否者后果自负!

),呵呵,由此可见死循环是很NB的,危害巨大,因此我们在编程的时候,要尽量避免死循环。

好了,我们切入正题!

【1】For...Next

这个循环又叫定长(值)循环,主要用于知道执行次数的循环。

其基本结构为:

For<变量>=<开始>To<停止>[Step<步进值>]

语句

...

Next

【注】"开始"指的是你变量的初值"停止"指的是你变量的终值。

照它的结构,写个例子,反复弹出三次对话框:

Dim$i

For$i=1To3Step1

MsgBox(0,"For,,next的例子1","这是第"&$i&"次显示这个对话框,还有"&3-$i&"次窗口将自动关闭")

Next

说明下,那个step在开始学的时候可能有点不明白,那么它是啥呢。

做个简单地比喻吧,好比说给你十袋大米让你搬到学校大门口,你一次能扛两袋别人只能扛一袋,你扛五次就把大米扛完了,别人却需要扛十袋。

在for..NEXT这个结构里面,变量初值与终值的差+1就是大米,步进值就是你一次扛大米的袋数。

举个例子

Dim$i

For$i=1To6Step1

MsgBox(0,"For,,next的例子2","呵呵")

Next

弹出六次对话框

Dim$i

For$i=1To6Step2

MsgBox(0,"For,,next的例子2","呵呵")

Next

弹出三次对话框

最后喃,用我

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2