天天看點

AutoIt自動化程式設計(1)

autoit 2~運作程式或打開檔案

1、運作程式

Run 指令或者函數用來運作外部可執行檔案

AU3:

Run ( "檔案名" [, "工作目錄" [, 标志]] )

EXAMPLE:

Run("Notepad.exe")

上面的示例中都沒有給出程式“Notepad.exe”的路徑,為什麼仍能執行?這是因為它們都會自動在腳本所在目錄下搜尋目标檔案,如有則運作,否則就到系統檔案夾(%PATH%)中搜尋。

注意:

A)某些程式必須給定“工作目錄”才能成功運作!

B)給出完整的檔案路徑有助于輕微提高程式的可靠性。

C)AHK的Run指令可以用來運作程式和直接打開檔案,而AU3的Run函數則隻能用來運作程式(可執行檔案)或傳遞參數讓某個程式打開目标檔案。

當然,運作程式的功能還不僅僅是這麼簡單,我們還可以指定運作程式的初始狀态,比如讓運作的記事本視窗以最大化狀态顯示(或者最小化、隐藏):

【示例 2.1.2 】

Run("Notepad.exe", "", @SW_MAXIMIZE) 

2、打開檔案

前面已經提到,AHK的Run指令可以直接打開檔案,而AU3的Run函數則隻能用來運作程式,是以在打開檔案的方式上有點不同:AHK腳本中可直接給出目标檔案,而AHK将自動運作該檔案的關聯程式來打開它;而AU3則必須由使用者自己傳遞參數讓某個程式打開目标檔案。

【示例 2.2.1 】

AHK:

Run, MyFile.txt

Run, Notepad.exe MyFile.txt

Run("Notepad.exe MyFile.txt") 

ps:AU3以“函數”的形式提供:

Function(param1, param2, …)

3、以指令行形式運作程式

可以考慮運作系統的指令行解釋器(cmd.exe/command.com),然後指定要執行的指令并傳遞參數。

假設我們要執行指令“dir C:\WINDOWS\system 32” ,用以列出指定目錄的所有檔案及子目錄。

【示例 2.3.1 】

Run, %ComSpec% /k dir C:\WINDOWS\system32

Run(@ComSpec & " /k dir C:\WINDOWS\system32")

A)ComSpec是腳本内建的用以訓示指令行解釋器位置的變量或宏。

B)/k 參數表示“執行字元串指定的指令但保留”,若改為 /c 則表示“執行字元串指定的指令然後終斷”。對此比較直覺的解釋是 /k 将在執行完指令後保留指令提示視窗,而 /c 則将在執行完指令之後關閉指令提示視窗。

C)符号“&”是AU3定義的字元串連接配接符。

附上我的兩段代碼:

;Run("rundll32.exe shell32.dll,Control_RunDLL ncpa.cpl,,2")

;Run("Notepad.exe d:\Nw.ps1")

$file = FileOpen("d:\Nw.ps1", 0)   ;隻能打開檔案進行操作,但看不到檔案

   ; 檢查打開的檔案是否可讀

   If $file = -1 Then

    MsgBox(0, "錯誤", "不能打開檔案.")

    Exit

   EndIf

   ; 每次讀取一行文本,直到檔案結束.

   While 1

    $line = FileReadLine($file)

    If @error = -1 Then ExitLoop

    MsgBox(0, "讀取的行:", $line)

   Wend

=====================================================

Dim $title

Dim $ok_control

$title="關于 電腦"

$ok_control="[CLASS:Button;TEXT:确定]"

WinActivate($title)