AU3入門教程

時間:2017-04-05 02:39:27 文章來源:經驗分享 文章作者:admin 點擊次數:

  其實 AutoIt v3(AU3)已經不是一種簡單的腳本語言了,AU3 在 GUI 界面方面也是很有效果的,不過我在這一節中只介紹 AU3 的一些常用的基本用法,如果您想了解更多關于 AU3 編程的信息和方法,請參閱 AU3 的幫助文檔——這真的是一篇很全面的幫助文檔。

  在這一節中,我將和大家一起學習 AU3 的一些基本使用方法,不求多,只求常用、好用、好學,這一節的目的,旨在可以讓大家和我一起在 Windows 環境下讓 AU3 徹底替代批處理。在 Windows 環境下讓批處理難看的黑框見鬼去吧~~。

  學習任何一門語言,基本上所要做的第一件事,就是在 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 程序就這么寫出來了,簡單嗎?

  其實編程就是這么簡單,不要在某些高手的神話傳說和諄諄教誨下感覺編程很神秘了,只要有耐心和恒心,菜鳥照樣玩編程。

  不過這一節我也不是來領著大家做游戲的,這一小節有幾個很重要的概念信息我再來重復一下,一個是源碼,一個是可執行程序,從源碼到可執行程序,需要一個過程,這個過程叫做“編譯”。

  1. AutoIt v3 入門

  1> 數據類型

  任何編程語言都有數據這個概念,當然,任何編程語言都講究數據類型,AU3 也一樣,不過 AU3 對數據類型的分類比較簡單,在 AU3 中,數據大概分成四類:數字類型、字符串類型、布爾值、二進制類型..

  數字類型,顧名思義,就是數字,例如 1、2、3.4、5 等等,AU3 對數字類型沒有再進行詳細的分類(很多語言中都將數字類型再詳細分為整形、浮點型等等),這給初學者帶來了不少方便,只記住數字類型就是我們常說的“數”就可以了。

  字符串類型,字符串即使一串字符,例如 ABCDE、Skyfree、SK1023Y 等等,這些都是字符串,這個是很好理解的,不過大家應該分清楚一點,就是數字 1 和字符 1 是有區別的。

  布爾類型,不要被這個名字搞亂了,所謂布爾類型的值,就是 True(真)和False(假)這兩個值,這在進行數據判斷的時候十分有用。

  二進制類型我們很少用到,本著不常用的不浪費我們時間的原則,這個我就不多廢口水了,有興趣的朋友可以參考 AU3 幫助文檔中的相應說明。

  2> 變量

  說完了數據類型,終于可以說數據了。

  所謂變量,就是在程序運行過程中其值可以改變的量——簡單了說就是可以變的量就是變量(……好像廢話)。我們可以定義一個變量,例如,

  Dim $Skyfree

  $Skyfree 就是一個變量,Dim 是定義變量的意思。在程序運行過程中,我們可以將 1 這個值賦給$Skyfree 這個變量,

  $Skyfree=1

  這時$Skyfree 就代表著 1 這個值,不過由于$Skyfree 是變量,我們可以在任意我們喜歡的時刻將 2 再賦值給$Skyfree,

  $Skyfree=2

  再次賦值結束后,$Skyfree 就代表著 2 這個值。

  說到這里,大家大概明白什么叫變量了吧。大家就隨手命名幾個變量吧。

  不過有一點要說的是,AU3 的變量命名有它的規則,不符合命名規則的變量將不被稱之為變量

  AU3 的變量命名規則是:

  以$開頭的,字母、數字、下劃線組合,例如$Sky、$Sky_Free、$Sky1023 這些都是合乎 AU3 變量命名規則的變量。

  3>常量

  明白了什么是變量,常量的意義就很好解釋了。

  常量,就是在程序運行過程中其值不能被隨意改變的量。我們可以定義一個常量,例如,

  Const $Skyfree=1

  常量一旦被賦值,在整個程序運行過程中其值將不能被改變。當然,常量的命名也有它的規則,常量的命名規則與變量相同。

  4>數組

  數組這個概念可能稍微難理解一些,我們先來看一個簡單的例子:

  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]來區別彼此)。

  數組的運用十分廣泛,通常一個數組里存儲著一組有關系的數據,或者有著一定相似性的數據。

  如果您現在還不能完全理解數組,也沒關系,隨著對 AU3 程序理解的深入,會慢慢理解數組這個概念的。

  5>運算符

  數據運算:

  = 賦值運算,將“=”右邊部分的值賦給左邊

  + 加法運算, $S=2+3

  減法運算, $S=2-3

  * 乘法運算, $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

  牢記這些優先級,否則很容易在以后的編程中造成混淆。

  2. 順序結構、選擇結構、循環結構入門

  所有的編程語言都遵守這三種代碼結構,我將在下面一一介紹。

  1>順序結構

  順序結構是十分簡單的結構,就像批處理一樣,一條一條的運行所寫下的代碼,腳本運行時,就會

  一條一條的運行代碼,例如:

  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 的值依次執行下來,這就是順序結構,也是一個程序里最基本的結構。

  2>選擇結構

  選擇結構中我只介紹 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…一切都迎刃而解。

  3>循環結構

  循環結構我只介紹最常用的 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 結果顯示在對話框中。

  3. 常用的 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 95 或者 Windows NT. 在那些

  平臺,工具提示只能限制在主顯示器里面

  范例:

  TooTip 可以很簡單幫我們做出來一些提示,這些提示有些事后很有用。

  ToolTip(@CR&" " & " 正在安裝AMD雙核驅動 ..." & " "&@CR, @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 幫助文檔。

  4. AU3 中的宏

  什么是宏,不要被這個術語嚇到了,宏的意思簡單的來說,就是一些系統預先命名好的常量。寫程

  序的過程中可以使用這些宏所代表的數據,但是不可對這些宏進行賦值操作。

  常用的宏有如下這些:

  @AppDataCommonDir,公共 Application Data 文件夾所在路徑

  @AppDataDir,當前用戶 Application Data 文件夾所在路徑

  @ComSpec, %comspec% 的 值 , 指 定 的 第 二 個 命 令 解 釋 程 序(SPECified secondary COMmand

  interpreter),主要用于命令行使用, 如. Run(@ComSpec & " /k help | more")

  @CR,回車符,用于換行

  @LF,換行符,用于換行

  @CRLF,@[email protected],回車換行符,用于換行

  @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 95 則

  可能返回 "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\All

  Users\「開始」菜單)

  @StartMenuDir,當前用戶的 「開始」菜單目錄所在路徑

  @StartupCommonDir,公共用戶的 啟動 目錄所在路徑(例:C:\Documents and Settings\All Users\

  「開始」菜單\程序\啟動)

  @StartupDir,當前用戶的 啟動 目錄所在路徑

  @WindowsDir,Windows 文件夾 所在路徑,(例:C:\WINDOWS)

  以上的 AU3 的宏只是所有 AU3 的宏中比較常用的一部分,如果您想了解更多關于 AU3 宏的信息,

  請查閱 AU3 幫助文檔。

  其實大家可能也看出來了,宏有點類似 Windows 的環境變量,當然,其性能和多樣性遠遠超過Windows 環境變量。

  講到這里,關于 AU3 的基礎知識就給大家介紹完了。以后我們也可以親手寫一些簡單的小程序來滿足我們對自動化操作的需要,同樣,當我們再碰到高手們寫的 AU3 源代碼終于也可以看懂一些了。

  編程,其實無論是 AU3 還是其他的,如果想熟練掌握僅僅靠背誦這些語法、函數、宏是不管用的,不過如果你不知道這些語法、函數、宏也是更行不通的。想熟練使用一樣東西,就要經常使用它。一開始寫程序是有點小困難,但這只是因為您對編程還不熟悉,并不代表著您不能掌握編程。編程很大程度

  上靠的不是智力,而是一個人的毅力!

    熱門排行

    ?
    91街机捕鱼千 重庆快乐十分开奖走势 龙王捕鱼网站 pk北京赛车直播 一肖中特免费公开资料香港马 赛车彩票论坛 有什么聊天软件能赚钱 pc蛋蛋预测尽享 甘肃十一选五开奖时间 体彩20选5最新开奖结果走势图 给父母赚钱上税吗 东方6十1四等奖 冰球打架的衣服 彩票网上投注 在下班闲暇时间如何用手机赚钱 辽宁快乐12基本走势图 888棋牌游戏中心旗舰平台