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)
ControlClick($title,"",$ok_control)