使用方法

インストール

ZIPアーカイブ版は、解凍するだけで実行可能になる。
インストーラー版は、実行すると表示される画面で「Next>」「I Agree」「Next」「Install」の順に押していけばインストールできる。

スクリプトファイルの関連付け

AutoHotkeyをインストーラーでインストールすると、拡張子「.ahk」のファイルに関連付けが行われ、拡張子「.ahk」のスクリプトファイルをエクスプローラでダブルクリックしたときなどにAutoHotkey.exeで実行されるようになる。
右クリックメニューには、スクリプトを実行する「Run Script」の他、後述のahk2.exeで実行ファイル化する「Compile Script」、notepad.exeでスクリプトファイルを開く「Edit Script」が追加される。
また、インストーラーの「Choose Components」の画面で「Enable drag & drop onto scripts」にチェックをした場合、スクリプトファイルのアイコンにファイルをドラッグ&ドロップしたときに、スクリプトファイルに引数(%1%)として送られるようになる。

スクリプトの実行ファイル化

ahk2exe.exeを使うことで、スクリプトを実行ファイル化することが可能。
実行ファイルはUPXによる圧縮が施される。
逆コンパイラも公開されているが、パスワードで暗号化すれば逆コンパイルを防げる。
作成した実行ファイルの配布は自由。

コンパイルされたスクリプトでは通常、タスクトレイメニューからメインウィンドウを表示することは出来ない。
Menu,TRAY,MainWindow」でメインウィンドウを表示可能にできる。

スクリプト側から、コンパイルされた状態で実行されているかどうかを知るには、「A_IsCompiled」変数を使用する。「1」ならコンパイルされている。

ahk2exe.exeのコマンドライン

Ahk2exe.exe /in <infile.ahk> [/out <outfile.exe>][/icon <iconfile.ico>][/pass <passphrase>] [/NoDecompile]

Ahk2exe.exeはコマンドラインから直接コンパイルを実行することも可能。

コンパイルされた実行ファイルのコマンドライン

CompiledScript.exe [/f] [/r] [/ErrorStdOut] [Script Parameters] 

コンパイルして作成された実行ファイルは、上記のコマンドラインで実行できる。
Script Filenameの指定が無い以外はAutoHotkey.exeと同じである。

AutoHotkey.exeの実行

AutoHotkey.exeはAutoHotkeyのスクリプトを実行するメインプログラムである。
実行時のコマンドラインは以下のような書式になっている。
スクリプトファイルを関連付けから実行する場合は、意識する必要はない。

AutoHotkey.exe [/f] [/r] [/ErrorStdOut] [Script Filename] [Script Parameters]

各オプションの意味は以下の通り。

/f
警告ダイアログを出さずに、強制的に起動
/r
スクリプトを再読み込みしたいときに使用。
/ErrorStdOut
文法エラーをダイアログ表示せずに標準出力に出力する

単にAutoHotkey.exeを実行するなど、Script Filenameを指定せず起動した場合は、起動時の作業ディレクトリのAutoHotkey.iniが読み込まれる。
ファイルが存在しない場合、My Documentsディレクトリ内のAutoHotkey.iniが読み込まれ、それも存在しない場合はMy Documentsディレクトリ内にAutoHotkey.iniを作成してよいかを問い合わせるダイアログが表示される。

Script Filenameを指定しないと、Script Parametersを指定することは出来ない。

Script Parametersには任意の数の文字列をスペース区切りで渡せる。
スペースを含む場合は「"」で囲む。
渡された引数は、変数に格納され、スクリプト内で「%1%」、「%2%」……のように記述することで参照できる。
「%0%」には引数の数が格納される。
なお、スクリプト自身のパスを取得するには「%A_ScriptFullPath%」変数を使用する。

スクリプトのエラー

スクリプトのエラーには、読み込み時のエラーと実行時のエラーがある。

存在しないコマンドや関数の呼び出し、コマンドの書式間違い、存在しないラベルの指定、開き括弧と閉じ括弧の対応の不備などが読み込み時エラーとなる。
これらの問題のあるスクリプトを実行しようとすると、エラー箇所やエラー概要などがダイアログで表示され、実行は行われない。

スクリプトの実行中にコマンドが何らかの形で失敗した場合などには、実行時エラーとなる。
実行時エラーが発生すると、ダイアログが表示され、エラーの発生したスレッドはその場で終了する。
ホットキーなどが割り当てられて常駐状態になっているスクリプトでは、スクリプト自体は終了しない。しかし、スクリプトが期待通りに実行されなかったことで、その後の実行に支障を来す場合がある。

リロード

タスクトレイアイコンの右クリックメニューから「Reload This Script」を実行することで、スクリプトを読み込み直して実行できる。
また、常駐状態になっているスクリプトは、同じスクリプトをもう一度起動することで、「既存のプロセスを終了して起動するか」を問い合わせるダイアログが表示され、「はい」を選ぶことで再読込する。
Reloadコマンドでスクリプト中から再読込を行わせることも可能。

AutoHotkey.exeのタスクトレイアイコン

AutoHotkey.exeを実行すると、タスクトレイにアイコンが表示される。(これは#NoTrayIcon指令やMenuコマンドで非表示に出来る)
ダブルクリックでAutoHotkeyのメインウィンドウが表示されるほか、右クリックメニューから以下の操作が実行できる。

Open
AutoHotkeyのメインウィンドウを表示する。
Help
ヘルプファイル(AutoHotkey.chm)を開く
Window Spy
ウィンドウ情報表示ツール・AU3_Spy.exeを起動する
Reload This Script
スクリプトを再読込し、最初から実行し直す(Reloadコマンドと同じ)
Edit This Script
スクリプトをメモ帳(notepad.exe)で開く
Suspend Hotkeys
割り当てたホットキーを全て停止する(Suspendコマンドと同じ)
Pause Script
スクリプトを一時停止する(Pauseコマンドと同じ)
Exit
スクリプトを終了する。ExitAppコマンドと同じ。

AutoHotkey.exeのメインウィンドウ

AutoHotkeyのメインウィンドウでは、実行中のスクリプトの様々な情報を表示できる。
表示モードはメニューバーの「View」以下から選択して切り替える。
また、各画面を表示するためのコマンドもそれぞれ用意されている。
いずれの画面も、呼び出しコマンドを実行するか「F5」キーを押すことで最新の情報に更新できる。

Lines most recently executed

実行されたスクリプトの行が順番に表示される。
この画面はListLinesコマンドでも表示できる。

Script lines most recently executed (oldest first).  Press [F5] to refresh.  The seconds elapsed between a 
line and the one after it is in parentheses to the right (if not 0).  The bottommost line's elapsed time is 
the number of seconds since it executed.

002: Return (2.59)
003: Sleep,100 (0.11)
004: MsgBox (1.63)
005: ListLines

Press [F5] to refresh.

行番号と行の内容が実行された順に表示される。行の内容は、実際にスクリプトファイルに記述されているものと同じとは限らないが、意味は全く同じになってる。
行の内容の後に付いていることのある数字の入った「()」は、次の処理が実行されるまでに経過した時間(秒)である。
何らかの理由でスクリプトの処理が行われなかった期間がある場合に表示される。

Variables and their contents

スクリプトによって作成された変数とその内容が一覧表示される。
この画面はListVarsコマンドでも表示できる。

Local Variables for func2()
--------------------------------------------------
b[1 of 1]: a


Global Variables (alphabetical)
--------------------------------------------------
0[1 of 1]: 0
ErrorLevel[1 of 1]: 0
value[8 of 63]: aaaaaaaa

各行の先頭が変数名である。一覧は変数名順に並べられている。
変数名の後の「[x of y]」となっている部分は、左の数字が変数の内容の文字数、右の数字が変数のために確保されているメモリの容量(VarSetCapacity()関数で設定可能)である。
「:」より右に変数の内容の先頭60バイト分が表示される。

画面が表示された時点でAutoHotkeyのユーザー定義関数が実行されている場合は、関数内でのみ有効なローカル変数の一覧が表示される。(「Local Variables for ...」以下の部分)
関数の中から他の関数呼び出しが行われている場合でも、現在実行されている一番上位の関数の物のみが表示される。

Hotkeys and their methods

スクリプトによって割り当てられているホットキーが一覧表示される。
この画面はListHotkeysコマンドでも表示できる。

Type	Off?	Running	Name
-------------------------------------------------------------------
reg			F1
m-hook			MButton
k-hook			$F2
k-hook			F3

それぞれの列の意味は以下の通り。

Type
ホットキーの登録方法。以下のようなものがある。
reg
Windowsのホットキー登録機構を利用して登録
reg(no)
ホットキーが無効化されているため、登録を解除してある
k-hook
キーボードフックによってキー押し下げを検知している
m-hook
マウスフックによってマウスボタン押し下げを検知している
2hooks
マウスとキーボードの両方のフックを使用している
joypoll
ジョイスティックのボタンを検出するための処理を行っている
Off?
Hotkeyコマンドなどによって一時的に無効化されている場合は「OFF」になる
#IfWinActive指令の条件分けにより複数割り当てられたうちの一部のみが無効化されている場合は「PART」になる
Running
ホットキーサブルーチンのスレッドが実行されている数
Name
ホットキー名

Key history and script info

キーボードの履歴や押されているキー、その他スクリプトの情報などが表示される。
KeyHistoryコマンドでも表示できる。

Window: E:\test\test.ahk - AutoHotkey v1.0.44.07
Keybd hook: yes
Mouse hook: yes
Enabled Timers: 0 of 0 ()
Interrupted threads: 0
Paused threads: 0 of 0 (0 layers)
Modifiers (GetKeyState() now) = 
Modifiers (Hook's Logical) = 
Modifiers (Hook's Physical) = 
Prefix key is down: no

NOTE: To disable the key history shown below, add the line "#KeyHistory 0" anywhere in the script.  The same 
method can be used to change the size of the history buffer.  For example: #KeyHistory 100  (Default is 40, 
Max is 500)

The oldest are listed first.  VK=Virtual Key, SC=Scan Code, Elapsed=Seconds since the previous event.  Types:
 h=Hook Hotkey, s=Suppressed (blocked), i=Ignored because it was generated by an AHK script, a=Artificial, #=
Disabled via #IfWinActive/Exist.

VK  SC	Type	Up/Dn	Elapsed	Key		Window
-------------------------------------------------------------------------------------------------------------
78  043	 	u	0.08	F9             	E:\test\test.ahk - VxEditor
70  03B	 	d	2.61	F1             	
70  03B	 	u	0.11	F1             	
01  000	 	d	0.98	LButton        	
01  000	 	u	0.08	LButton        	
Press [F5] to refresh.

上部に表示される情報の意味は以下の通り。

Window
この画面が表示される直前にアクティブだったウィンドウのタイトル
Keybd hook
キーボードフックが有効になっていれば「yes」。キーボードフックを有効にするには、「$」修飾子付きホットキーを割り当てるか、#InstallKeybdHook指令を記述しておく
Mouse hook
マウスフックが有効になっていれば「yes」。マウスフックを有効にするには、マウスボタンにホットキーを割り当てるか、#InstallMouseHook指令を記述しておく
Enabled Timers
有効化されているタイマーの数。「()」内は割り当てられたラベル名の一覧。タイマーの割り当てはSetTimerコマンドで行う
Interrupted threads
スレッドの割り込みによって停止しているスレッドの数
Paused threads
Pauseコマンドなどによって停止しているスレッドの数
Modifiers (GetKeyState() now)
押し下げられている修飾キーの一覧(GetKeyState()関数などで押し下げ状態と認識されるもの)
Modifiers (Hook's Logical)
押し下げられている修飾キーの一覧(プログラムなどによって押し下げられているもの)
Modifiers (Hook's Physical)
押し下げられている修飾キーの一覧(実際にキーボードのキーが押し下げられているもの)
Prefix key is down
「MButton & LButton」のようなコンビネーションキーの左側に指定されてるキーが押されているとき「yes」になる

履歴部分の説明文に続きキーの履歴が表示される。
下に行くほど新しいイベントである。
それぞれの列は以下のような意味になっている。

VK
操作されたキーの仮想キーコード。ホットキーラベルやSendコマンドなどで「vk??」のようにしてキー名の代わりに使用できる
SC
操作されたキーのスキャンコード。ホットキーラベルやSendコマンドなどで「sc???」のようにしてキー名の代わりに使用できる
Type
イベントのタイプ。以下のものがある。
h
フックを利用したホットキーが発動した
s
フックによってイベントが隠蔽された(あるキーにホットキーが割り当てられていて、そのキーの押し上げイベントには何も割り当てられていない場合、押し上げイベントが隠蔽される)
i
AutoHotkey自身が生成したイベント(AutoHotkeyのホットキーは発動しない)
a
他のプログラムによって生成されたイベント
#
ホットキーは割り当てられているが#IfWinActive指令の条件に一致しないので無視された
Up/Dn
キーを押した場合は「d」、離した場合は「u」になる
Elapsed
一つ前のイベントからの経過時間(秒)
Key
キー名
Window
イベントが発生したウィンドウのタイトル。ウィンドウが切り替わった直後のイベントのみ表示される