湿热吃什么药:AutoIt3 脚本介绍

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 05:19:46
基础篇一、什么是Au3脚本?

       Au3脚本,也就是AutoIt3 Windows自动安装脚本语言(官方网站http://www.autoitscript.com/

  AutoIt 是一种自动控制工具。它可以被用来自动完成任何基于 Windows 或 DOS 的简单任务。它最初被设计用来自动完成安装那些其它方法不能自动安装的软件。这在PC首次展示时非常有用,那时成百上千的机器需要被自动的安装。尽管有一些程序如 MS Office, Mcafee, IE4 等具有自动安装的组件,可还有太多的程序不具备自动安装的功能。那就是用到 AutoIt 的地方。AutoIt 也可以被用来在你的机器上完成简单的任务。
  AutoIt 运行时读取一个指定的脚本文件。这个脚本文件使得 AutoIt 完成一系列操作,包括
  执行程序(Windows 应用程序,DOS命令,等等。)
  发出按键和鼠标点击(所有字符,不受键盘布局约束)。
  窗口操作(例如最小化,隐藏,恢复,等待,激活(同样适用 Win98/Win2000))。
  简单剪贴板文本操作。
  最值一提的是它很小(本身包含EXE件,没有DLL文件,没有注册表项)而且免费! (并且将保持免费).
  2.1 版后新加入的Aut2Exe。 本程序可以从一个 AutoIt 脚本创建可执行程序!
  2.21版后,你可以发送十进制 ASCII 代码,就像 ALT 键加数字小键盘(比如 ALT+65='A') 非常有用来发送特定的字符(比如 '~' 在一个意大利键盘上)。
  Au3脚本就是 Autoit v3 版的简称。


基础篇二、Au3脚本如何使用?

       其实 AutoIt v3(AU3)已经不是一种简单的脚本语言了,AU3 在 GUI 界面方面也是很有效果的,这里只介绍 AU3 的一些常用的基本用法,如果您想了解更多关于 AU3 编程的信息和方法,请参阅 AU3 的帮助文档——这真的是一篇很全面的帮助文档。
     在这一节中,我将和大家一起学习 AU3 的一些基本使用方法,不求多,只求常用、好用、好学,这一节的目的,旨在可以让大家和我一起在 Windows 环境下让 AU3 彻底替代批处理。在 Windows 环境下让批处理难看的黑框见鬼去吧  :lol
      学习任何一门语言,基本上所要做的第一件事,就是在 10 分钟内学会如何用这门语言编出一个可以显示“Hello World !”的小程序,当然,我们学习 AU3 的基本使用方法,这个就不例外了。
      AU3 的源码,可以使用记事本直接编辑——其实很多语言的源码也都可以直接使用纯文本文档来编辑,不过我个人并不建议初学者使用记事本,编写 AU3 源码,有一个非常好的文本编辑器,SCITE。SCITE 是一个类似记事本的小程序,它会用不同颜色标记您所编写的 AU3 源码中的不同类别的命令,而且它内置记录了许多 AU3 的函数与指令,在您编写 AU3 源码时可以提供给您很大的帮助。
     好的,这里我使用的是SCITE 编辑器,打开后将会得到一个类似记事本的界面,下面,我们就可以开始编写AU3 源码了。下面是代码部分:

MsgBox(0,"我的第一个 AU3 程序","Hello World !")

      写好后保存,保存后,这将是一个以 AU3 为后缀的文件,例如我们将它命名为 Skyfree.au3,不过这个程序还不能运行,它只是源码,我们必须将它转化为可执行文件,也就是EXE 文件,它才会正常运行。这个由源码转换为可执行文件的过程,也就是我们经常听到高手口中所说的“编译”了。
      如何执行编译呢?我们可以右键单击 Skyfree.au3 这个 AU3 源码文件,然后会出现“编译脚本”这个选项,我们单击“编译脚本”,几秒钟,这个Skyfree.au3 源码文件就被编译成了 Skyfree.exe 文件了。
     双击 Skyfree.exe 文件,立刻会弹出来一个对话框,上面写着“Hello World”。
     怎么样,是不是很神奇,我们的第一个 AU3 程序就这么写出来了,简单吗?
     其实编程就是这么简单,不要在某些高手的神话传说和谆谆教诲下感觉编程很神秘了,只要有耐心和恒心,菜鸟照样玩编程。


     不过这一节我也不是来领着大家做游戏的,这一小节有几个很重要的概念信息我再来重复一下,一个是源码,一个是可执行程序,从源码到可执行程序,需要一个过程,这个过程叫做“编译


进阶篇一、AutoIt v3 结构入门

A、 数据类型
     任何编程语言都有数据这个概念,当然,任何编程语言都讲究数据类型,AU3 也一样,不过 AU3 对数据类型的分类比较简单,在 AU3 中,数据大概分成四类:数字类型、字符串类型、布尔值、二进制类型。。。。。
    数字类型,顾名思义,就是数字,例如 1、2、3.4、5 等等,AU3 对数字类型没有再进行详细的分类(很多语言中都将数字类型再详细分为整形、浮点型等等),这给初学者带来了不少方便,只记住数字类型就是我们常说的“数”就可以了。
   字符串类型,字符串即使一串字符,例如 ABCDE、Skyfree、SK1023Y 等等,这些都是字符串,这个是很好理解的,不过大家应该分清楚一点,就是数字 1 和字符 1 是有区别的。
    布尔类型,不要被这个名字搞乱了,所谓布尔类型的值,就是 True(真)和False(假)这两个值,这在进行数据判断的时候十分有用。
   二进制类型,我们很少用到,本着不常用的不浪费我们时间的原则,这个我就不多废口水了,有兴趣的朋友可以参考 AU3 帮助文档中的相应说明。


B、变量
说完了数据类型,终于可以说数据了。
所谓变量,就是在程序运行过程中其值可以改变的量。我们可以定义一个变量,例如,


Dim $Skyfree
$Skyfree 就是一个变量,Dim 是定义变量的意思。在程序运行过程中,我们可以将 1 这个值赋给$Skyfree 这个变量,
$Skyfree=1
这时$Skyfree 就代表着 1 这个值,不过由于$Skyfree 是变量,我们可以在任意我们喜欢的时刻将 2 再赋值给$Skyfree,
$Skyfree=2
再次赋值结束后,$Skyfree 就代表着 2 这个值。


    说到这里,大家大概明白什么叫变量了吧。大家就随手命名几个变量吧。
    不过有一点要说的是,AU3 的变量命名有它的规则,不符合命名规则的变量将不被称之为变量

     AU3 的变量命名规则是——以$开头的,字母、数字、下划线组合。例如$Sky、$Sky_Free、$Sky1023 这些都是合乎 AU3 变量命名规则的变量。

C、常量
     明白了什么是变量,常量的意义就很好解释了。
     常量,就是在程序运行过程中其值不能被随意改变的量。我们可以定义一个常量,例如,
     Const $Skyfree=1
     常量一旦被赋值,在整个程序运行过程中其值将不能被改变。当然,常量的命名也有它的规则,常量的命名规则与变量相同。


D、数组
      数组这个概念可能稍微难理解一些,我们先来看一个简单的例子:
      Dim $Sky[3]
      $Sky[0]=17
      $Sky[1]=21
      $Sky[2]=65
      最初,我们以 Dim $Sky[3]定义了一个包含三个元素的数组 Sky[3],这三个元素的名字分别为Sky[0]、Sky[1]、Sky[2],然后我们分别将 17、21、65 赋值给他们。
     到这里,大家也大概看出来什么是数组了,所谓数组,就是以一个名字命名一组变量,就像 Sky 这个数组名,这个数组包含从 0 到(数组元素数量1),例如 Sky[3],那么其中的元素就是从 Sky[0]~Sky[31]。
      如果说的再简单点,就是一组使用着同一个变量名的变量(例如数组 Sky[3]中的每一个元素都使用Sky 这个变量名),为了区别这一组的每一个变量,使用一个序号来唯一标识这个元素(例如 Sky[1]和Sky[2],虽然都使用 Sky 这个变量名,但它们使用[1]和[2]来区别彼此)。

    数组的运用十分广泛,通常一个数组里存储着一组有关系的数据,或者有着一定相似性的数据。
    如果您现在还不能完全理解数组,那就请你回去啃C语言基础了 :)  随着对 AU3 程序理解的深入,会慢慢理解数组这个概念的。


E、运算符

数据运算
= 赋值运算,将“=”右边部分的值赋给左边
+ 加法运算, $S=2+3
减法运算, $S=23
* 乘法运算, $S=2*3
/ 除法运算,$S=2/3
& 字符串连接运算,$St=”ABC” & “DEF” & “123”
^ 冥运算,$S=2^3(2 的三次方)


布尔运算:(返回 True 或者 False 值)
= 判断左右两侧的值是否相等,如果左右两侧为字符串,则不区分大小写比较
== 判断左右两侧的值是否相等,如果左右两侧为字符串,则区分大小写比较
<> 判断左右两侧是否不等于

>
判断左侧是否大于右侧
>= 判断左侧是否大于等于右侧
< 判断左侧是否小于右侧
<= 判断左侧是否小于等于右侧


逻辑运算
AND 与运算,只有“AND”两侧的值都为“真”时,才返回“真”,否则返回“假”
OR 或运算,当“OR”两侧只要有一侧为“真”时就返回“真”,否则返回“假”
NOT 非运算,NOT 真为假,NOT 假为真


       这些运算符是有优先级一说的,就像我们小学所学的“先乘除后加减”一样,这些运算符的优先级如下,自上而下优先级依次降低,同级自左向右优先级依次降低
NOT
^
* /
+
&
< > <= >= = <> ==
AND OR

牢记这些优先级,否则很容易在以后的编程中造成混淆。



进阶篇二、 顺序结构、选择结构、循环结构入门


    所有的编程语言都遵守这三种代码结构,下面一一介绍。
    a、顺序结构
    顺序结构是十分简单的结构,就像批处理一样,一条一条的运行所写下的代码,脚本运行时,就会一条一条的运行代码,例如:
       Dim $S,$a,$b
       $a=1
       $b=2
       $S=$a+$b
       MsgBox(0,"运算结果",$S)
     这是个简单的程序,定义了变量$S,$a,$b,再分别将 1 和 2 赋值给$a,$b,然后计算$a 和$b 的和,并将这个和复制给$S,最后使用一个窗口将这个和显示出来。
      程序从第一行定义变量到最后一行显示$S 的值依次执行下来,这就是顺序结构,也是一个程序里最基本的结构。


      b、选择结构
    选择结构中我只介绍 If…Then…结构,这个是极为常用的选择结构,十分直观。选择结构里还有Select…Case…这种结构,感兴趣的朋友可以参照 AU3 帮助文档。
If…Then…的基本语法是:
If [条件] Then
[语句段 1]
Else
[语句段 2]
EndIf
If 后面跟一个条件,如果这个条件的结果为真,则执行语句段 1,否则将执行语句段 2,Else 和语句段 2 这两者不是必须的,下面举两个简单的例子:
Dim $a
$a=5
If $a>3 Then
MsgBox(0,"选择结构示例","大于 3")
Else
MsgBox(0,"选择结构示例","小于或等于 3")
EndIf
运行这个程序,则会出现一个对话框,对话框中显示为“大于 3”。
随后我们可以将一个小于 3 的数例如 2 复制给$a,如下:
Dim $a
$a=2
If $a>3 Then
MsgBox(0,"选择结构示例","大于 3")
Else
MsgBox(0,"选择结构示例","小于或等于 3")
EndIf
再运行这个程序,对话框将显示为“小于或等于 3”。
只要理解了 If…Then…这个最基本的选择结构语句,就能做一些简单的判断了。其实 If…Then…语句还有很多其他模式,例如 If…Then…ElseIf…Then….Else…Endif 等,不过只要理解了 If…Then…一切都迎刃而解。


      c、循环结构
      循环结构我只介绍最常用的 While…Wend 循环和 For…Next 循环,其他的循环结构控制语句,如果有需要可以参考 AU3 帮助文档。
While…Wend,语法:
While [条件]
[语句段]
Wend

这个语句中,While 后的[条件]只要为真,则会循环执行[语句段],直到[条件]为假才结束循环,如果无论怎么循环[条件]都始终为真,则这个循环会成为死循环,这样会造成系统资源耗尽而死机或者其他情况。
举个例子,例如我们想计算 1+2+3+…..+100 的结果,如下:
Dim $i,$Sum
$i=1
$Sum=0
While $i<=100
$Sum=$Sum+$i
$i=$i+1
WEnd
MsgBox(0,"计算 1+2+...+100 的和",$Sum)
     这个例子中,我们首先定义了$i 和$Sum 这两个变量,随后我们将他们赋以最初值,$i=1、$Sum=0,然后进入了 While 循环,在每次循环中$Sum 会被赋予当前$Sum 的值与$i 值的和,而每次循环结束后$i 的值都会被+1,这样,$i 会依次表示 1、2、3…这些值(注意,这些$i 的值都<=100,所以循环会继续执行),而$Sum 会记录从 1+2+3+…的值。在第 100 次循环结束时,也就是$i=$i+1 运行到第 100 次时,此时$i 的值为 101,那么第 101 此循环运行前检测 While 后的条件$i<=100 时,这个条件将不符合,不符合 While 后面的条件,也就是 While 后面的条件为假时,则退出循环。退出循环后运行 MsgBox 这一行,这样就将$Sum 的值,也就是 1+2+3+…+100 的值显示在弹出的对话框中。


下面,我们来看一下 For…Next 循环
For…Next,语法:
For [变量]=[初值] To [终值] [Step [步进值]]
[语句段]
Next
For…Next 循环结构经常与数组一起使用,例如:
Dim $Sky[5],$i,$Sum
$Sky[0]=10
$Sky[1]=20
$Sky[2]=30
$Sky[3]=40
$Sky[4]=50
$Sum=0
For $i=0 To 4
$Sum=$Sum+$Sky[$i]
Next
MsgBox(0,"For...Next 循环结构范例",$Sum)

    这个例子中,首先我们定义了$Sky 数组,这个数组包含 5 个元素,然后我们又定义了$i 和$Sum 这两个变量,分别用来计数和计算和值。接着我们为$Sky 中的 5 个元素赋了初始值,以及为$Sum 赋了初始值。进入 For 循环,循环一共进行了 5 次,5 次中$i 分别等于 0、1、2、3、4,在这 5 次循环中,$Sum 依次记录$Sky[0]、$Sky[1]、…$Sky[4]的和值。5 次循环结束后,使用 MsgBox 语句将$Sum 结果显示在对话框中。

进阶篇三、常用的 AU3 函数

      什么是函数?很多人初接触编程对这个存在很大的疑惑。
      举个简单的例子,有一个制造桌子的工厂,你从这边将木材送进去,就会从工厂的那边生产出桌子来,如果你送进去檀木,那么就会生产出檀木桌子,如果你送进去红木,那么就会生产出红木的桌子。
      这个工厂就是函数,我们送进去的木头就是函数的参数,工厂生产出来的桌子就是函数的返回值。
      我们不必知道工厂的内部结构,也不必知道桌子的生产过程,我们只需要调整木头的类型,就可以生产出不同的桌子。也就是说,我们不必知道函数的工作原理,而只需要调整参数,就能得到我们想要的结果。
      AU3 提供了大量的函数,这些函数很方便,但是 AU3 的函数有几百个,全部记住反正我这样的破脑袋是不行,下面我列举一些十分常用的 AU3 函数及其常用参数,大家如果懒得记忆全部 AU3 函数,就记住这些常用的就可以。


1>EnvGet
作用:获取当前环境变量的值
语法:EnvGet ( "环境变量" )
范例:
$SysDrv= EnvGet("systemdrive")
运行完成后,$SysDrv 将记录环境变量%SystemDrive%的值,如果系统盘为 C 盘,则$SysDrv 的值为“C:”


2>EnvSet
作用:设置环境变量和其值
语法:EnvSet ( "环境变量" [, "值"] )
范例:
EnvSet ("TEMP ", EnvGet("systemdrive") & ”\Windows\Temp”)
运行完成后,%TEMP%这个环境变量的值将被修改,如果系统盘为 C 盘,则%TEMP%的值为“C:\Windows\Temp”


3>DirCopy
作用:复制指定目录及其所有子目录和文件
语法:DirCopy ( "源目录", "目标目录" [, 标志] )
参数:
[标志],为 0(默认)时不覆盖已有的文件夹,为 1 则覆盖
范例:DirCopy("C:\Skyfree","D:\Skyfree",1)


4>DirCreate ( "路径" )
作用:创建文件夹
语法:DirCreate ( "路径" )
范例:DirCreate ("C:\Skyfree" )


5>DirGetSize
作用:返回指定目录的占用空间大小(单位: 字节)
语法:DirGetSize( "目标路径" )
范例:
$Size = DirGetSize("C:") / 1024 / 1024
由于 DirGetSize 返回值的单位是字节,所以我们需要连续除以两次 1024 才能得到 MB 级别的剩余空间


6> DirMove
作用:移动指定目录及其所有子目录和文件
语法:DirMove ( "源目录", "目标目录" [, 标志] )
参数:
[标志],为 0(默认)时不覆盖已有的文件夹,为 1 则覆盖
范例:DirMove ("C:\Skyfree","D:\Skyfree",1)


7> DirRemove
作用:删除一个目录/文件夹
语法:DirRemove ( "路径" [, 递归遍历] )
参数:
[递归遍历],0 则不删除其子文件和文件夹,1 则删除
范例:DirRemove("C:\Skyfree", 1)


8>DriveGetFileSystem
作用:返回指定驱动器的文件系统类型
语法:DriveGetFileSystem ( "路径" )
返回值:
1(数字),未知的文件格式
FAT,FAT 格式
FAT32,FAT32 格式
NTFS,NTFS 格式
CDFS,CD 格式
UDF,DVD 格式
范例:$Format=DriveGetFileSystem ( "C:\" )


9>DriveGetType
作用:返回指定驱动器的类型
语法:DriveGetType ( "路径" )
返回值:
"Unknown" (未知类型)、"Removable" (可移动)、"Fixed" (固定的)、"Network"(网络)、"CDROM"
(光驱)、"RAMDisk"(内存盘)
范例:$Type=DriveGetFileSystem ( "C:\" )


10> DriveSpaceFree
作用:以 MB(兆字节)为单位返回指定路径所在分区的剩余空间
语法:DriveSpaceFree ( "路径" )
范例:
$FreeSpace= DriveSpaceFree ( "C:\" ) / 1024
这样将获得 GB 级别的剩余体积


11> FileCreateShortcut
作用:创建指定文件的快捷方式(.lnk 文件)
语法:FileCreateShortcut ( "目标文件", "lnk 文件" [, "工作目录"])
范例:

FileCreateShortcut("D:\360safe\360Safe.exe",@DesktopCommonDir & "\360 安全卫士.lnk","D:\360safe")

12>FileCopy
作用:复制一个或多个文件
语法:FileCopy ( "源文件", "目标路径" [, 标志] )
参数:
[标志] 0 = (默认) 不覆盖存在的文件
1 = 覆盖存在的文件
8 = 如果目标文件夹不存在,就先创建 (查看注意部分)
范例:
FileCopy("C:\Skyfree.esp","D:\Skyfree.esp",1)


13> FileDelete
作用:删除一个或多个文件
语法:FileDelete ( "路径" )
范例:FileDelete("C:\Skyfree\Skyfree.esp")


14> FileExists
作用:检查指定文件或目录是否存在
语法:FileExists ( "路径" )
返回值:存在则返回 1(真),不存在则返回 0(假)
范例:
If FileExists("C:\Skyfree\Skyfree.esp ") Then
MsgBox(0, "", "存在")
Else
MsgBox(0,"", "不存在")
EndIf


15>FileMove
作用:移动一个或多个文件
语法:FileMove ( "源文件", "目标路径" [, 标志] )
参数:
[标志] 0 = (默认) 不覆盖存在的文件
1 = 覆盖存在的文件
8 = 如果目标文件夹不存在,就先创建 (查看注意部分)
范例:
FileMove ("C:\Skyfree.esp","D:\Skyfree.esp",1)


16> FileSetAttrib
作用:修改一个或多个文件的属性
语法:FileSetAttrib ( "文件", "+RASHNOT" )
参数:
"R" = READONLY(只读)
"A" = ARCHIVE(存档)
"S" = SYSTEM(系统文件)
"H" = HIDDEN(隐藏文件)
"N" = NORMAL(普通)

"O" = OFFLINE(脱机文件)
"T" = TEMPORARY(临时文件)
+ 增加属性,例如+R、+S、+H
去除属性,例如R、S、H
范例:
FileSetAttrib("C:\Skyfree.esp","+RSH")
FileSetAttrib("C:\Skyfree.esp","RSH")


17>IniRead
作用:从某标准配置文件(*.ini)中读取某个数值
语法:IniRead ( "文件名", "字段名", "关键字", "默认值" )
范例:
IniRead("C:\Windows\AllUsrRun.ini","PreSetup","Exe","NA")
这行语句的意思是从 C:\Windows\AllUsrRun.ini 这个配置文件中寻找 PreSetup 段, 再从PreSetup 这段下寻找 Exe 关键字,随后读取 Exe 关键字对应的值,如果 Exe返回“NA”。

关键字的值为空则IniRead 是十分常用的函数,常用于读取外部配置文件以改变程序运行的方法。

18> IniWrite
作用:向某标准配置文件(*.ini)中写入某个数值
语法:IniWrite ( "文件名", "字段名", "关键字", "数值" )
范例:
IniWrite("C:\Sysprep\AutoSysprep.ini","SK3","UnDev","True")
IniWrite和IniRead 是对应的,IniWrite 用来写配置文件 ,上面语句的意思是 寻找c:\Sysprep\AutoSysprep.ini 这个配置文件,并寻找 SK3 这一段,再由 SK3 段中寻找 UnDev项并把这项的值设置为 True。


19> Random
作用:产生一个伪随机的浮点数
语法:Random ( [最小值 [, 最大值 [, 标志]]] )
参数:
最小值,随机数的最小值,默认为 0
最大值,随机数的最大值,默认为 1
标志,设为 1 则返回整数,默认则返回一个浮点数
范例:
$Rs=Random(2,5,1)
上述语句将随机选取 2 到 5 之间的一个整数赋值给$Rs。


20>InputBox
作用:显示以一个输入框以供用户输入数据
语法:InputBox ( "标题", "提示信息" [, "默认数据" [, "密码字符" [, 宽度, 高度 [, 左边, 上边 [, 超时时间]]]]] )
参数:
标题,输入框的标题文字
提示信息,提示用户程序需要获得的数据
默认数据,显示在输入文本框中的默认文字
密码字符,[可选参数] 显示在输入文本框中用以代替用户输入字符的字符。如果要正常显示字符只需定义此参数为空字符串""(默认)或空格字符即可。 如果此参数被设为多字符的字符串则只有第一个字符才有效。第二个字符及后面的其它字符有其它特殊用途。请查看下面的注意部分

宽度, 可选参数] 窗口宽度。如有指定此参数则高度参数也必须指定。指定 1 则表示使用默认宽度
高度, 可选参数] 窗口高度。如有指定此参数则宽度参数也必须指定。指定 1 则表示使用默认高度
左边, 可选参数] 输入框左边离屏幕左边的距离(象素)。默认情况下,输入框是居中显示的,如有指定此参数则 上边 参数也必须指定上边, 可选参数] 输入框上边离屏幕左边的距离(象素)。默认情况下,输入框是居中显示的,如有指定此参数则“左边”参数也必须指定
超时时间,[可选参数] 以秒为单位。指定时间过后输入框将自动关闭
范例:
$passwd = InputBox("权限核查", "请输入密码:", "", "*")


21>MsgBox
作用:显示一个简单的对话框(可设置超时属性)
语法:MsgBox ( 标志, "标题", "文本" [, 超时时间] )
参数:
标志,标志是几个值的加和,我只介绍最常用的两类值,如果有更多的需要请参阅 AU3 帮助
文件。一个是要显示的按钮的对应值,一个是要显示的提示图标对应的值。
值如下:
按钮对应的值:
0=确定
1=确定 和 取消
2=终止、重试、忽略
3=是、否、取消
4=是 和 否
5=重试 和 取消
6=取消、重试、继续
提示图标对应的值:
0=(无图标)
16=警告标志(一般用于错误提示)
32=问号图标
48=感叹号图标
64=由一个“i”和圆圈组成的图标(消息通知)
返回值:
这些返回值代表着所按下的按钮,
OK(确定)=1
CANCEL(取消)=2
ABORT(终止)=3
RETRY(重试)=4
IGNORE(忽略)=5
YES(是)=6
NO(否)=7
TRY AGAIN (重试)=10

这两个值的列
范例:
CONTINUE (继续)=11
$Flag=MsgBox(4+32,"驱动包删除","是否要删除系统驱动包备份?")
If $Flag=6 Then
DirRemove("C:\Drivers",1)
EndIf
这个例子中,$Flag 用来记录 MsgBox 执行后的返回值,MsgBox 由于我的标志选择了 4+32,这将意味着这个 MsgBox 框中会有 Yes 和 No 两个按钮并且提示标志是一个“?”,在随后的判断中 , $Flag如果等于6 ,则代表我在MsgBox 中单击了Yes这个按钮 ,这将执行DirRemove("C:\Drivers",1),否则将不执行。


22> ToolTip
作用:在屏幕的任意位置显示一个工具提示
语法:ToolTip ( "文本" [, X 坐标 [, Y 坐标 [, "标题" [, 图标 [, 选项]]]]] )
参数:
文本,工具提示的文本(如果是空字符串则清除现有的工具提示)
X,Y 坐标,[可选参数] 工具提示出现位置地 X 和 Y 坐标
标题,[可选参数] 工具提示的标题, 需要 IE5+支持图标,

可选参数] 预定义标题显示的图标: 需要 IE5+支持. 需要设置一个标题,0= 没有图标, 1 = 信息图标, 2 = 警告图标, 3 = 错误图标
选项=[可选参数] 为不同的显示类型设置不同的显示选项:
1 = 显示气泡提示, 需要 IE5+支持
2 = 在 X,Y 坐标中,居中显示提示.而不是在左上角显示.
4 = 如果有必要,强制显示工具提示总是可见,如果有多个显示器并且工具提示显示于屏幕边界, 那么在另外的显示器上面也会显示。这个选项不能工作于 Windows NT平台,否则工具提示只能限制在主显示器里面。
范例:
TooTip 可以很简单帮我们做出来一些提示,这些提示有些事后很有用。
ToolTip(@CR&"      " & " 正在安装AMD双核驱动 ..." & "      "
[email=&@CR]&@CR[/email], @DesktopWidth260,
@DesktopHeight120)


23> RunWait
作用:运行一个外部程序并暂停脚本的执行直至该程序执行完毕
语法:RunWait ( "文件名" [, "工作目录" [, 标志]] )
参数:
文件名,可执行文件的完整路径(文件格式为 EXE、BAT、COM 或 PIF)
工作目录,[可选参数] 工作目录。
标志,[可选参数] 启动程序时的初始状态:
@SW_HIDE = 隐藏窗口
@SW_MINIMIZE = 最小化窗口
@SW_MAXIMIZE = 最大化窗口
范例:
RunWait("C:\Skyfree\1.exe","",@SW_HIDE)
RunWait("C:\Skyfree\2.exe","",@SW_HIDE)
隐藏运行 1.exe,1.exe 运行完毕再隐藏运行 2.exe。
还有一个 Run 函数,和 RunWait 类似,只是 Run 函数只调用外部程序运行而不等待这个外部程序的运行结束。


24>Shutdown
作用:关机操作
语法:Shutdown ( 参数 )
参数:
0 = Logoff(注销)
1 = Shutdown(关机)
2 = Reboot(重启)
4 = Force(强制执行)
8 = Power down(关机)
32= Suspend(待机)
64= Hibernate(休眠)
范例:
Shutdown(Reboot)


25>RegDelete
作用:从注册表中删除指定键值
语法:RegDelete ( "键名" [, "值项"] )
范例:RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE", "TestKey")


26>RegRead
作用:读取注册表指定的值
语法:RegRead ( "键名", "值项" )
范例:
$Reg = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion",
"ProgramFilesDir")


27> RegWrite
作用:创建一个主键、子键或值项
语法:RegWrite ( "键名" [,"值项", "类型", 数据] )
参数:
类 型 , [ 可 选 参 数 ] 目 标 值 项 的 数 据 类 型 , 比 如 : "REG_SZ" 、 "REG_MULTI_SZ" 、
"REG_EXPAND_SZ"、"REG_DWORD" 或 "REG_BINARY"。
范例:
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey", "REG_SZ", "Hello this is a
test")


28>StringInStr
作用:检查某个字符串是否含有给定的子串
语法:StringInStr ( "字符串", "子串" [, 区分大小写 [, 出现次序]] )
参数:
字符串,目标字符串。
子串,要搜索的子串。
区分大小写,[可选参数] 指定匹配操作是否要区分大小写。
0 = 不区分大小写(默认)
1 = 区分大小写
2 = 不区分大小写, 使用基本/快速的比较方法
出现次序,[可选参数] 指定要提取目标字符串中第几个匹配的子串。若给定的是负数则表示要从字符串右边开始搜索。默认值为 1(搜索第一个匹配的子串)。
返回值:包含则返回 1(真),不包含则返回 0(假)
范例:
If StringInStr("nVIDIA Geforce 8600GTS","nVIDIA") Then
$SndName="nVIDIA"
EndIf


29>StringLen
作用:返回指定字符串的字符总数
语法:StringLen ( "字符串" )
范例:
$Length=StringLen("Skyfree")
此时,$Length 的值应该为 7


30>StringMid
作用:取某个字符串的部分字符
语法:StringMid ( "字符串", 起始位置 [, 数量] )
范例:
$S=StringMid("Skyfree",4,4)
此时,$S 的值应该为“free”


31>Sleep
作用:使脚本暂停指定时间段
语法:Sleep ( 延迟 )
范例:
Sleep(3000)
暂停脚本运行 3 秒,注意,参数里的“延迟”是以毫秒为单位的。

好了,终于把 AU3 常用的函数介绍完了,是不是看得有点晕了,这 31 个函数是所有 AU3 函数相对常用的,AU3 的函数十分的多,而且功能十分的多,如果想要了解关于更多 AU3 函数的知识,可以参阅 AU3 帮助文档。

高级篇、 AU3 中的宏

     什么是宏,不要被这个术语吓到了,宏的意思简单的来说,就是一些系统预先命名好的常量。写程序的过程中可以使用这些宏所代表的数据,但是不可对这些宏进行赋值操作。

常用的宏有如下这些——
@AppDataCommonDir,公共 Application Data 文件夹所在路径
@AppDataDir,当前用户 Application Data 文件夹所在路径
@ComSpec, %comspec% 的 值 , 指 定 的 第 二 个 命 令 解 释 程 序(SPECified secondary COMmand
interpreter),主要用于命令行使用, 如.    Run(@ComSpec & " /k help | more")
@CR,回车符,用于换行
@LF,换行符,用于换行

@CRLF,@CR+@LF,回车换行符,用于换行
@DesktopCommonDir,公共 Desktop 文件夹路径(桌面)
@DesktopDir,当前用户 Desktop 文件夹路径(桌面)
@DesktopHeight,桌面高度(像素) (垂直分辨率)
@DesktopWidth,桌面宽度(像素) (水平分辨率)
@DesktopDepth,像素颜色位深度(如 32 Bit)
@DesktopRefresh,屏幕刷新率.(如 75 HZ)
@DocumentsCommonDir,公共 Documents 文件夹路径(我的文档)
@FavoritesCommonDir,公共 Favorites 文件夹路径
@FavoritesDir,前用户的 Favorites 文件夹路径
@HomeDrive,当前用户主目录所在的驱动器号(主要用于确定系统所在分区)
@MyDocumentsDir,我的文档的路径.
@OSServicePack,系统已安装的 Service pack 信息,比如"Service Pack 3" ,若是过低版本的Windows 则可能返回 "B"
@OSVersion,返回操作系统的版本,如: "WIN_2003", "WIN_XP", "WIN_2000", "WIN_NT4", "WIN_ME", "WIN_98", "WIN_95"
@ProgramFilesDir,返回 Program Files 文件夹路径.
@ProgramsCommonDir,「开始」菜单\程序目录所在路径(例:C:\Documents and Settings\All Users\ 「开始」菜单\程序)公共用户
@ProgramsDir,「开始」菜单\程序 目录所在路径(例:C:\Documents and Settings\All Users\「开始」菜单\程序) 当前用户
@ScriptDir,脚本所在目录. (不包含反斜杠符号"\")
@ScriptName,当前运行的脚本的长文件名
@ScriptFullPath,等价于 @ScriptDir & "\" & @ScriptName
@StartMenuCommonDir,公共用户「开始」菜单 目录所在路径(例:C:\Documents and Settings\AllUsers\「开始」菜单)
@StartMenuDir,当前用户的 「开始」菜单目录所在路径
@StartupCommonDir,公共用户的 启动 目录所在路径(例:C:\Documents and Settings\All Users\ 「开始」菜单\程序\启动)
@StartupDir,当前用户的启动目录所在路径
@WindowsDir,Windows 文件夹所在路径(例:C:\WINDOWS)

       以上的宏只是所有 AU3 的宏中比较常用的一部分,如果您想了解更多关于 AU3 宏的信息,请又一次回去查阅 AU3 帮助文档。:lol
       其实大家可能也看出来了,宏有点类似 Windows 的环境变量,当然,其性能和多样性远远超过Windows 环境变量。

       讲到这里,关于 AU3 的基础知识就给大家介绍完了。以后我们也可以亲手写一些简单的小程序来满足我们对自动化操作的需要,同样,当我们再碰到高手们写的 AU3 源代码终于也可以看懂一些了。
      对于编程来说,其实无论是 AU3 还是其他的,如果想熟练掌握仅仅靠背诵这些语法、函数、宏是不管用的,不过如果你不知道这些语法、函数、宏也是更行不通的。想熟练使用一样东西,就要经常使用它。一开始写程序是有点小困难,但这只是因为您对编程还不熟悉,并不代表着您不能掌握编程。编程很大程度上靠的不是智力,而是一个人的毅力!祝大家都能熟练掌握AU3,多多写出属于自己的脚本!
收藏 分享 青春见证辉煌,热血铸就历史!好为人师前请不要不求甚解! 回复 引用

 

R.E.C--F22
  • 发短消息
  • 加为好友

R.E.C--F22 当前在线

组织部长[B-01107-T]

来自
南宁 
最后登录
2011-1-17 

组织部长[B-01107-T]
兵团大校

UID
14786 
帖子
4100 
功勋
6500 点 
军饷
240 元 
阅读权限
150 

沙发 发表于 2009-8-23 15:29 | 只看该作者

Autoit3常见问题(转载)

Q1. 我怎样才能DEBUG我的脚本?

A1. 这个问题有无数个答案,不过最有效的还是从SciTE4AutoIt3开始,大多数人都使用这个软件来编写脚本。在debug方面SciTE有下面几条优势:

Syntax会即时高亮不符合语法的语句,这会让用户更容易发现脚本里的错误
内建在工具菜单里的Syntax可以一次检测脚本里的全部错误
内置的代码清理程序可以让代码变得更整齐、更具有可读性,它同时也能修正错误拼写的函数和变量

A2. 你也能通过添加下面的代码来在任何一台电脑上debug你的脚本:
Func dbg($msg)
     DllCall("kernel32.dll", "none", "OutputDebugString", "str", $msg)
EndFunc
然后,你可以在需要debug的地方加上下面的代码:
dbg("The value of Variable 1 at this time is " & $var1
这个方法对用户来说更加透明,同时也只对DebugView from SysInternals之类的程序可见。这个方法在那些没有安装SciTE的机器上更具有优势。


Q2.我怎样才能打开那些非exe格式的文件[.txt, .msi, .pdf, .jpg 之类]? [或] 我怎样才能用默认的浏览器打开网页?

A1. 这也就是为什么我们创建ShellExecute函数.下面有一个例子:
ShellExecute("C:\autoitscripts\test.au3", "", "", "edit", @SW_MAXIMIZE)
你也能像这样打开一个网址:
ShellExecute("http://www.autoitscript.com/forum")
如果文件的右键菜单里有打印选项,你就可以这样用AutoIt打印文件:
ShellExecute("C:\boot.ini", "", "", "print")
如果你希望暂停脚本直到程序结束,你可以使用ShellExecuteWait函数,它们的运行参数是相同的.

Q3. 我怎样才能让脚本只运行一个进程?

A1. 你可以使用_Singleton函数来阻止脚本的副本运行,下面有一个实例:
#include
_Singleton("TheNameOfMyScript")
这样如果脚本检测到自己已经启动就会立即退出,如果你只是想简单地知道脚本是否已经运行,你可以使用下面的代码:
#include
If _Singleton("MyScriptName", 1) Then
     ; We know the script is already running. Let the user know.
     MsgBox(0, "Script Name", "This script is already running. Using multiple copies of this script at the same breaks the [(UltimaCoder)] License!")
     Exit
Endif

Q4. 我怎样才能让脚本作为系统服务启动? 

这也是一个有多个答案的问题

A1.如果你只想在自己的电脑上安装服务,最简单的方法是使用Pirmasoft RunAsSvc.这个程序可以方便地添加/删除系统服务.
A2.如果你想让服务能在任何电脑上都能安装,你可以使用SRVANY.EXE和ServiceControl.au3,像这样安装服务:
#include "ServiceControl.au3"
$servicename = "MyServiceName"
_CreateService("", $servicename, "My AutoIt Script", "C:\Path_to_srvany.exe", "LocalSystem", "", 0x110)
RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\" & $servicename & "\Parameters", "Application", "REG_SZ", @ScriptFullPath)
或者使用下面的代码删除服务: #include "ServiceControl.au3"
$servicename = "MyServiceName"
_DeleteService("", $servicename)

Q5. 我怎样启动/停止服务?

A1.有两个函数集能帮助你控制服务:

SumTingWong制作的ServiceControl.au3 ,包含的函数有:

_StartService()
_StopService()
_ServiceExists()
_ServiceRunning()
_CreateService()
_DeleteService()

CatchFish制作的_NTServices.au3,包含的函数有:
_ServiceStart()
_ServiceStop()
_ServiceStatus()
_ServicePause()

Q6. 我怎样在复制文件时显示进度条?

A1.函数集ShellFileOperation.au3能完成这个操作:

Q7. 我怎样让快捷键只在自己的GUI起作用?

A1. 在更好的方法出现之前,最简单的方法是使用下面的代码:
#include
HotKeySet("{ENTER}", "catchguikey")
$gui = GuiCreate("Hotkey Test")
GuiCtrlCreateLabel("Press Enter", 0, 0)
GuiSetState()
While 1
     $msg = GUIGetMsg()
     If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

Func catchguikey()
     Local $opt = Opt("WinTitleMatchMode", 4)
     If WinGetHandle("active") = $gui Then
         If @HotKeyPressed = "{ENTER}" Then
             ;Do something here
             ToolTip("Key Pressed")
             Sleep(1000)
             ToolTip("")
         EndIf
     Else
         HotKeySet(@HotKeyPressed)
         Send(@HotKeyPressed)
         HotKeySet(@HotKeyPressed, "catchguikey")
     EndIf
     Opt("WinTitleMatchMode", $opt)
EndFunc

Q8. 我怎样检测键盘是否按下了指定的键?

A1. 你可以使用_IsPressed()函数来检测按键. 你可以在帮助文件里找到这个函数:User Defined Functions -> Misc Management -> _IsPressed. 下面的例子会显示如何在K键按下时单击鼠标左键:
#Include
$pressed = 0
While 1
     If _IsPressed("4B") Then
         If Not $pressed Then
             ToolTip("K Key being held down")
             MouseDown("left")
             $pressed = 1
         EndIf
     Else
         If $pressed Then
             ToolTip("")
             MouseUp("left")
             $pressed = 0
         EndIf
     EndIf
     Sleep(250)
WEnd

Q9. 我怎样在远程计算机上运行脚本?

A1. 这个问题的答案由你在局域网的经验决定,如果目标系统是Windows 2000或Windows XP而且你拥有管理员权限,你就可以使用下面的两个程序:

SysInternals的PsExec
BeyondLogic的BeyondExec


这两个程序都允许在远程计算机上运行任何程序,甚至可以把你的脚本复制到目标系统上.不过Windows XP Home Edition 上不能运行这个两个程序.

Q10. 我怎样制作一个拥有可选参数的自定义函数?  

A1. 你可以通过在声明函数时给参数指定一个默认值来做到. 下面是一个例子:
Func testme($param1, $param2 = "nothing", $param3 = 5)
     MsgBox(0, "", "Parameter one is required. The value of Parameter 1 is " & $param1 & @CRLF & "Parameter 2 is optional. The value of Parameter 2 is " & $param2 & @CRLF & "Parameter 3 is optional. The value of Parameter 3 is " & $param3)
EndFunc
如果调用testme()时只使用了一个参数[比如testme("test")]就会输出:

Parameter one is required. The value of Parameter 1 is test
Parameter 2 is optional. The value of Parameter 2 is nothing
Parameter 3 is optional. The value of Parameter 3 is 5

不过,如果调用函数时使用了超过2个参数,比如testme("test", "something"), 就会输出:

Parameter one is required. The value of Parameter 1 is test
Parameter 2 is optional. The value of Parameter 2 is something
Parameter 3 is optional. The value of Parameter 3 is 5


Q11. 我怎样让系统启动时自动运行脚本?

A1.你可以使用下面的语句来做到:
RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "MyProgramName", "REG_SZ", @ScriptFullPath)
或者:

FileCreateShortcut(@ScriptFullPath, @StartupCommonDir & "\MyProgramName.lnk")

Q12. 我怎样让脚本删除自己?

A1. 下面的代码可以删除一个正在运行的脚本.
Func _SelfDelete($iDelay = 0)
     Local $sCmdFile
     FileDelete(@TempDir & "\scratch.bat")
     $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
             & ':loop' & @CRLF _
             & 'del "' & @ScriptFullPath & '"' & @CRLF _
             & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
             & 'del ' & @TempDir & '\scratch.bat'
     FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
     Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
EndFunc


Q13. 我怎样在GUI里建立一个可点击的超链接?

A1. ChangeResolution.au3可以完成这些设置. 

Q14. 我怎样修改屏幕分辨率/刷新频率/颜色深度?

A1. Gafrost在这方面做了很大努力,并提供了一个UDF来帮助完成这个功能.

Q15. 在多显示器情况下我怎样得到屏幕分辨率?

A1. 下面的代码可以得到屏幕的总分辨率:

Global Const $SM_VIRTUALWIDTH = 78
Global Const $SM_VIRTUALHEIGHT = 79
$VirtualDesktopWidth = DLLCall("user32.dll", "int", "GetSystemMetrics", "int", $SM_VIRTUALWIDTH)
$VirtualDesktopWidth = $VirtualDesktopWidth[0]
$VirtualDesktopHeight = DLLCall("user32.dll", "int", "GetSystemMetrics", "int", $SM_VIRTUALHEIGHT)
$VirtualDesktopHeight = $VirtualDesktopHeight[0]


Q16. 我怎样注册一个文件类型[或者] 我怎样才能让我的程序变为一个文件类型的默认打开方式?

A1. 文件注册对那些新手来说的确有些困难. 第一件要做的事就是要让你的脚本能接受命令行调用. 下面是一段示例代码:

;$cmdline[0] is the number of parameters passed
If $cmdline[0] <> 0 Then
    $filename = $cmdline[1]
    ; Do something with the file here
    MsgBox(0, "UXYFixer", 'The file name passed to the command line is "' & $filename & '"')
Else
    ; We did not get any command line parameters.
    ; If this is a command line only program, you would want to
    ; alert the user that the command line parameters were incorrect.
    ; If this is a GUI program (like a notepad program), you would
    ; want to simply continue from here without opening a file.
    MsgBox(0, "UXYFixer", 'Command line parameters incorrect.' & @CRLF & 'Command line usage: "' & @ScriptName & '" "file to process"')
EndIf

  然后你的脚本就能接受文件了, 你可以开始注册一个文件类型. 为了避免错误,我对此专门制作了一个UDF—— FileRegister.au3
下面的代码演示了如何用这个UDF来注册/反注册一个文件类型:

#include "FileRegister.au3"
;==============================================================================================
;
; Description:     FileRegister($ext, $cmd, $verb[, $def[, $icon = ""[, $desc = ""]]])
;                Registers a file type in Explorer
; Parameter(s):   $ext -    File Extension without period eg. "zip"
;                $cmd -      Program path with arguments eg. '"C:\test\testprog.exe" "%1"'
;                      (%1 is 1st argument, %2 is 2nd, etc.)
;                $verb - Name of action to perform on file
;                      eg. "Open with ProgramName" or "Extract Files"
;                $def -      Action is the default action for this filetype
;                      (1 for true 0 for false)
;                      If the file is not already associated, this will be the default.
;                $icon - Default icon for filetype including resource # if needed
;                      eg. "C:\test\testprog.exe,0" or "C:\test\filetype.ico"
;                $desc - File Description eg. "Zip File" or "ProgramName Document"
;
;===============================================================================================

FileRegister("uxy", '"' & @ScriptFullPath & '" "%1"', "Open in UXYFixer", 1, @ScriptFullPath & ',0', "UXYFixer Document")

;===============================================================================
;
; Description:     FileUnRegister($ext, $verb)
;                UnRegisters a verb for a file type in Explorer
; Parameter(s):   $ext - File Extension without period eg. "zip"
;                $verb - Name of file action to remove
;                      eg. "Open with ProgramName" or "Extract Files"
;
;===============================================================================

FileUnRegister("uxy", "Open in UXYFixer")

Q17. 为什么点击我的下拉框(GUICtrlCreateCombo)时不出现一个下拉列表?

A1. 在使用GUICtrlCreateCombo前你先要确认height参数是你想要的下拉列表的高度,Windows XP会自动选择一个高度,但其他版本的Windows并不能这样做。

$combo = GUICtrlCreateCombo("",10,10,200,20)
应修改为:
$combo = GUICtrlCreateCombo("",10,10,200,200)

Q18. 为什么我的帖子没有人回答?

A1. 你是否对你的问题做了得体的描述? 如果你的标题或者对问题的描述含糊不清, 其他人只会忽略掉你的问题而不是回答它. 那些标题像 "帮助我", "我有了麻烦", "问题", "帮我看看代码的问题", "这段代码不能工作" 的帖子并不会引起其他人的注意. 那些有经验的用户(他们通常能解决你的问题) 经常会跳过类似的帖子. 一个规范的标题应该像这样:"使用WinWaitClose时出现的问题",或者 "陷入了死循环".
A2. 你是否贴出了你的代码? 如果你不贴出你的问题代码你就不可能得到帮助. 在发代码之前先把不相关的代码去掉.也许当然去掉不相关的代码时你已经看到问题所在的地方..也许会发现.原来是一个那样简单的问题.
A3. 请让你的文字变得易于阅读,适当的标点很重要,同时也不要给文字加上颜色.另外最好不要使用繁体字,繁体字并不能让你显得更有文化,相反而会影响他人的阅读.
另外很多人喜欢用些比较吓人的标题,比如"比如高手进来看一下"."版主进来解决一下"."高难度的问题".问题常常因为我不是高手或者版主而没有回答.或者发现"高难度"的问题原来是很菜滴.不是每个人都喜欢扮帅滴.....
还有,在提问建议多搜索一下。

Q19. 为什么杀毒软件报告我的脚本被感染?

A1. AutoIt并没有在你的系统里安装病毒,如果你的程序被报毒的话(前提是你自己不怀恶意) 那么这就是一次误报. 杀毒软件会在编译过后的AutoIt脚本里发现一些标记,并以此认为你的脚本被感染病毒.之所以会出现这样的情况有下面的两点原因:

AutoIt使用UPX加壳. UPX是一种开源的程序压缩软件. 经常被一些病毒使用(让它们变得更小).
一些怀恶意的写脚本的人让AutoIt脚本引擎被标识为了病毒.
所以,请积极拨打各大杀毒软件厂商的电话来报告这些误报情况:

金山:010-82331816
瑞星:010-82678800
江民:800-8102300
卡巴斯基:4008110186



                     补充AU3中文官网上的 《FAQ 大全》初学者必看

     说明:     
     该说的“提问智慧”里边已经说了,这里不重复了。不要拿“新手”作借口。。。
     太多的重复提问贴提问,只会让人看而生厌,并且有浪费时间的嫌疑,这里重复一句,学会搜索论坛。
     提问区“已解决”版块里的问题都是解决了的,建议新手多翻下,多看下。这里发些常见的问题解答。
     声明:此贴只发www.autoit.net.cn,其他的都是转贴。转贴请注明出处,多谢合作。

常见问题:
Q1 如何调试脚本?
引用:
MsgBox(0,"测试",$var)   
ConsoleWrite("var=" & $var & @CRLF)

Q2 操作CMD相关命令

Q2.1 如何运行DOS命令?
引用:
Run(@ComSpec & ' /c dir>d:dir.txt',"", @SW_HIDE)
引用:
#include <;Process.au3>
$rc = _RunDos("start Http://www.autoit.net.cn")

Q2.2 运行DOS命令如何连接AU3变量?
引用:
Local $var="d:dir.txt"
Run(@ComSpec & ' /c dir>"'&$var&'"',"", @SW_HIDE)

Q2.3 运行DOS命令如何自动应答? (注意:这并不属于AU3的问题,这里附带说一下。)
引用:
RunWait(@ComSpec & ' /c echo y|cacls %systemroot%system32wpcap.dll /d everyone', @SystemDir, @SW_HIDE)
Q2.4 多层DOS命令如何用?如netsh,diskpart等。
引用:
$dns="192.168.0.1"
RunWait(@ComSpec & ' /C netsh -c interface ip set dns 本地连接 source=static addr="' & $dns &'"   register=PRIMARY ',"", @SW_HIDE )

Q2.5 运行DOS命令如何直接截取回显?
引用:
;注意:回显截取只支持Run而不是RunWait
#include
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /c sc query Alerter", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
     $lines &= $line
Wend
MsgBox(0,"test",$lines)
EndFunc

Q3 如何防止程序重复运行?
引用:
$g_szVersion = "test"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
引用:
#include
_Singleton("test")

Q4 如何直接运行系统程序关联的文件?如[.txt, .msi, .pdf, .jpg, .lnk, .msc]等等!!!
引用:
ShellExecute("Notepad.exe")
ShellExecute("test.txt", "", @ScriptDir, "edit")
ShellExecute("http://www.autoit.net.cn")
ShellExecute("C:boot.ini", "", "", "print")
ShellExecute("test.lnk","",@ScriptDir)
ShellExecute("gpedit.msc", "", "", "open", @SW_MAXIMIZE)

Q5 如何控制系统服务?
引用:
API的控制服务
_StartService()        开始服务
_StopService()         停止服务
_ServiceExists()       检测服务
_ServiceRunning()      运行服务
_CreateService()       建立服务
_DeleteService()       删除服务
WMI的控制服务
_ServStart()           开始服务
_ServStop()            停止服务
_ServDelete()          删除服务
_ServGetDetails()      服务详情
_ServGetState()        服务状态
_ServListInstalled()   服务列表
_ServPause()           暂停服务
_ServResume()          服务改名
_SerSetState()         设置服务状态

http://www.autoit.net.cn/viewthr ... &extra=page%3D1

Q6 如何操作注册表?
Q6.1 常用的注册表设置
引用:
;读取注册表指定的值
$var = RegRead("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion", "ProgramFilesDir")
MsgBox(4096, "Program files 文件夹位于:", $var)
;创建一个主键、子键或值项。
RegWrite("HKEY_LOCAL_MACHINESOFTWARETest", "TestKey", "REG_SZ", "Hello this is a test")
;删除注册表指定的值 (注意:这里删除的是键项,而不是键值。)
RegDelete("HKEY_LOCAL_MACHINESOFTWARE", "TestKey")
;其他还有RegEnumKey(),RegEnumVal(),详细应用请参考帮助。

Q6.2 注册表权限设置
引用:
http://www.autoit.net.cn/viewthr ... hlight=%C8%A8%CF%DE

Q7 如何不重启刷新注册表马上生效?
引用:
Do
        ProcessClose("explorer.exe")
Until Not ProcessExists("explorer.exe")
Run("gpupdate /force","",@SW_HIDE)
引用:
;强烈推存应用这个
DllCall("user32.dll","int","SendMessageTimeout","hwnd",65535,"int",26,"int",0,"int",0,"int",0,"int",1000,"str","dwResult")

Q8 AU3编写的程序如何带参数运行?
引用:
If $cmdline[0] <> 0 Then
    $filename = $cmdline[1]
     MsgBox(4096, "测试", '你输入的命令行参数是 "' & $filename & '"')
Else   
    MsgBox(64, "测试", '请带参数运行此程序')
EndIf
引用:
If StringInStr($CmdLineRaw, "/help") Then
        MsgBox(64,"帮助","这是本程序的帮助说明")
EndIf        

Q9 如何删除脚本程序自身?
引用:
;删除脚本程序自身
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "[email=]'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE[/email])
;删除脚本所在目录的一切东西
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&rd /q/s "[email=]'&@ScriptDir&'"',@ScriptDir,@SW_HIDE[/email])

Q10 AU3如何实现加密字符串和文件校验?
引用:
;RC4加密(AU3内置函数)
#include
Opt("MustDeclareVars", 1)
Local $var
;加密字符串
$var=_StringEncrypt(1,"sanhen",@ComputerName,1)
MsgBox(0,"test",$var)
;解密字符串
$var=_StringEncrypt(0,$var,@ComputerName,1)
MsgBox(0,"test",$var)
引用:
;MD5字符串加密
http://www.autoit.net.cn/viewthread.php?tid=378&highlight=MD5
引用:
;MD5文件效验
http://www.autoit.net.cn/viewthr ... &extra=page%3D1
引用:
;哈唏算法
http://www.autoit.net.cn/viewthread.php?tid=372&highlight=MD5

Q11 如何修改屏幕分辨率/刷新频率/颜色深度?
引用:
http://www.autoit.net.cn/viewthr... angeDisplaySettings

Q12 如何在界面显示GIF图片?
引用:
http://www.autoit.net.cn/viewthr... ht=Shell.Explorer.2

Q12.1 AU3调用OBJ的一点点例子?
引用:
http://www.autoit.net.cn/viewthread.php?tid=365&highlight=obj

Q13 如何在界面上显示SWF格式的文件?
引用:
参考Q12.1的例子
或者通过IE对象来实现,请参考:
http://www.autoit.net.cn/viewthr... &extra=page%3D1

Q14 如何控制摄像头?
引用:
http://www.autoit.net.cn/viewthr... &extra=page%3D3

Q15 如何界面中调用皮肤?
引用:
http://www.autoit.net.cn/viewthr ... &extra=page%3D3
http://www.autoit.net.cn/viewthr ... &extra=page%3D2


F22注:部分链接应该已失效;以上两个论坛不同的版本提问与回答各有特点,看来不同的思维方式与水平还是挺有意思的。

[ 本帖最后由 R.E.C--F22 于 2009-8-28 19:42 编辑 ] 青春见证辉煌,热血铸就历史!好为人师前请不要不求甚解! 回复 引用

TOP

R.E.C--F22
  • 发短消息
  • 加为好友

R.E.C--F22 当前在线

组织部长[B-01107-T]

来自
南宁 
最后登录
2011-1-17 

组织部长[B-01107-T]
兵团大校

UID
14786 
帖子
4100 
功勋
6500 点 
军饷
240 元 
阅读权限
150 

板凳 发表于 2009-8-23 15:40 | 只看该作者

AU3 程序入门

  AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件,简而来说是脚本语言,因其可以生成exe、风格简单适用而且支持GUI,com等很受网管同行看好,其可以做的事非常之多,网吧常用基本上可以完成。网管之星,火狐等游戏更新软件就是用该软件写成。到了后面,随着学习的深入,这里放出常见源码供参考。

1,首先下载安装:
  地址:http://down.wglm.net/system/system/20071108/2908.html
  装好后打开目录:x:autoit3\SciTe\SciTE.exe (编辑器,支持语法高亮,你也可以用记事本,但不推荐)双击打开。

2,下面我们来写第一个程序。

注意:";" 号表示注释
例子 1

以下是代码

  • msgbox(0,"标题-wglm","你好,世界")
  • exit


解释:
;msgbox是弹出一个对话框函数,0,表示标志(可以设定各种类型的弹出对话框,比如带问号,带错误标志),"标题-wglm"是窗口标题,"你好,世界"是对框内容
exit表示退出

3,点scite_autoit编辑器的,"工具"-"编译脚本",
  这里可以设置生成exe文件的图标,文件名,“资源修改”选项卡可以设置程序的一些版权信息说明等。也就是点exe文件右键属性,看到一些内容。
点击“编译脚本”按钮,就会生成exe文件,在刚设定路径找到exe文件双击,我们的第一个程序就成功了
  好了,最基本和最简单就示范到这里,是不是很简单很容易入门?不要偷懒,学计算机重在实践,你也来做一个?把图抓上来我看看?
     前面已经教了大家哪里下载教程和编程工具在au3里实现我们需要的这个提示功能,只需一句代码(一个函数)。

  • TrayTip( "公告标题-wglm", "紧急通知,村支书教大家学au3,各家男女老少晚饭后请准时集合学习",3)
  • sleep(3000)

  好,编译成exe文件,双击。是不是成功了?

;traytip表示在托盘图标上显示一个气球提示,"公告标题-wglm"表示标题,"紧急通知,村支书教大家学au3,各家男女老少晚饭后请准时集合学习"表示提示内容,3表示提示显示时间,因为微软系统关系这个时间只是大略值。
sleep(3000)
;表示让au3程序暂停3秒(3000毫秒),如果没有这句,程序一运行便退出,也就看不到提示效果了。
traytip函数的完整格式如下:

  • TrayTip ( "标题", "文本", 超时时间 [, 属性] )

  初学编程,例如有些朋友说连批处理的for都搞不清楚,可能对于初学者最不好理解的就是函数的参数,还有那些逗呈,括号,中括号他们的用法和意义了。在这里我可以很负责任的告诉各位,其实非常好理解。

  下面将专为大家讲解这些表面上让人头晕而实际很容易理解的内容,AU3的学习过程,很多都是在对于函数的理解灵活运行上,函数虽多,但不用强记,用熟了自然便会贯通。
  运行于windows的程序,多半要利用windows的编程接口,所以,只要你学会了一种编程,其它的语言相对会容易掌握一些,而且程序学习快慢,还要看你对windows了解多少,了解越多,学习越容易。
   有朋友问为什么这个文章跟上面的教程不一样,问得好,的确是不一样。培养天才人物的有效途径是左右脑协调合作(奥尔森),《学习的革命》一书中指出,学习课程,都应该先从概貌开始,掌握整体图表和整体结构,再掌握部份具体细节。
  传统的教学,不慌不忙,一章一节,每次课程,只有部份,没有总体慨貌,这很蠢而且没有效率。
  开始的这几张,都是教各位掌握au3的整体结构和从宏观上了解au3是一个什么东东,能做些什么事,如何去操控它为我们服务。这就是我们学习的过程,先掌握全局,再细入微观、深入。
  废话完了

  第一章,第三节,用户图形界面(GUI)(应朋友要求,这一张就多一点除了窗口的讲解,还续上 上一节课留下的逗号,括号,中括号)
  au3是支持窗口的,比尔盖茨的成功起始于大大改善了计算机与人之间的交流友好程度,这得益于窗口(windows)这个概念,GUI你则可以理解为程序界面(GUI是一个窗口界面,但包括各种控件,如按钮,编辑框等等)
001
下面我们还是以写一个网吧公告为例,开始这一节的实例


  • #include
  • GUICreate ( "公告 - wglm.net", 200, 200)
  • GUISetState (@SW_SHOW)
  • GUICtrlCreateLabel("欢迎光临XX网吧",10,10,190,15)
  • GUICtrlCreateLabel("本网吧网速过快,请看管好随身物品。",10,25,190,15)
  • While 1
  • $msg = GUIGetMsg()
  • If $msg = $GUI_EVENT_CLOSE Then ExitLoop
  • Wend
  • exit


#include
;表示包含一个GUIConstants.au3库文件,如果没有这一行,下面一些函数将不可用。这是最基本的
GUICreate ( "公告 - wglm.net", 200, 200)
;表示创建一个窗口,"公告 - wglm.net" 是公告, 200, 200 分别表示宽高
GUISetState (@SW_SHOW)
; 显示空白窗口,窗口被创建后,默认是不显示,这一行的作用是显示出来。
GUICtrlCreateLabel("欢迎光临XX网吧",10,10,190,190)
;创建一个创建一个静态的 Label 控件,用来显示文字,"欢迎光临xx网吧" 表示窗口标题,",10,10" 表示距离窗口在与上的距离,190,15 分别表示宽和高
GUICtrlCreateLabel("本网吧网速过快,请看管好随身物品。",10,25,190,15)
;同上 
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

;表示运行脚本到窗口关闭,关于循环以后再详解。
exit
;退出,可要可不要,因为脚本运行完自动会退出,写在这里感觉好看一点。

002
  当然一个网吧公告不可能这么丑,如何让这个窗口具有一些特效呢,或者更美观呢?比如动画显示,动画关闭,我们这里只示例一下,不作详解,可以利用windows API 中的 AnimateWindow 函数,(这本不属于au3内容,可以说所有windows下程序通用)
那么我们将
GUICreate ( "公告 - wglm.net", 200, 200)
这一行,改成以下内容(两行)

  • $gui1 = GUICreate ( "公告 - wglm.net", 200, 200)
  • DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $gui1, "int", 500, "long", 0x00040010)

  编译之后,再试一下?看是不是窗口有了进入特效?退出特效暂不提,当然很简单。还有更多的效果请参阅windows API手册.
  至于如何让窗口有个漂亮的外表,那就利用一些皮肤之类的了,以后再谈。

003
如何让程序通用,那就需要用配置文件的形式,你把程序分发给别人后,别人只需要修改其中配置.ini文件,就可以实现,修改提示内容等,配置文件的读取和写入还是另外一章再讲好了,因内容比较重要。

004 
现在我们能过弹出一个对话框来讲函数中的逗号,括号,中括号帮助文件中对于msgbox这个函数是这样解释的
引用MsgBox
---------------------------------------------
显示一个简单的对话框(可设置超时属性)。
MsgBox ( 标志, "标题", "文本" [, 超时时间] )


如何理解呢?
1
基本理解,帮助中也说了标志一些十进制,如1 2 3 4 5 ,需要相应的内容则相加这些数字
比如我们需要一个带有确定和取消的对话框,那么就是


  • msgbox(1,"标题","这里是文本")

如果我们需要提示框有个问号,那么32+1,标志改为33

  • msgbox(33,"标题","这里是文本")


2
中括号括起来的内容,表示可选参数,也就是说你用不用都可以,但前面的必选参数是必须设置的。例如我们需要这个对话框3秒内关闭。那么实际运行用中就是下面这个样子,[]中括号实际是不需要输入的

  • msgbox(33,"标题","这里是文本",3)

如果不需要设置对话框消失那么,[]中括号也是不需要输入的就是下面这个样子

  • msgbox(33,"标题","这里是文本")

这里就教大家如何理解帮助文件,所以大家一定多去看些基本的东西和函数的用法,多练习,使用。 青春见证辉煌,热血铸就历史!好为人师前请不要不求甚解! 回复 引用

TOP

R.E.C--F22
  • 发短消息
  • 加为好友

R.E.C--F22 当前在线

组织部长[B-01107-T]

来自
南宁 
最后登录
2011-1-17 

组织部长[B-01107-T]
兵团大校

UID
14786 
帖子
4100 
功勋
6500 点 
军饷
240 元 
阅读权限
150 

4# 发表于 2009-8-23 16:01 | 只看该作者

AutoIt3 脚本实例

                                AutoIt3 隐藏显示系统文件+扩展名的脚本实例


#NoTrayIcon
#Region ;**** 参数创建于 AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=ico2.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseAnsi=y
#AutoIt3Wrapper_Res_Comment=[显示/隐藏系统文件]版本:绿色版  出自:IsBase
#AutoIt3Wrapper_Res_Description=右键添加[显示/隐藏系统文件]快捷方式
#AutoIt3Wrapper_Res_Fileversion=2.0.0.9
#AutoIt3Wrapper_Res_LegalCopyright=版权所有(C) 1996-2009  、IsBase技术交流
#AutoIt3Wrapper_Res_SaveSource=y
[email=#AutoIt3Wrapper_Res_Field=Email|168@IsBase.net]#AutoIt3Wrapper_Res_Field=Email| 168@IsBase.net[/email]
#AutoIt3Wrapper_Res_Field=QQ/TM| 2611262
#AutoIt3Wrapper_Res_Field=QQ群| 47328822
#AutoIt3Wrapper_Res_Field=技术网站|http://www.IsBase.net
#AutoIt3Wrapper_Res_Field=作者:IsBase
#AutoIt3Wrapper_Res_Field=产品版本| V2009.05.01
#AutoIt3Wrapper_Res_Field=产品名称|[显示/隐藏系统文件] V2009.05.01
#AutoIt3Wrapper_Res_Field=内部说明|[显示/隐藏系统文件] V2009.05.01 IsBase技术交流!不得用于任何商业及非法目的!
#AutoIt3Wrapper_Res_Field=公司|  
#AutoIt3Wrapper_Res_Field=合法商标|  
#AutoIt3Wrapper_Res_Field=内部名称|显示/隐藏系统文件.exe
#AutoIt3Wrapper_Res_Field=源文件名|IsBase.exe
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Tidy=y
#Tidy_Parameters=/rel
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include
$Form1 = GUICreate("安装 - 显示/隐藏系统文件", 487, 264, 251, 170)
GUISetIcon("D:\autoit3\ico2.ico")
$GroupBox1 = GUICtrlCreateGroup("", 8, 1, 473, 225)
$Label1 = GUICtrlCreateLabel("【安装】将[显示/隐藏系统文件]加入到右键菜单", 76, 16, 360, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x0000FF)
$Label2 = GUICtrlCreateLabel("【删除】将[显示/隐藏系统文件]从右键菜单删除", 74, 56, 360, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x0000FF)
$Label3 = GUICtrlCreateLabel("注意:请不要对其他窗口操作,以免误操作!", 93, 88, 324, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$Label4 = GUICtrlCreateLabel("", 63, 120, 385, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000080)
$Label5 = GUICtrlCreateLabel("超级QQ群:47328822  Email:
168@isbase.net", 60, 160, 390, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000080)
$Label6 = GUICtrlCreateLabel("版权所有(C) 1996-2009  、IsBase技术交流", 90, 200, 331, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$Pic1 = GUICtrlCreatePic("D:\autoit3\(自定义图片1).jpg", 23, 16, 44, 44)
$Pic2 = GUICtrlCreatePic("D:\autoit3\(自定义图片2).jpg", 15, 64, 44, 156)
GUICtrlSetTip(-1, "66")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$tab5button1 = GUICtrlCreateButton("安装(&I)", 64, 232, 75, 25, 0)
$tab5button2 = GUICtrlCreateButton("卸载(&U)", 192, 232, 75, 25, 0)
$tab5button3 = GUICtrlCreateButton("退出(&Q)", 320, 232, 75, 25, 0)
GUISetState(@SW_SHOW)
While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $tab5button1
    RegWrite('HKCR\Directory\Background\shellex\ContextMenuHandlers\SuperHidden', '', 'Reg_sz', '')
    RegWrite('HKCR\CLSID\\InProcServer32', '', 'Reg_Expand_sz', '%SystemRoot%\system32\shdocvw.dll')
    RegWrite('HKCR\CLSID\\InProcServer32', 'ThreadingModel', 'Reg_sz', 'Apartment')
    RegWrite('HKCR\CLSID\\Instance', 'CLSID', 'Reg_sz', '')
    RegWrite('HKCR\CLSID\\Instance\InitPropertyBag', 'method', 'Reg_sz', 'ShellExecute')
    RegWrite('HKCR\CLSID\\Instance\InitPropertyBag', 'Param1', 'Reg_sz', 'SuperHidden.exe')
    RegWrite('HKCR\CLSID\\Instance\InitPropertyBag', 'command', 'Reg_sz', '[显示/隐藏系统文件]')
    RegWrite('HKCR\CLSID\\Instance\InitPropertyBag', 'CLSID', 'Reg_sz', '')
    RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'Reg_Dword', '0x00000000')
    RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden', 'Reg_Dword', '0x00000002')
    FileInstall("SuperHidden.exe", @SystemDir & "\")
    If Not IsDeclared("sToolTipAnswer") Then Local $sToolTipAnswer
    $sToolTipAnswer = ToolTip("显示/隐藏系统文件 V2.2.09 已经安装卸载" & @CRLF & " 本程序由IsBase制作完成" & @CRLF & "  仅供安全技术研究及绿兵内部交流使用" & @CRLF & "   不得散播到其他网站" & @CRLF & " 谢谢您的使用!5秒后自动退出" & @CRLF & "   版权所有(C) 1996-2009  、IsBase技术交流", 400, 500, "右键添加[显示/隐藏系统文件]软件安装成功", 1, 1)
    Sleep(5000)
    _quit()
    Case $msg = $tab5button2
    RegDelete("HKCR\CLSID\")
    RegDelete("HKCR\Directory\Background\shellex\ContextMenuHandlers\SuperHidden")
    FileDelete(@SystemDir & "\SuperHidden.exe")
    If Not IsDeclared("sToolTipAnswer") Then Local $sToolTipAnswer
    $sToolTipAnswer = ToolTip("[显示/隐藏系统文件] V2009.05.01 已经成功卸载" & @CRLF & " 本程序由IsBase制作完成" & @CRLF & "  仅供安全技术研究及绿兵内部交流使用" & @CRLF & "    不得散播到其他网站" & @CRLF & " 谢谢您的使用!5秒后自动退出" & @CRLF & "   版权所有(C) 1996-2009  、IsBase技术交流", 400, 500, "右键添加[显示/隐藏系统文件]软件卸载成功", 1, 1)
    Sleep(5000)
    _quit()
    Case $msg = $tab5button3
    GUICtrlSetState($tab5button3, $GUI_DISABLE)
    ToolTip("正在退出右键添加[显示/隐藏系统文件]软件,请稍候....", @DesktopWidth - 600, @DesktopHeight - 300, "", 0, 1)
    Sleep(1500)
    _quit()
    EndSelect
   
WEnd
Func _quit()
    Exit
EndFunc   ;==>_quit

if RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'Reg_Dword', '0x00000000') = RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'Reg_Dword', '0x00000000') then
   
RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'HideFileExt', 'Reg_Dword', '0x00000001')
RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden', 'Reg_Dword', '0x00000002')
RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'Reg_Dword', '0x00000000')
    RegWrite('HKCR\CLSID\\Instance\InitPropertyBag', 'command', 'Reg_sz', '显示/隐藏[系统文件,扩展名]')
    Send ("""""")
    ;MsgBox(0, "显示/隐藏[系统文件,扩展名]","OK! 您已经可以查看系统隐藏文件和它们的扩展名啦!", 2)
EndIf
if RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'Reg_Dword', '0x00000001') = RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'Reg_Dword', '0x00000001') then
   
RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'HideFileExt', 'Reg_Dword', '0x00000000')
RegWrite('HKCU\Software\Microsoft"e\Windows\CurrentVersion\Explorer\Advanced', 'Hidden', 'Reg_Dword', '0x00000001')
RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'Reg_Dword', '0x00000001')
    RegWrite('HKCR\CLSID\\Instance\InitPropertyBag', 'command', 'Reg_sz', '显示/隐藏[系统文件,扩展名]')
    Send ("""""")
    ;'WSHShell.Popup "OK! 现在已经隐藏了系统隐藏文件和它们的扩展名啦!", 1, sTitle2, vbInformation
EndIf


注意部分文件路径及注释请以实际路径为准!以上仅供参考!



                     AutoIt3 提升权限进行局域网时间校对的脚本实例

#NoTrayIcon
#include
#include
Global $ourProcess,$txt,$cl,$i,$date,$kcd=0,$time
Global $retime[3]                         ;时间数组
Global $CF[5]                                 ;年月日时间数组
Global $r[6]                                 ;最终分析比对数组,以便确定是否要改写时间
If $cmdline[0] = 0 Then                 ;无参数提示
         MsgBox(48,'请填写正确参数
[email=!@ToMan]!@ToMan','[/email]如要改时间请在程序后面加参数如: DFTime 192.168.0.10 只需填服务器IP就可以了')
         Exit
EndIf
$ourProcess = Run(@ComSpec & ' /k net time \' & $cmdline[1],'', @SW_HIDE, $STDOUT_CHILD + $STDIN_CHILD)         ;获取局域网服务器的时间数据
$txt = StdoutRead($ourProcess)
$cl = StringTrimLeft($txt,StringInStr($txt,'是')+1)         ;去除无效字符
$CF = StringSplit($cl,' ')                                                         ;分离获取年月日时间
$date = $CF[2]
If StringIsDigit(StringStripWS($CF[3],8)) = 0 Then         ;识别时间所在数组,并识别上午、下午或24小时制
         if $CF[3]="下午" Then $kcd=12                                                 ;如果是下午,则加上12小时时差
         $time = $CF[4]
         $retime=StringSplit(StringStripWS($time,8),":")
         $time=$retime[1]+$kcd&":"&$retime[2]
Else
         $time = $CF[3]
EndIf

$r=StringSplit($date&"/"&$retime[1]+$kcd&"/"&$retime[2],"/")         ;取年月日时分进行比对,以明确是否执行写入操作
if StringLen ($r[1])=1 Then $r[1]=000&$r[1]                         ;补齐年位数
if StringLen ($r[1])=2 Then $r[1]=00&$r[1]
if StringLen ($r[1])=3 Then $r[1]=0&$r[1]

if StringLen ($r[2])=1 Then $r[2]=0&$r[2]                         ;补齐月位数
if StringLen ($r[3])=1 Then $r[3]=0&$r[3]                         ;补齐日位数
if StringLen ($r[4])=1 Then $r[4]=0&$r[4]                         ;补齐时位数
if StringLen ($r[5])=1 Then $r[5]=0&$r[5]                         ;补齐分位数

;MsgBox(0,"test",$r[1]&$r[2]&$r[3]&$r[4]&$r[5]&@CRLF&@YEAR&@MON&@MDAY&@HOUR&@MIN)
if @YEAR=$r[1] and @MON=$r[2] and @MDAY=$r[3] and @HOUR=$r[4] and @MIN=$r[5] Then
         Exit
Else
         FileInstall('..\..\cmd\wsu.exe',@TempDir&'\')
         RunWait(@ComSpec & " /C "
[email=&@TempDir]&@TempDir[/email]& '\wsu ' & '"' & 'cmd /c echo ' & $date & '|date' & '"','', @SW_HIDE)
         RunWait(@ComSpec & " /C "
[email=&@TempDir]&@TempDir[/email]& '\wsu ' & '"' & 'cmd /c echo ' & StringStripWS($time,8) & '|time' & '"','', @SW_HIDE)
         FileDelete(@TempDir&"\wsu.exe")
         Exit
EndIf



               AutoIt3 FTP文件上传下载器的脚本实例

#NoTrayIcon
#include
#include "
ftp.au3"
#include
$z_ver = "V2.1.505"
$title = "FTP文件上传下载器 " & $z_ver
Global $ftpserverinfo = "
ftp.ini"
If( Not FileExists($ftpserverinfo) ) Then
MsgBox(48,"ERROR","配置文件 "&$ftpserverinfo&" 丢失!")
Exit
EndIf
Dim $ftp_ip = IniRead($ftpserverinfo, "serverinfo", "ip", "")
Dim $ftp_name = IniRead($ftpserverinfo, "serverinfo", "name", "")
Dim $ftp_pass = IniRead($ftpserverinfo, "serverinfo", "pass", "")
Dim $ftp_ctrlport = IniRead($ftpserverinfo, "serverinfo", "ctrlport", "")
Dim $ftp_dataport = IniRead($ftpserverinfo, "serverinfo", "dataport", "")

$gui_main = GUICreate($title, 320,130, @DesktopWidth/2-160, @DesktopHeight/2-45, -1, 0x00000018); WS_EX_ACCEPTFILES
;~ $Dummy1 = GUICtrlCreateDummy()
$Label_txt = GUICtrlCreateLabel("请将要上传的文件拖动到下面的文本框中", 11, 13, 220, 17)
$input_file = GUICtrlCreateInput ( "", 10, 35, 300, 20)
GUICtrlSetState(-1,$GUI_DROPACCEPTED)
GUICtrlCreateLabel("FTP服务器:" & $ftp_ip, 11, 78, 220, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateLabel("Powered by zeebit", 210, 116, 180, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
$btn_upload = GUICtrlCreateButton ("上传", 160, 75, 49, 20)
$btn_download = GUICtrlCreateButton ("下载", 210, 75, 49, 20)
$btn_help = GUICtrlCreateButton ("帮助", 260, 75, 49, 20)
$Graphic1 = GUICtrlCreateGraphic(0, 98, 320, 18)
GUICtrlSetBkColor(-1, 0xD4D0C8)
$Label_stat = GUICtrlCreateLabel("欢迎使用 "&$title, 11, 101, 320, 14)
GUICtrlSetBkColor(-1, 0xD4D0C8)
GUISetState ()

$gui_help = GUICreate($title, 320,130, @DesktopWidth/2-160, @DesktopHeight/2-45, -1, 0x00000018); WS_EX_ACCEPTFILES
;~ $Icon = GUICtrlCreateIcon("d:\My Documents\icon\favicon.ico", 0, 288, 0, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP))
;~ $Label_h0 = GUICtrlCreateLabel("注意:", 11, 13, 320, 17)
$Label_h1 = GUICtrlCreateLabel("1、正被打开着的文件,上传时可能会失败。", 12, 13, 270, 17)
$Label_h2 = GUICtrlCreateLabel("2、在文本框中输入完整准确的文件名,再点“下载”,可以从FTP服务器下载指定文件到桌面。", 12, 33, 300, 34)
$Label_h3 = GUICtrlCreateLabel("3、如果提示连接FTP服务器出错,请确定网络畅通且服务器运行正常。", 12, 66, 310, 27)
$btn_back = GUICtrlCreateButton ("返回", 250, 95, 60, 20)
GUICtrlCreateLabel("Powered by zeebit", 210, 116, 180, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_HIDE, $gui_help)

Local $nMsg
While 1
$nMsg = GUIGetMsg()
Select
   Case $nMsg = $GUI_EVENT_CLOSE
    Exit
   Case $nMsg = $btn_help
    GUISetState(@SW_HIDE, $gui_main)
    GUISetState(@SW_SHOW, $gui_help)
   Case $nMsg = $btn_back
    GUISetState(@SW_HIDE, $gui_help)
    GUISetState(@SW_SHOW, $gui_main)
   Case $nMsg = $btn_download
    $full_path = GUICtrlRead($input_file)
    If($full_path=="") Then
     GUICtrlSetData($Label_stat,"请输入要下载的文件名!")
     GUICtrlSetBkColor(-1, 0xD4D0C8)
     ContinueLoop
    EndIf
    GUICtrlSetState($btn_download, $GUI_DISABLE)
    $array_filename = StringSplit($full_path,"\")
    $file_name = $array_filename[$array_filename[0]]
    $error_i = 0
    $dllhandle = DllOpen( 'wininet.dll' )
     if @error then
      GUICtrlSetData($Label_stat,"DllOpen wininet.dll Failed")
     EndIf
    $z_ftpOpen = _FTPOpen('MyFTP_Control')
     if @error then
      GUICtrlSetData($Label_stat,"打开FTP会话出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
     EndIf
    $z_ftpConn = _FTPConnect($z_ftpOpen, $ftp_ip, $ftp_name, $ftp_pass, $ftp_ctrlport)
     if @error then
      GUICtrlSetData($Label_stat,"连接FTP服务器出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
      $error_i = $error_i+1
;~       ContinueLoop
     EndIf
    If($error_i==0) Then
     $z_ftpPut   = _FtpGetFile($z_ftpConn, '/'&$file_name, @DesktopDir & '\' & $file_name,1,0)
     if @error then
      GUICtrlSetData($Label_stat,"从FTP服务器下载文件时出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
      $error_i = $error_i+1
     EndIf
    EndIf
    $z_ftpColse = _FTPClose($z_ftpOpen)
     if @error then
      GUICtrlSetData($Label_stat,"结束FTP会话出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
     EndIf
    DllClose($dllhandle)
     if @error then
      GUICtrlSetData($Label_stat,"DllClose wininet.dll Failed")
     EndIf
    GUICtrlSetData($input_file,"")
    If($error_i ==0) then
     GUICtrlSetData($Label_stat,"“"&$file_name&"”成功下载到桌面!")
     GUICtrlSetBkColor(-1, 0xD4D0C8)
    EndIf
    $error_i = 0
    GUICtrlSetState($btn_download, $GUI_ENABLE)
   Case $nMsg = $btn_upload
    $full_path = GUICtrlRead($input_file)
    If($full_path=="") Then
     GUICtrlSetData($Label_stat,"请选择要上传的文件!")
     GUICtrlSetBkColor(-1, 0xD4D0C8)
     ContinueLoop
    EndIf
    GUICtrlSetState($btn_upload, $GUI_DISABLE)
    $array_filename = StringSplit($full_path,"\")
    $file_name = $array_filename[$array_filename[0]]
    $error_i = 0
    $dllhandle = DllOpen( 'wininet.dll' )
     if @error then
      GUICtrlSetData($Label_stat,"DllOpen wininet.dll Failed")
     EndIf
    $z_ftpOpen = _FTPOpen('MyFTP_Control')
     if @error then
      GUICtrlSetData($Label_stat,"打开FTP会话出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
     EndIf
    $z_ftpConn = _FTPConnect($z_ftpOpen, $ftp_ip, $ftp_name, $ftp_pass, $ftp_ctrlport)
     if @error then
      GUICtrlSetData($Label_stat,"连接FTP服务器出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
      $error_i = $error_i+1
;~       ContinueLoop
     EndIf
    If($error_i==0) Then
     $z_ftpPut   = _FtpPutFile($z_ftpConn, $full_path, '/'&$file_name)
     if @error then
      GUICtrlSetData($Label_stat,"上传文件到FTP服务器时出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
      $error_i = $error_i+1
     EndIf
    EndIf
    $z_ftpColse = _FTPClose($z_ftpOpen)
     if @error then
      GUICtrlSetData($Label_stat,"结束FTP会话出错!")
      GUICtrlSetBkColor(-1, 0xD4D0C8)
     EndIf
    DllClose($dllhandle)
     if @error then
      GUICtrlSetData($Label_stat,"DllClose wininet.dll Failed")
     EndIf
    GUICtrlSetData($input_file,"")
    If($error_i ==0) then
     GUICtrlSetData($Label_stat,"“"&$file_name&"”上传成功!")
     GUICtrlSetBkColor(-1, 0xD4D0C8)
    EndIf
    $error_i = 0
    GUICtrlSetState($btn_upload, $GUI_ENABLE)
EndSelect
WEnd

ftp.ini配置文件内容
[serverinfo] ip="127.0.0.1"----------------这个根据实际情况修改 name="ftp" pass="ftp" ctrlport="21"---------------这个暂时没用到 dataport="22"------------------这个暂时没用到 青春见证辉煌,热血铸就历史!好为人师前请不要不求甚解! 回复 引用

TOP

R.E.C--F22
  • 发短消息
  • 加为好友

R.E.C--F22 当前在线

组织部长[B-01107-T]

来自
南宁 
最后登录
2011-1-17 

组织部长[B-01107-T]
兵团大校

UID
14786 
帖子
4100 
功勋
6500 点 
军饷
240 元 
阅读权限
150 

5# 发表于 2009-8-23 16:18 | 只看该作者

从批处理(bat)转到au3应该做的

我们有两种方法从bat转到au3:
  一是直接在au3中运行CMD命令,这个比较简单。但是如果系统运行不了某个外部命令或者CMD被限制使用,这时,我们的调用就会失效了。
  二是用au3内置函数来完成要做的事。

我们先简单说第一种方法:

#include
_rundos("echo wglm.net >c:\1.txt")

其中 "echo wglm.net >c:\1.txt"就是我们的DOS命令,表示显示字符串 wglm.net 并将命令结果输出到c:\1.txt 中。
这种方法,是直接用au3调用批处理命令,相对简单的多,会用批处理的战友即刻就可以学会。

再说第二种方法:
  毕竟,我们在学习一种新的脚本之前,若非必要(只有批处理能完成的,au3无法做到才考虑这种方法)就尽可能不要调用其它程序,因为要考虑其它程序(bat)到底是不是可以运行。

1、删除文件
FileDelete ( "c:\1.txt" )

表示删除c盘下1.txt文件

2、复制文件
FileCopy ( "c:\1.txt", "c:\2.txt" , 1)
表示将c:\1.txt移动到c:\2.txt,标志1,表示覆盖已存在的文件,更多可选参数0 = (默认)不覆盖已存在的文件, 1 = 覆盖已存在的文件, 8 = 当目标文件夹不存在,就自动创建一个.

3 、移动文件
FileMove ( "c:\1.txt", "c:\windows\1.txt" , 1)
表示将c:\1.txt移动到c:\windows\1.txt,参数1表示覆盖存在的文件

4、 获取文件属性
FileGetAttrib ( "c:\1.txt" )
获取c:\1.txt文件的属性

5 移动或重命名文件
   FileMove ( "c:\1.txt", "c:\windows\1.txt", 1)
      移动c:\1.txt文件到 c:\windows\1.txt,1表示覆盖存在的文件
    FileMove ( "c:\1.txt", "c:\2.txt", 1)
      将c:\1.txt重命名为c:\2.txt

6 、在一个文本文件中写入数据
FileWrite ("c:\1.txt","wglm.net")
    表示在c:\1.txt中写入wglm.net   。如果1.txt不存在,程序会自行创建。(有更标准的方法,为了学习方便,我们先学简单的。)

7、结束进程
ProcessClose ( "qq.exe")
    表示结束进程qq.exe

8、 返回当前运行的进程列表
ProcessList ()
     表示返回现在正在运行的进程。

9、运行其它程序
Run ( "C:\Program Files\qq.exe")
      表示运行C:\Program Files\ 目录下,QQ.exe程序

10、 运行其它程序直到程序结束
RunWait ( "C:\Program Files\qq.exe")
     表示运行C:\Program Files\ 目录下的 QQ.exe程序,直到qq.exe结束。

11、ping
Ping ("IsBase.net")
     表示ping IsBase.net

12 、延时
Sleep (1000)
     表示延时1000毫秒,再执行下面的命令行。

13、关机
Shutdown (1)
   表示关机,"1"还可以被替换为以下标志,或者相加,实现多个重复的功能。
0 = Logoff(注销)
1 = Shutdown(关机)
2 = Reboot(重启)
4 = Force(强制执行)
8 = Power down(关机)
32= Standby(待机)
64= Hibernate(休眠)

 
课后作业参考:
写一个au3程序,要求实现以下功能——
a、在c:盘建一个Isbase.net.txt文件
b、在其中写入Isbase.net 你的论坛ID。(如我就是 f22.net)
c、将Isbase.net.txt 重命名为 bbs.Isbase.net.txt
d、运行你的IE浏览器,让他自动打开bbs.Isbase.net
e、等6秒后后关闭这个浏览器
f、ping Isbase.net 并将返回值记录到脚本目录的ping.log文件中。 青春见证辉煌,热血铸就历史!好为人师前请不要不求甚解! 回复 引用

TOP

R.E.C--F22
  • 发短消息
  • 加为好友

R.E.C--F22 当前在线

组织部长[B-01107-T]

来自
南宁 
最后登录
2011-1-17 

组织部长[B-01107-T]
兵团大校

UID
14786 
帖子
4100 
功勋
6500 点 
军饷
240 元 
阅读权限
150 

6# 发表于 2009-8-23 16:25 | 只看该作者

AutoIt3 脚本函数用法中文说明

系统环境变量类


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",参数 )
;遇错终止