標籤:

[基礎] 如何在 AHK 中運行其他軟體

前幾篇文章講的都是 AHK

的語法,比較枯燥,這篇文章的內容更實用一些。很多情況我們使用

AHK,並不是為了寫一個功能完備軟體,而是寫一個簡單的腳本來和其他軟體交互,這就涉及到如何在 AHK 中運行其他軟體。本文重點講 Run

命令的基本用法,其他高級內容之後的文章會依次提及。

啟動軟體

使用 AHK 的經典場景,就是用一個熱鍵啟動一個軟體,比如用 Win + n 啟動記事本:

#n:: Run, notepadreturn

這裡就不詳細講綁定熱鍵的語法了,因為相關資料特別多,而且我以後會單獨介紹熱鍵相關的內容。重點看 Run,

notepad,這條語句就是啟動記事本,因為記事本軟體的文件名是 notepad.exe,是不是非常簡單。但 Run

命令也並非簡單到只支持一個參數,它的用法如下:

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

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

Run, notepad test.txt, C:

第三個參數 Max|Min|Hide|UseErrorLevel 是選項,可以讓運行的軟體最大化(Max),最小化(Min),隱藏(Hide),UseErrorLevel 用於獲取進程退出的返回碼,暫時用不到,以後再講。

第四個參數 OutputVarPID 用來獲取進程的 PID,暫時也用不到。

需要注意的一點,用 Run 啟動其他軟體後,AHK 代碼會繼續執行,而不會等軟體退出。如果需要等軟體退出再繼續運行,需要用 RunWait 命令,這個後續我也會提到。

打開網址

Run 後邊除了加可執行文件,還可以直接加網址,這樣就不要到處找瀏覽器的安裝位置了。

; 網址前邊需要加 http:// 或 https://,以便讓 AHK 知道這是一個網址Run, https://autohotkey.com; 如果網址是以 www. 開頭的,也可以省略 http:// 或 https://Run, www.autohotkey.com; 錯誤用法,AHK 會嘗試在本地找 autohotkey.com 文件,如果找不到就會報錯Run, autohotkey.com

其他用法

除了啟動進程和打開網址,Run 還有一些其他用法。

打開文件。當 Run 後邊直接接非可執行文件時,效果也是打開文件。打開文件所使用的軟體,是在資源管理器關聯的默認軟體,可以在資源管理器中選定文件,右鍵菜單->屬性 里更改打開方式。

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

編輯文件。效果同在資源管理器選定文件,右鍵菜單->編輯,通常是用記事本打開。如果右鍵菜單里沒有「編輯」菜單項,會報錯。

Run, edit C:test.txt

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

Run, explore C:

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

Run, properties C:test.txt

用資源管理器打開文件夾,並進入搜索模式,以便查找文件。

Run, find C:

列印文件,效果同在資源管理器選定文件,右鍵菜單->列印,如果無「列印」菜單項,會報錯。

Run, print C:test.txt

用資源管理器打開 CLSID 文件夾,CLSID 文件夾是由系統定義的一批特殊文件夾,名字是一串「神秘數字」。

; 打開我的文檔文件夾Run, ::{450d8fba-ad25-11d0-98a8-0800361b1103}

常用 CLSID 文件夾列表:

::{20d04fe0-3aea-1069-a2d8-08002b30309d} 我的電腦::{450d8fba-ad25-11d0-98a8-0800361b1103} 我的文檔::{645ff040-5081-101b-9f08-00aa002f954e} 回收站::{208d2c60-3aea-1069-a2d7-08002b30309d} 網上鄰居::{7007acc7-3202-11d1-aad2-00805fc1270e} 網路連接::{2227a280-3aea-1069-a2de-08002b30309d} 印表機和傳真

關於空格和引號

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

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

Run, c:Program FilesOracleVirtualBoxVirtualBox.exe

Program Files 里包含一個空格,但 Run 不會將 c:Program 視為文件名,將

FilesOracleVirtualBoxVirtualBox.exe

視為參數。但如果之後再加參數就要小心了,謹慎起見,需要對每一個參數單獨加上雙引號。

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

Run, notepad aa bb.txt

會用記事本打開一個名為 aa bb.txt 的文件。

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

Run, c:mineappAutoHotkeyAutoHotkey.exe aa bb.ahk

AutoHotkey.exe 提示 aa 文件不存在,而實際我想運行的文件為 aa bb.ahk。同樣的語法,效果卻不同,區別在於要運行的軟體是如何解析參數的。

如果在參數兩邊加上引號,就沒有這樣的問題了:

Run, notepad "aa bb.txt"Run, c:mineappAutoHotkeyAutoHotkey.exe "aa bb.ahk"; 後邊可以再加參數,但包含空格的參數都要有引號。Run, c:mineappAutoHotkeyAutoHotkey.exe "aa bb.ahk" "arg 1" "arg 2"

等待軟體退出再繼續運行

用 Run 命令啟動軟體的話,AHK 並不會等軟體退出後才繼續運行,在運行圖形界面軟體時,這也是我們通常的做法。如果我們需要讓 AHK 暫停,直到運行起來的軟體退出才繼續,可以用 RunWait 命令取代 Run,除了這個區別,用法上和 Run 是一致的。

其他內容

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

付費解決 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等領域相關問題,靈活定價,歡迎諮詢,微信 ly50247。


推薦閱讀:

[基礎] AHK 中 = 和 := 賦值運算符的用法
AutoHotKey 常用函數或小技巧有哪些分享?
用AutoHotKey按標題隱藏/顯示Windows桌面窗口
用AutoHotkey(AHK) 使用滑鼠手勢在win10下快速切換虛擬桌面?

TAG:AutoHotkey |