輕鬆學會彈指神功-揭露AutoHotkey絕技

2012/03/21 訂正:網友zhangxaochen指出文中對於「~」的說明有誤,已經修改完成。

2009/12/01 補充:

如果你只是想要定義字串替換、定義鍵盤功能而不想弄清楚AutoHotkey這一堆指令的話,請再參考:PhraseExpress:凡人版的AutoHotkey

2010/10/17:

因為已經有Unicode的Autohotkey分支出現,文中以剪貼簿方式處理中文的作法可以不使用了,細節請看這篇文章。

AutoHotkey的高度客製功能,讓你成為效率高手

如果你分析每天操作電腦時所重覆執行的動作-相同的網址、相同的電子信箱、相同的文字輸入等等,你會驚訝的發現重覆頻率之高令人咋舌。如果你想從諸多的重覆動作裡解脫而出,並且能有效提升操作電腦的效率,那麼AutoHotkey是你不能錯過的工具,善用AutoHotkey將讓你輕而易舉的成為效率高手。

AutoHotkey小檔案

AHK-Icon

AutoHotkey:鍵盤與滑鼠工具

AutoHotkey顧名思義就是協助你將常用按鍵自動化的工具,而這些自動化的操作可以由使用者依自身的需求來設置,隨著設定的項目日漸擴充齊全,AutoHotkey帶給你的便利也日益增多。AutoHotkey好處多多,只要幾個簡單步驟安裝好,再建立一個寫有AutoHotkey指令的文字檔案(這個檔案稱為AutoHotkey的腳本檔)就能開始享受它帶來的速度感與便利性。「咦~還要寫指令?會不會很困難,我只是會用電腦的使用者而已呀!」別怕別怕,不要被「指令」這兩個字嚇到了,建立腳本檔的過程就只是像是打篇文章而已,請耐心的看下去,本文會一步一步地把建立腳本檔的步驟清楚、簡單的介紹給你,讀者們只要依樣畫葫蘆馬上就能感受到AutoHotkey的強大威力了!

在正式開始之前,先把AutoHotkey提供的功能以它本身的術語介紹給你:

  • 熱鍵(HotKey)
    熱鍵也可稱為快捷鍵(Shortcut Key),意指某個按鍵能執行特定的功能。在Windows系統裡,〔Win+E〕開啟檔案總管、〔Win+R〕開啟執行視窗是幾個常用的熱鍵之二。而AutoHotkey的熱鍵功能則讓你自行建立專屬你個人的快捷鍵。

    雖然HotKey的對象似乎只限鍵盤,但事實上連滑鼠的按鈕、滾輪與搖桿也都能依你的需要來設置。

  • 熱字串(HotString)
    熱字串是比照熱鍵而來的名詞,有的系統會稱呼為「縮寫」,指的是輸入較短的字串(縮寫的關鍵字)而能自動擴展成較長的文字,例如只要輸入「inet」四個英文字母就能自動變成「網際網路」,而更令人興奮的是:所有的熱字串都是你自已設定的。
  • 操作流程的判斷與迴圈控制:如果AutoHotkey只具備了鍵盤與滑鼠的自訂功能,那它充其量也不過是個鍵盤工具罷了,但事實上AutoHotkey提供了許多指令用來判斷諸多事項,具備程式控制能力,因而晉身為巨集(Macro)工具,能依需要再做更細部的處理與控制。我們可以簡單地把巨集或腳本視為一種簡易、好寫的程式,雖說簡單但功能可是一點也不馬虎。
  • 圖形介面與腳本合體:AutoHotkey也提供了許多視窗、按鈕等圖形介面的指令,能讓我們很輕易的建立操作用的小視窗,從而提供了更方便與更優越的使用介面,而這些指令都能透過一支SmartGUI.exe執行檔用拖拉的方式來自動產生。

AutoHotkey的基本功能介紹完畢,以下進入主題。首先說明AutoHotkey的安裝步驟。

AutoHotkey下載與安裝

1.使用IE或FireFox等瀏覽器進入下載網頁,點選「AutoHotkey」進行下載,當「檔案下載」對話盒出現後,選取你常用的工具資料夾,把檔案存入此資料夾。

AHK-2

2.下載後的「AutoHotkey104705_Install.exe」就是安裝執行檔,請雙擊此檔案以執行安裝步驟。首先按〔Next〕。

AHK-2

3.在授權頁裡可以確認AutoHotkey是使用GPL授權的,因此你可以安心使用。閱讀授權說明完畢後再按〔I Agree〕進入下一頁。

AHK-3

4.接著選取要安裝的類型,如果想啟動.ahk檔案的拖拉功能的話,則把第三項的【Enable drag & drop onto scripts】選項勾選起來,同時保持【Main Program】和【Script Compiler】的勾選狀態,最後按〔Next〕。

AHK-4

5.最後指定安裝的資料夾,預設是「C:\Program Files\AutoHotkey」,你也可以把它裝到USB隨身碟裡,以增進可攜性。資料夾選取好後按〔Install〕。

AHK-5

6.檔案解壓縮並複製後按「Finish」即告全部安裝完畢。若不想檢視讀我檔案的話,則取消〔Show Readme〕勾選。

AHK-6

AutoHotkey安裝完成後不必重新啟動電腦,爾後副檔名.ahk會自動關聯到AutoHotkey.exe,只要點擊副檔名為.ahk的檔案就能啟動AutoHotkey來讀取該檔案的內容,再依腳本檔內容來設置鍵盤與滑鼠。AutoHotkey安裝資料夾裡有幾個重要檔案要請大家注意:

檔案名稱

功能說明

AutoHotkey.exe、AutoHotkey.chm AutoHotkey的主程式與說明檔。AutoHotkey.chm具有搜尋功能,是很好的學習參考文件
AU3_Spy.exe Active Window Info,顯示視窗系統訊息的小工具,這些訊息對進階的腳本撰寫很有幫助
SmartGUI.exe 用拖拉的方法來定義視窗與其內的各種視覺元件,最後產生的腳本檔。這個工具可以說是一個程式產生器
AutoScriptWriter.exe 一樣是個產生AutoHotkey腳本檔的產生器,不過是採取錄製鍵盤與滑鼠操作過程的方法來產生腳本內容
Ahk2Exe.exe 把腳本檔產生成執行檔的工具,以方便沒有安裝AutoHotkey系統的環境能用執行檔直接執行。(請參考新版AutoHotkey轉換工具ahk2exe的圖形介面操作步驟的說明來使用圖形介面)
Ahk2Exe.exe是命令列指令,語法如下:

Ahk2exe.exe /in "test1.ahk" /icon "test1.ico"

總之,我們只要把AutoHotkey的設定與指令寫在副檔名為.ahk的文字檔裡,就能設定需要的動作。以下我們由淺入深、按部就班地展示AutoHotkey的各項功能。

由簡單的範例開始使用AutoHotkey的熱字串

1.請用【開始→程式集→附屬應用程式→記事本】啟動記事本(或使用你慣用的文字編輯程式),輸入以下內容後儲存成 test1.ahk。

AHK-7

以上是常用網址與常用電子郵件的幾個熱字串範例,提示幾個重點:

  • 每行開頭若以半形分號開頭則表示此列是說明註解,不會被執行
  • 熱字串的關鍵字(或稱縮寫)必須用兩個半形冒號夾住,再把要擴展的結果寫在結尾的冒號後面,只能寫一行(多行的寫法請見後面的說明)
  • 雖然範例中的關鍵字只有一個字母,實際運用上可任意組合多個字母與數字

雙擊test1.ahk後就能在System Tray裡看到AutoHotkey的H圖示,表示已執行並載入test1.ahk。我們另行建立一個test.txt來測試,開啟test.txt後,只要鍵入「y!」與一個觸發符號(此符號可以是〔空白〕、〔Tab〕鍵或〔Enter〕鍵等,能透過指令定義),則關鍵字會替換成冒號後面的內容:

輸入文字 觸發符號 替換後的內容
y! 空白 http://tw.yahoo.com/
g! Tab http://www.google.com.tw
w! Enter http://www.wretch.cc
@g 空白 @gmail.com
@m 空白 @Your_Mail_Address.com.tw

觸發符號要使用〔空白〕或〔Enter〕鍵悉聽尊便,我個人是習慣用〔空白〕。另外,為了避免在中文輸入狀態下使用到拆字按鍵而造成中文無法正常輸入,建議關鍵字以一個特殊字元開頭或結尾,例如範例中的驚歎號與@符號,不過此二符號必須加按〔Shift〕鍵,不甚方便也影響輸入速度,建議可使用單鍵符號,例如單引號、分號、斜線或逗點等來組成關鍵字,我個人常用的是單引號、斜線與逗點,最好是選用中文輸入法未使用到的字元,以方便能在中文狀態下也能輸入。以下是修改成單引號與斜線後的範例:

輸入文字 觸發符號 替換後的內容
'y 空白 http://tw.yahoo.com/
'g Tab http://www.google.com.tw
'w Enter http://www.wretch.cc
/g 空白 @gmail.com
/m Tab @Your_Mail_Address.com.tw

編輯修改test1.ahk後必須重新載入才能讓變動生效,重新載入有兩種方法:

  1. 在右下角System Tray找到AutoHotkey的H圖示後,按右鍵選【Exit】以結束目前的AutoHotkey,再雙擊修改後的test1.ahk以重新啟動AutoHotkey
  2. 第二個是較簡便的方法,一樣開啟System Tray的H圖示後,按右鍵選【Reload This Script】即可重新讀入修改後的腳本指令

AHK-8

常用的幾種熱字串範例

讀者們可以自行彙總日常常用的字串,將之設置於.ahk檔案內,再把.ahk檔案存到啟動資料夾裡,如此便能自動重覆使用了。筆者彙總幾類常用的字串供各位做參考與當做你設定的啟始內容,你可由http://www.mediafire.com/?myzblw2zgmb下載test1.ahk或把下列表格的前兩欄「關鍵字」與「替換後的內容」寫入test1.ahk即可:

關鍵字 替換後的內容 說明 分類
::'g:: http://www.google.com.tw Google網站 常用搜尋網站
::'y:: http://www.yahoo.com.tw Yahoo!網站
::'l:: http://www.live.com 微軟Live Search網站
::'dic:: http://dictionary.yahoo.com.tw Yahoo!奇摩字典 字典網站
::'cdic:: http://140.111.34.46/newDict/dict/index.html 教育部重編國語辭典修訂本網站
::@g:: @gmail.com 常用電子郵件
::@h:: @ms1.hinet.net
::'tk:: Thanks. 內容也可用「謝謝」,端視使用頻率而定 常用郵件文字
::btw:: By the way,
::'br:: Best regards,
::'sy:: Sincerely yours,
::'me:: 我的名字 你的姓名。輸出的竟是亂碼?等等,後面有破解方法 個人資訊

熱字串配合使用AutoHotkey的按鍵字串

如果你在瀏覽器網址列輸入範例內的熱字串後,可能會想是否能讓熱字串能自動輸出〔Enter〕鍵呢?如果可以的話,我們就可以少按一個〔Enter〕鍵了,這個需求只要在熱字串裡加上按鍵字串就能輕而易舉的達成。AutoHotkey按鍵的寫法是在按鍵名稱前後加上大括號,因此{enter}就代表〔Enter〕鍵,{home}就代表〔Home〕鍵,以下列舉幾個常用的按鍵:

{Enter} Enter鍵 {Escape}或{Esc} Escape鍵 {Tab} Tab鍵
{Backspace}或{BS} 倒退鍵 {Delete} 刪除鍵 {Insert} 插入鍵
{Up}、{Down}、
{Left}、{Right}
方向鍵 {PgUp}、{PgDn} 換頁鍵 {CapsLock} 大寫鍵
{NumLock} 數字鎖定鍵 {Ctrl}
{LCtrl}、
{RCtrl}
控制鍵與左、右控制鍵 {Alt}、
{LAlt}、
{RAlt}
Alt鍵與左、右Alt鍵

上面的寫法除了鍵盤之外,滑鼠按鈕也能用相同的格式來表示,例如:

{LButton}、
{MButton}、
{RButton}
左、中、右鈕 {WheelDown}、
{WheelUp}
滾輪向下與向上

按鍵字串裡若加上數字代表連續輸出數個相同的按鍵,例如{Left 3}表示輸出3個左鍵(務必只用半形字元,全形是無法使用的),等於{Left}{Left}{Left},按鍵字串和數字的間必須以至少一個半形空白分隔開。熱字串加上這些按鍵的組合能夠形成更多樣化的功能,例如:

關鍵字 替換後的內容 觸發符號 說明
::'y:: http://tw.yahoo.com/{Enter} 空白 輸入'y會輸出網址與〔Enter〕鍵
::/g:: @gmail.com{Home} 空白 輸入/g會輸出電子郵件並將游標移到開頭位置(如同按下〔Home〕鍵)
::'img:: {Left 2} 空白 輸入'img替換成標籤,且將游標移到雙引號裡面,但因為AutoHotkey預設會把觸發符號也輸出,造成游標左移到雙引號裡後又多輸出當做觸發符號的空白

AutoHotkey熱字串的替換依據不同的需求會有不同的選項,使用者能很方便地設置不同的功能;熱字串選項是寫在開頭兩個冒號中間,格式是「:選項:」,舉幾個例子說明常用的選項:

關鍵字 替換後的內容 觸發符號 說明
:O:'img:: {left 2} 空白 必須按觸發符號以替換文字,但不輸出觸發符號;只要把開頭的兩個冒號改成:O:即可。O是Omit(忽略)的意思,用來忽略觸發符號
:*:@g:: test@gmail.com :*:表示不需要觸發符號,鍵入@和g兩個字元後,立刻替換內容
:B0:::

(B零)

{Left 7} 空白 AutoHotkey預設會把關鍵字刪掉(即觸發後自動執行倒退以刪掉關鍵字),此倒退功能可以使用:B0:選項將之取消,如此關鍵字在替換後仍會保留下來,再附加替換後內容。

輸出結果:|(|是游標位置),游標前會多出做為觸發符號的一個空白

:*B0::: {Left 7} 再多加一個星號就能不使用觸發符號,因而不會有上列多出一個空白的問題輸出結果:|(|是游標位置)

熱字串使用多列文字的方法

上面的例子每個關鍵字只能替換一列文字,若想輸出多列文字應該要如何設定呢?其實AutoHotkey提供了簡單的語法來達成這個功能:只要用各佔一列的左右括號把多列文字夾起來就可以了。

::long1::
(
  Dear xxx,
  Best regards,
  Your Name
)

AutoHotkey的熱鍵設定方式

熱鍵的設定也是很容易就能輕鬆完成,格式是「熱鍵::執行的指令」,熱鍵和要執行的指令間夾有兩個半形冒號。熱鍵有許多按鍵組合,以下是幾個特殊的按鍵符號:

按鍵符號 代表的按鍵與說明
^ 〔Ctrl〕鍵
! 〔Alt〕鍵
+ 〔Shift〕鍵
# 〔Win〕鍵
& 用&符號把兩個按鍵或按鈕組合成為一個鍵,例如:LButton
& a表示按左鈕不放,同時再按〔a〕鍵
~ 加~符號表示不抑制該按鍵,使用在當我們想要把某個按鍵做額外輸出的場合。例如:

;; 不抑制原來的〔a〕鍵,〔a〕鍵替換成aBBB
~a::Send BBB
;; 按〔a〕鍵輸出BBB,抑制原來的按鍵輸出
a::Send BBB

指定好熱鍵後,再接兩個半形冒號,再用預設的命令讓AutoHotkey執行特定任務,用範例說明:

熱鍵設定 指令說明
#n::Run notepad 按〔Win+N〕鍵執行記事本程式(Notepad.exe)Run命令表示執行後面指定的程式
^!F::run c:\program files\mozilla firefox2\firefox.exe 按〔Ctrl+Alt+F〕鍵執行FireFox
~RButton::MsgBox 按了右鍵 按右鍵顯示「按了右鍵」對話窗,若在記事本裡操作,則原本的右鍵功能表會被「按了右鍵」對話窗取代了。
MsgBox是Message Box的意思,彈出顯示訊息對話窗
RButton::MsgBox 按了右鍵 彈出【按了右鍵】對話窗後繼續顯示記事本的右鍵功能表
~MButton & a::Send 送出訊息 按滑鼠中鈕(兩個按鈕的滑鼠,中鈕就是滾輪)後用MsgBox函數顯示對話窗

多列式的熱字串是用括號夾住文字,同樣地熱鍵也能執行多列命令:每個命令必須各佔一行,開頭的空白內縮只是為了閱讀便利而已,沒有空白或空白的數目多寡皆不會影響命令的執行,最後必須以return結束:

; 一個〔Ctrl+Alt+F〕按鍵先後啟動FireFox和記事本
^!F::
  Run c:\program files\mozilla firefox2\firefox.exe
  Run c:\Wndows\notepad.exe
  return

設定好並重新載入後試一下是否成功了呢?咦?好像不行...很有可能是你電腦的系統目錄和範例裡的位置不同,比如作業系統的系統資料可能是C:\Windows或C:\WINNT或安裝系統時自行指定的資料夾名稱,因此若想讓一個指令適用多個作業環境的話,就必須使用內建變數來替代固定的資料夾名稱,以下是幾個你可能會使用到的與資料夾相關的內建變數:

內建變數 用途 範例
A_WinDir Windows系統資料夾 C:\Windows或C:\WINNT
A_ProgramFiles 程式集資料夾名稱 C:\Program Files
A_AppData 使用者個人資料夾 C:\Documents and Settings\使用者\Application Data
A_Desktop 使用者桌面資料夾 C:\Documents and Settings\使用者\桌面

知道變數後再回頭修改指令,在使用變數時其前後要夾上百分號%。當然了,如果你的環境是固定的,直接寫成固定資料夾也不會有問題,反而還更快速呢。下面是使用通用方式的寫法:

; 一個〔Ctrl+Alt+F〕按鍵先後啟動FireFox和記事本
^!F::
  Run %A_ProgramFiles%\mozilla firefox2\firefox.exe
  Run %A_WinDir%\notepad.exe
  return

還有幾個和系統相關的內建變數,可以方便取出這些資訊:

內建變數 用途 範例
A_YYYY

傳回系統日期年度

::'d::
  d = %A_YYYY%/%A_MM%/%A_DD%
  Send %d%
  return
A_MM 傳回系統日期月份
A_DD 傳回系統日期日期
A_Hour 傳回系統時間小時
::'t::
  t = %A_Hour%:%A_Min%:%A_Sec%
  Send %t%
  return
A_Min 傳回系統時間分鐘
A_Sec 傳回系統時間秒數
Clipboard 剪貼簿內容 可以取用也可設值,在後面會有使用範例

接著我列出幾個我常用的按鍵設定當做大家使用的啟始參考範例:

  ; 按Win+G送出@gmail.com字串
  #g::Send @gmail.com
  ; 按〔Win+H〕送出@hotmail.com字串
  #h::Send @hotmail.com
  ; 按〔Win+2〕送出公司的電子信箱。用2的原因是因為2和@是同一個按鍵,方便記憶
  #2::Send @your_mail_address.com.tw
  ; 按〔Win+O〕開啟OpenOffice Writer
  #o::Run %A_ProgramFiles%OpenOffice.org 2.4\programs\writer.exe
  ; 按〔Win+B〕啟動預設瀏覽器並載入指定網址
  #b::Run http://www.google.com.tw
  ; 按〔Ctrl+Alt+C〕開啟控制台視窗
  ^!c::Run %A_WinDir%\System32\control.exe
  ; 按左鈕不放再按〔e〕啟動記事本以編輯AutoHotkey腳本檔
  ~LButton &e::Run %A_WinDir%notepad.exe C:\Program Files\AutoHotkey\test.ahk
  ; 按左鈕不放再按〔r〕以重新載入(reload)腳本檔,使修改過的內容能啟用
  ~LButton &r::
    reload
    return

AutoHotkey的中文運用

慘了,熱字串沒辦法輸出文字!?很可惜AutoHotkey對於Unicode的支援相當薄弱,造成熱字串沒有辦法直接輸出中文,幸好我們可以透過剪貼簿解決這個中文問題。以下範例是輸入'addr與觸發符號後替換成地址的指令。
我們可以用下列的熱鍵設定來方便輸入中文的標點符號。Word也有提供把特殊符號指定給按鍵的作法,但只能在Word裡使用,如果用AutoHotkey設置,那麼不管你操作的是那一種程式,統統都能適用。

:: 'addr::
  current_clipboard = %Clipboard% ; 先把剪貼簿目前內容存入current_clipboard變數
  Clipboard = 台北市中山區民生東路二段141號B1 ; 將電腦人公司的地址存入剪貼簿
  Send ^v
  ;; 用「Ctrl+V」執行貼上剪貼簿內容
  Clipboard = %current_clipboard% ; 再把剪貼簿還原回原本的內容
  return

; 按〔Ctrl+點〕送出句點
^.::
  Clipboard = 。 ; 把句點存入剪貼簿     
  Send ^v
  ; 送出〔Ctrl+V〕貼上句點
  return

; 按〔Ctrl+半形逗點〕送出全形逗點
^,::
  Clipboard = ,
  Send ^v
  return
  ; 按〔Ctrl+單引號〕送出頓點

^'::
  Clipboard = 、
  Send ^v
  return

; 按〔Alt+分號〕送出全形分號
!;::
  Clipboard = ;
  Send ^v
  return

; 按〔Alt+1〕送出左箭頭
!1::
  Clipboard = ←
  Send ^v
  return

; 按〔Alt+1〕送出右箭頭
!2::
  Clipboard = →
  Send ^v
  return

接著我們再設置幾個中文括號,先把要放在括號裡的文字選取好,再按指定的按鍵就能把被選取文字夾在括號裡。由於這些按鍵的處理指令大同小異,只有括號的符號不同而已,因此我們可以把指令集中到一個函數(send_bracket)裡。

![::
  current_clipboard = %Clipboard% ; 把原有剪貼簿內容存起來   
  Clipboard = ; 把剪貼簿清空
  Send,
  ^c ; 把選取文字複製到剪貼簿
  ClipWait,1 ; 等待剪貼簿儲存動作完成
  clipboard = 「%clipboard%」
  ; 在剪貼簿前後加上全形括號
  Send,
  ^v{left} ; 貼上加了括號後的剪貼簿內容
  Clipboard = %current_clipboard% ; 剪貼簿還原回原來內容
  return

^[::
  send_bracket("「", "」")
  return

#[::
  send_bracket("〔","〕")
  return

^]::
  send_bracket(“『“,”』“)
  return

^![::
  send_bracket("【","】")
  return

^!]::
  send_bracket(“《“,”》“)
  return

send_bracket(start,end) {
  current_clipboard = %Clipboard%
  Clipboard =
  Send, ^c
  ClipWait,1
  clipboard = %start%%clipboard%%end%
  Send ^v{left}
  Clipboard = %current_clipboard%
  return
}

AutoHotkey的綜合運用:標示字串與搜尋

當我們在某份文件或某網頁上看到某個詞句想要用搜尋引擎來查詢時,大致會有下列四個步驟:

  1. 把該詞句存入剪貼簿
  2. 開啟搜尋引擎網站
  3. 貼上剪貼簿裡的詞句
  4. 按搜尋

如果透過AutoHotkey我們可以把動作簡化成兩個步驟:

  1. 選取要搜尋的詞句
  2. 按自訂的一個按鍵,例如〔Alt+G〕
; 選取文字後按〔Alt+G〕執行Google搜尋
!g::
  current_clipboard = %Clipboard% ; 把目前的剪貼簿內容存起來供後面還原
  Clipboard = ; 先把剪貼簿清空
  Send ^c
  ; 把選取字串用〔Ctrl+C〕存入剪貼簿
  ClipWait, 1 ; 等待1秒讓剪貼簿執行存入動作
  ; 下行使用Google執行搜尋動作,要搜尋的字串就是剪貼簿內容
  Run http://www.google.com.tw/search?hl=zh-TW&q=%Clipboard%
  Clipboard = %current_clipboard% ; 還原先前的剪貼簿內容
  return

; 選取文字後按〔Alt+Y〕執行Yahoo!搜尋
!y::
  current_clipboard = %Clipboard%
  Send ^c
  ClipWait, 1
  Run http://tw.search.yahoo.com/search?ei=UTF-8&p=%Clipboard%
  Clipboard = %current_clipboard%
  return

; 選取文字後按〔Alt+L〕執行微軟Live Search搜尋
!l::
  current_clipboard = %Clipboard%
  Send ^c
  ClipWait, 1
  Run http://search.live.com/results.aspx?mkt=zh-tw&q=%Clipboard%
  Clipboard = %current_clipboard%
  return

提升效率的好幫手

在簡要的介紹AutoHotkey的熱鍵與熱字串功能後,你是否也認為它確實能為你的電腦生活帶來更好的效率呢?必須額外付出的學習成本事實上也是相當低
廉的,為了更快速、更便捷的電腦生活,AutoHotkey是極佳的自我投資。

本文僅是基礎的入門介紹,以下列出幾個網站供想要更上層樓的讀者們參考:

AutoHotkey參考網站

本文摘錄自《Download!網路密技王》第三期


##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

63 個回應

  1. Greyson表示:

    請問老師,如何用熱鍵就能打出 現在時間:30分鐘後的時間
    例如現在是00:00,我想只接打出以下字串,該怎麼做?謝謝
    00:00 – 00:30

    • 簡睿表示:

      Gologle AutoHotkey time calc之類的,有不少examples.
      另一個方法是使用ChatGPT, 應該很快能找到答案。

  2. TedKing表示:

    謝謝簡睿大神介紹 AutoHotKey,小弟是程式設計門外漢,這幾天參考 您的 「用AutoHotkey改造ThinkPad X61按鍵」,然後看了好多次AHK文章,跟修修改改您的範例腳本後,終於能在 Brave 瀏覽器, 用ThinkPad 的小紅點 +旁邊的鍵盤鈕 跟加入 自訂的Q鍵「上一頁」(ALT+左)、W鍵「下一頁」(ALT+右)、N鍵「到網頁最底」(CTRL+END)、J鍵「到網頁最上方」(CTRL+HOME) ,基本上現在上網瀏覽,手都不用離開鍵盤,只用小紅點跟鍵盤鍵跟行了,真是太感謝簡睿大神了…請收下我的膝蓋…感恩

  3. Marco表示:

    Dear 簡睿大哥,

    我寫了個模擬鍵盤程式,但是我有些地方不懂,想請您指教。
    我的問題是無論我是否按了ButtonCaps,按下ButtonQ都會輸出大寫。
    我希望按下ButtonCaps的時候再按ButtonQ會輸出大寫,不按ButtonCaps則輸出小寫(與鍵盤一樣)。
    請問我該怎麼寫?

    Gui +AlwaysOnTop
    Gui, Color, %TransColor%
    Gui, Font, S10 C000000 , Tahoma
    Gui, Show, x131 y91 h153 w503,鍵盤

    Gui, Font, S09 C000000 , Tahoma
    Gui, Add, Tab, x-2 y0 w400 h153 , ABC

    Gui, Font, S16 C000000 , Tahoma
    Gui, Tab, ABC
    Gui, Font, S13 c000000 , Verdana
    Gui, Add, Button, x2 y24 w25 h25 ,Q
    Gui, Add, Button, x30 y24 w25 h25 ,W

    ButtonQ:
    WinActivate, ahk_id %k_ID%
    Clipboard = Q
    SendInput Q
    Return

    ButtonCaps:
    WinActivate, ahk_id %k_ID%
    Sendinput {CapsLock}
    Return

    • 簡睿表示:

      可以試看看用 GEtKeyState:

      if (GetKeyState("CapsLock", "T") = 1) {
      Clipboard = Q
      SendInput = Q
      } else {
      Clipboard = q
      SendInput q
      }

  4. amnesiac表示:

    博主,你好,我想转载本文到我的专栏中,并根据目前的 AutoHotkey 做些调整更新,是否方便?
    专栏中已有下面两篇:
    【指南】自动化操作轻松入门:http://zhuanlan.zhihu.com/autohotkey/19792473
    【指南】让重复工作一键完成:http://zhuanlan.zhihu.com/autohotkey/19791494

  5. Jumbo表示:

    您好,
    我有一些關於AutoHotKey的疑問想請教。

    目標:按一次Ctrl+space會自動按三次Ctrl+space。

    有兩種想法:
    一種是把^space 替換成三次,
    我寫
    ^space::{^{space}} {^{space}} {^{space}}
    無法作用。

    第二種是寫完整的
    按下ctrl->按下space*3->放開ctrl
    我寫
    ^space::{CTRLDOWN}{SPACE}{SPACE}{SPACE}{CTRLUP}
    也是無法作用。

    懇求您的幫助,謝謝。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *