[基礎(chǔ)] 如何在 AHK 中運(yùn)行其他軟件

前幾篇文章講的都是 AHK 的語(yǔ)法,比較枯燥,這篇文章的內(nèi)容更實(shí)用一些。很多情況我們使用 AHK,并不是為了寫一個(gè)功能完備軟件,而是寫一個(gè)簡(jiǎn)單的腳本來和其他軟件交互,這就涉及到如何在 AHK 中運(yùn)行其他軟件。本文重點(diǎn)講 Run 命令的基本用法,其他高級(jí)內(nèi)容之后的文章會(huì)依次提及。

啟動(dòng)軟件

使用 AHK 的經(jīng)典場(chǎng)景,就是用一個(gè)熱鍵啟動(dòng)一個(gè)軟件,比如用 Win + n 啟動(dòng)記事本:

#n::
    Run, notepad
return

這里就不詳細(xì)講綁定熱鍵的語(yǔ)法了,因?yàn)橄嚓P(guān)資料特別多,而且我以后會(huì)單獨(dú)介紹熱鍵相關(guān)的內(nèi)容。重點(diǎn)看 Run, notepad,這條語(yǔ)句就是啟動(dòng)記事本,因?yàn)橛浭卤拒浖奈募?notepad.exe,是不是非常簡(jiǎn)單。但 Run 命令也并非簡(jiǎn)單到只支持一個(gè)參數(shù),它的用法如下:

Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]

Target 可以是可執(zhí)行文件的文件名,如上邊的 notepad,可以加參數(shù),也可以是一些其他東西,后文會(huì)具體講到。WorkingDir 用來指定工作目錄,比如我想在 C 盤根目錄運(yùn)行記事本并打開 test.txt,就可以這樣:

Run, notepad test.txt, C:\

第三個(gè)參數(shù) Max|Min|Hide|UseErrorLevel 是選項(xiàng),可以讓運(yùn)行的軟件最大化(Max),最小化(Min),隱藏(Hide),UseErrorLevel 用于獲取進(jìn)程退出的返回碼,暫時(shí)用不到,以后再講。

第四個(gè)參數(shù) OutputVarPID 用來獲取進(jìn)程的 PID,暫時(shí)也用不到。

需要注意的一點(diǎn),用 Run 啟動(dòng)其他軟件后,AHK 代碼會(huì)繼續(xù)執(zhí)行,而不會(huì)等軟件退出。如果需要等軟件退出再繼續(xù)運(yùn)行,需要用 RunWait 命令,這個(gè)后續(xù)我也會(huì)提到。

打開網(wǎng)址

Run 后邊除了加可執(zhí)行文件,還可以直接加網(wǎng)址,這樣就不要到處找瀏覽器的安裝位置了。

; 網(wǎng)址前邊需要加 http:// 或 https://,以便讓 AHK 知道這是一個(gè)網(wǎng)址
Run, https://autohotkey.com
; 如果網(wǎng)址是以 www. 開頭的,也可以省略 http:// 或 https://
Run, www.autohotkey.com
; 錯(cuò)誤用法,AHK 會(huì)嘗試在本地找 autohotkey.com 文件,如果找不到就會(huì)報(bào)錯(cuò)
Run, autohotkey.com

其他用法

除了啟動(dòng)進(jìn)程和打開網(wǎng)址,Run 還有一些其他用法。

打開文件。當(dāng) Run 后邊直接接非可執(zhí)行文件時(shí),效果也是打開文件。打開文件所使用的軟件,是在資源管理器關(guān)聯(lián)的默認(rèn)軟件,可以在資源管理器中選定文件,右鍵菜單->屬性 里更改打開方式。

Run, open C:\test.txt
; open 可以省略
Run, C:\test.txt

編輯文件。效果同在資源管理器選定文件,右鍵菜單->編輯,通常是用記事本打開。如果右鍵菜單里沒有“編輯”菜單項(xiàng),會(huì)報(bào)錯(cuò)。

Run, edit C:\test.txt

用資源管理器打開文件夾,需要加文件夾的路徑。

Run, explore C:\

查看文件屬性,效果同在資源管理器選定文件,右鍵菜單->屬性。

Run, properties C:\test.txt

用資源管理器打開文件夾,并進(jìn)入搜索模式,以便查找文件。

Run, find C:\

打印文件,效果同在資源管理器選定文件,右鍵菜單->打印,如果無(wú)“打印”菜單項(xiàng),會(huì)報(bào)錯(cuò)。

Run, print C:\test.txt

用資源管理器打開 CLSID 文件夾,CLSID 文件夾是由系統(tǒng)定義的一批特殊文件夾,名字是一串“神秘?cái)?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)于空格和引號(hào)

如果文件名、路徑名或者參數(shù)中包含空格,是需要特別注意的。

Run 后邊加的文件路徑是可以包含空格的,比如:

Run, c:\Program Files\Oracle\VirtualBox\VirtualBox.exe

Program Files 里包含一個(gè)空格,但 Run 不會(huì)將 c:\Program 視為文件名,將 Files\Oracle\VirtualBox\VirtualBox.exe 視為參數(shù)。但如果之后再加參數(shù)就要小心了,謹(jǐn)慎起見,需要對(duì)每一個(gè)參數(shù)單獨(dú)加上雙引號(hào)。

雖然在某些情況不加也可以工作,比如這樣:

Run, notepad aa bb.txt

會(huì)用記事本打開一個(gè)名為 aa bb.txt 的文件。

但也可能出問題,比如這樣:

Run, c:\mine\app\AutoHotkey\AutoHotkey.exe aa bb.ahk

AutoHotkey.exe 提示 aa 文件不存在,而實(shí)際我想運(yùn)行的文件為 aa bb.ahk。同樣的語(yǔ)法,效果卻不同,區(qū)別在于要運(yùn)行的軟件是如何解析參數(shù)的。

如果在參數(shù)兩邊加上引號(hào),就沒有這樣的問題了:

Run, notepad "aa bb.txt"

Run, c:\mine\app\AutoHotkey\AutoHotkey.exe "aa bb.ahk"

; 后邊可以再加參數(shù),但包含空格的參數(shù)都要有引號(hào)。
Run, c:\mine\app\AutoHotkey\AutoHotkey.exe "aa bb.ahk" "arg 1" "arg 2"

等待軟件退出再繼續(xù)運(yùn)行

用 Run 命令啟動(dòng)軟件的話,AHK 并不會(huì)等軟件退出后才繼續(xù)運(yùn)行,在運(yùn)行圖形界面軟件時(shí),這也是我們通常的做法。如果我們需要讓 AHK 暫停,直到運(yùn)行起來的軟件退出才繼續(xù),可以用 RunWait 命令取代 Run,除了這個(gè)區(qū)別,用法上和 Run 是一致的。

其他內(nèi)容

除了將軟件運(yùn)行起來,很多時(shí)候我們也有一些其他需求。比如獲取軟件的輸出(通常是命令行軟件的輸出,如 ipconfig),獲取軟件的退出碼,獲取軟件進(jìn)程的 PID 等等,我會(huì)在后續(xù)文章中詳細(xì)講到。

付費(fèi)解決 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等領(lǐng)域相關(guān)問題,靈活定價(jià),歡迎咨詢,微信 ly50247。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)者按:本文屬于零基礎(chǔ)入門專題教程,原發(fā)表于博客中國(guó)(已失效),我曾轉(zhuǎn)載到中文論壇,作者 yonken(此處是他現(xiàn)...
    amnesiac閱讀 3,152評(píng)論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 100,670評(píng)論 9 468
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,232評(píng)論 2 33
  • 驚醒, 荊棘之夜沒有紅花。 從眼睛開始融化, 淚水混著汗液攪拌血液。 月色正好, 一只蜻蜓娉婷而立。 平鋪的故事愿...
    partofu閱讀 330評(píng)論 0 4

友情鏈接更多精彩內(nèi)容