ディレクティブの基礎知識

提供: AutoHotkey Wiki
移動: 案内検索
リファレンス > その他解説 > ディレクティブの基礎知識

ディレクティブ(Directive) は「指令」とも呼ばれる。
リファレンス内で # から始まるものはすべてディレクティブである。
これらはスクリプトのロード時に評価されスクリプト全体の挙動に影響を及ぼすものである。

ディレクティブの種類[編集]

AutoHotkeyのディレクティブは主として以下のような種類がある。

  • スクリプトの解釈に利用するもの
#Include, #EscapeChar, #CommentFlag 等が該当する。スクリプトの読み込みに先だってこの設定を把握し、スクリプトの読み込み・解釈に利用する。
  • スクリプト動作の挙動を定義するもの
#HotkeyInterval, #InstallKeybdHook, #KeyHistory, #MaxMem, 等が該当する。 スクリプトの実行に先立って設定が読み込まれ、動作時にそれをが適応されるもの。 SendModeSetFormat 等とは異なり、スクリプトの動作中の変更は出来ない。
  • ホットキー・ホットストリングの定義の影響するもの
#IfWinActive, #If, #UseHook, #Hotstring 等が該当する。 これらは複数の記述が可能。スクリプトの読み込みに先立って解釈され、直前の設定がホットキー・ホットストリングの定義に影響する。

よくある間違い[編集]

ディレクティブはコマンドや関数ではない。次に挙げるような間違いがよく生じるので注意されたし。

変数の内容によって動的にインクルードするファイルを切り替えようとした例。スクリプトの動作中にインクルードは出来ない。この場合は面倒でも両方のスクリプトを読み込んで、条件によってそれぞれにあるサブルーチンを呼び出すなどの対応をする。

If ( a > 0 )
  #Include, foo.ahk
Else
  #Include, bar.ahk

スクリプトで取得した変数を用いてホットキー定義しようとした例。 #IfWinActive はスクリプトの実行前に定義が決まってしまうので意図した動作にならない。 この場合、GroupAdd でウィンドウグループを利用するか、#If を用いることで対応が出来る。

WinGet, appId, ID, A
#IfWinActive, ahk_id %appId%
  :