前幾篇文章講的都是 AHK 的語法宋光,比較枯燥弧轧,這篇文章的內(nèi)容更實(shí)用一些蚕甥。很多情況我們使用 AHK臼婆,并不是為了寫一個功能完備軟件,而是寫一個簡單的腳本來和其他軟件交互闹获,這就涉及到如何在 AHK 中運(yùn)行其他軟件硫惕。本文重點(diǎn)講 Run 命令的基本用法蛇受,其他高級內(nèi)容之后的文章會依次提及雹顺。
啟動軟件
使用 AHK 的經(jīng)典場景丹墨,就是用一個熱鍵啟動一個軟件,比如用 Win + n 啟動記事本:
#n::
Run, notepad
return
這里就不詳細(xì)講綁定熱鍵的語法了嬉愧,因?yàn)橄嚓P(guān)資料特別多贩挣,而且我以后會單獨(dú)介紹熱鍵相關(guān)的內(nèi)容。重點(diǎn)看 Run, notepad没酣,這條語句就是啟動記事本王财,因?yàn)橛浭卤拒浖奈募?notepad.exe,是不是非常簡單裕便。但 Run 命令也并非簡單到只支持一個參數(shù)绒净,它的用法如下:
Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]
Target 可以是可執(zhí)行文件的文件名,如上邊的 notepad闪金,可以加參數(shù)疯溺,也可以是一些其他東西论颅,后文會具體講到哎垦。WorkingDir 用來指定工作目錄,比如我想在 C 盤根目錄運(yùn)行記事本并打開 test.txt恃疯,就可以這樣:
Run, notepad test.txt, C:\
第三個參數(shù) Max|Min|Hide|UseErrorLevel 是選項(xiàng)漏设,可以讓運(yùn)行的軟件最大化(Max),最小化(Min)今妄,隱藏(Hide)郑口,UseErrorLevel 用于獲取進(jìn)程退出的返回碼鸳碧,暫時用不到,以后再講犬性。
第四個參數(shù) OutputVarPID 用來獲取進(jìn)程的 PID瞻离,暫時也用不到。
需要注意的一點(diǎn)乒裆,用 Run 啟動其他軟件后套利,AHK 代碼會繼續(xù)執(zhí)行,而不會等軟件退出鹤耍。如果需要等軟件退出再繼續(xù)運(yùn)行肉迫,需要用 RunWait 命令,這個后續(xù)我也會提到稿黄。
打開網(wǎng)址
Run 后邊除了加可執(zhí)行文件喊衫,還可以直接加網(wǎng)址,這樣就不要到處找瀏覽器的安裝位置了杆怕。
; 網(wǎng)址前邊需要加 http:// 或 https://族购,以便讓 AHK 知道這是一個網(wǎng)址
Run, https://autohotkey.com
; 如果網(wǎng)址是以 www. 開頭的,也可以省略 http:// 或 https://
Run, www.autohotkey.com
; 錯誤用法陵珍,AHK 會嘗試在本地找 autohotkey.com 文件联四,如果找不到就會報錯
Run, autohotkey.com
其他用法
除了啟動進(jìn)程和打開網(wǎng)址,Run 還有一些其他用法撑教。
打開文件朝墩。當(dāng) Run 后邊直接接非可執(zhí)行文件時,效果也是打開文件伟姐。打開文件所使用的軟件收苏,是在資源管理器關(guān)聯(lián)的默認(rèn)軟件,可以在資源管理器中選定文件愤兵,右鍵菜單->屬性 里更改打開方式鹿霸。
Run, open C:\test.txt
; open 可以省略
Run, C:\test.txt
編輯文件。效果同在資源管理器選定文件秆乳,右鍵菜單->編輯懦鼠,通常是用記事本打開。如果右鍵菜單里沒有“編輯”菜單項(xiàng)屹堰,會報錯肛冶。
Run, edit C:\test.txt
用資源管理器打開文件夾,需要加文件夾的路徑扯键。
Run, explore C:\
查看文件屬性睦袖,效果同在資源管理器選定文件,右鍵菜單->屬性荣刑。
Run, properties C:\test.txt
用資源管理器打開文件夾馅笙,并進(jìn)入搜索模式伦乔,以便查找文件。
Run, find C:\
打印文件董习,效果同在資源管理器選定文件烈和,右鍵菜單->打印,如果無“打印”菜單項(xiàng)皿淋,會報錯斥杜。
Run, print C:\test.txt
用資源管理器打開 CLSID 文件夾,CLSID 文件夾是由系統(tǒng)定義的一批特殊文件夾沥匈,名字是一串“神秘數(shù)字”蔗喂。
; 打開我的文檔文件夾
Run, ::{450d8fba-ad25-11d0-98a8-0800361b1103}
常用 CLSID 文件夾列表:
CLSID | 名稱 |
---|---|
::{20d04fe0-3aea-1069-a2d8-08002b30309d} | 我的電腦 |
::{450d8fba-ad25-11d0-98a8-0800361b1103} | 我的文檔 |
::{645ff040-5081-101b-9f08-00aa002f954e} | 回收站 |
::{208d2c60-3aea-1069-a2d7-08002b30309d} | 網(wǎng)上鄰居 |
::{7007acc7-3202-11d1-aad2-00805fc1270e} | 網(wǎng)絡(luò)連接 |
::{2227a280-3aea-1069-a2de-08002b30309d} | 打印機(jī)和傳真 |
關(guān)于空格和引號
如果文件名、路徑名或者參數(shù)中包含空格高帖,是需要特別注意的缰儿。
Run 后邊加的文件路徑是可以包含空格的,比如:
Run, c:\Program Files\Oracle\VirtualBox\VirtualBox.exe
Program Files 里包含一個空格散址,但 Run 不會將 c:\Program 視為文件名乖阵,將 Files\Oracle\VirtualBox\VirtualBox.exe 視為參數(shù)。但如果之后再加參數(shù)就要小心了预麸,謹(jǐn)慎起見瞪浸,需要對每一個參數(shù)單獨(dú)加上雙引號。
雖然在某些情況不加也可以工作吏祸,比如這樣:
Run, notepad aa bb.txt
會用記事本打開一個名為 aa bb.txt 的文件对蒲。
但也可能出問題,比如這樣:
Run, c:\mine\app\AutoHotkey\AutoHotkey.exe aa bb.ahk
AutoHotkey.exe 提示 aa 文件不存在贡翘,而實(shí)際我想運(yùn)行的文件為 aa bb.ahk蹈矮。同樣的語法,效果卻不同鸣驱,區(qū)別在于要運(yùn)行的軟件是如何解析參數(shù)的泛鸟。
如果在參數(shù)兩邊加上引號,就沒有這樣的問題了:
Run, notepad "aa bb.txt"
Run, c:\mine\app\AutoHotkey\AutoHotkey.exe "aa bb.ahk"
; 后邊可以再加參數(shù)踊东,但包含空格的參數(shù)都要有引號北滥。
Run, c:\mine\app\AutoHotkey\AutoHotkey.exe "aa bb.ahk" "arg 1" "arg 2"
等待軟件退出再繼續(xù)運(yùn)行
用 Run 命令啟動軟件的話,AHK 并不會等軟件退出后才繼續(xù)運(yùn)行闸翅,在運(yùn)行圖形界面軟件時再芋,這也是我們通常的做法。如果我們需要讓 AHK 暫停缎脾,直到運(yùn)行起來的軟件退出才繼續(xù)祝闻,可以用 RunWait 命令取代 Run占卧,除了這個區(qū)別遗菠,用法上和 Run 是一致的联喘。
其他內(nèi)容
除了將軟件運(yùn)行起來,很多時候我們也有一些其他需求辙纬。比如獲取軟件的輸出(通常是命令行軟件的輸出豁遭,如 ipconfig),獲取軟件的退出碼贺拣,獲取軟件進(jìn)程的 PID 等等蓖谢,我會在后續(xù)文章中詳細(xì)講到。
付費(fèi)解決 Windows譬涡、Linux闪幽、Shell、C涡匀、C++盯腌、AHK、Python陨瘩、JavaScript腕够、Lua 等領(lǐng)域相關(guān)問題,靈活定價舌劳,歡迎咨詢帚湘,微信 ly50247。