1、運行程序
Run 命令或者函數(shù)用來運行外部可執(zhí)行文件
AU3:
Run ( "文件名" [, "工作目錄" [, 標志]] )
EXAMPLE:
AU3:
Run("Notepad.exe")
上面的示例中都沒有給出程序“Notepad.exe”的路徑,為什么仍能執(zhí)行?這是因為它們都會自動在腳本所在目錄下搜尋目標文件,如有則運行,否則就到系統(tǒng)文件夾(%PATH%)中搜尋。
注意:
A)某些程序必須給定“工作目錄”才能成功運行!
B)給出完整的文件路徑有助于輕微提高程序的可靠性。
C)AHK的Run命令可以用來運行程序和直接打開文件,而AU3的Run函數(shù)則只能用來運行程序(可執(zhí)行文件)或傳遞參數(shù)讓某個程序打開目標文件。
當然,運行程序的功能還不僅僅是這么簡單,我們還可以指定運行程序的初始狀態(tài),比如讓運行的記事本窗口以最大化狀態(tài)顯示(或者最小化、隱藏):
【示例 2.1.2 】
AU3:
Run("Notepad.exe", "", @SW_MAXIMIZE)
2、打開文件
前面已經(jīng)提到,AHK的Run命令可以直接打開文件,而AU3的Run函數(shù)則只能用來運行程序,因此在打開文件的方式上有點不同:AHK腳本中可直接給出目標文件,而AHK將自動運行該文件的關聯(lián)程序來打開它;而AU3則必須由用戶自己傳遞參數(shù)讓某個程序打開目標文件。
【示例 2.2.1 】
AHK:
Run, MyFile.txt
Run, Notepad.exe MyFile.txt
AU3:
Run("Notepad.exe MyFile.txt")
ps:AU3以“函數(shù)”的形式提供:
Function(param1, param2, …)
3、以命令行形式運行程序
可以考慮運行系統(tǒng)的命令行解釋器(cmd.exe/command.com),然后指定要執(zhí)行的命令并傳遞參數(shù)。
假設我們要執(zhí)行命令“dir C:\WINDOWS\system 32” ,用以列出指定目錄的所有文件及子目錄。
【示例 2.3.1 】
AHK:
Run, %ComSpec% /k dir C:\WINDOWS\system32
AU3:
Run(@ComSpec & " /k dir C:\WINDOWS\system32")
注意:
A)ComSpec是腳本內(nèi)建的用以指示命令行解釋器位置的變量或宏。
B)/k 參數(shù)表示“執(zhí)行字符串指定的命令但保留”,若改為 /c 則表示“執(zhí)行字符串指定的命令然后終斷”。對此比較直觀的解釋是 /k 將在執(zhí)行完命令后保留命令提示窗口,而 /c 則將在執(zhí)行完命令之后關閉命令提示窗口。
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
; 每次讀取一行文本,直到文件結(jié)束.
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)