AutoHotKeyでファイルを分けたい時には#Includeを使って別のファイルを読み込むことができます。
外部ファイルに分けるメリットとして、関数などの定義を個別に管理できることや機能別にファイルを分けて必要な分だけを読み込むなどのやり方があります。
なお、MouseGestureLなどAutoHotKeyを使用しているプログラムでも同様のことが可能です。
ここでは常駐のAutoHotKeyから別のファイルを読み込むやり方をまとめます。
#Includeで別ファイルを読み込む
同一フォルダ内での読み込み
AutoHotKeyにて外部にある別ファイルを読み込むには#Includeを使います。
#Include other.ahk
AutoHotKeyの実行ファイルと同一のフォルダにある場合は上記の記述のみで動きます。
別フォルダでの読み込み
では、別フォルダにあるファイルを読み込みたい場合にはどのようにしたらいいでしょうか。
読み込みファイルがAutoHotKeyの実行ファイル以下の場合は相対パスで書くこともできますが、絶対パスを使用する場合には「A_ScriptDir」という組み込み変数が使えます。
この変数を使用して以下のように記述すると、別フォルダにあるファイルを読み込むことができます。
; 絶対パス #Include %A_ScriptDir%\subir\other.ahk ; 相対パス #Include subdir\other.ahk
自動で読み込まれるライブラリ
関数ライブラリスクリプトを利用して自動読み込み
AutoHotKeyには「Lib」フォルダ内にあるファイルを自動で読み込む機能がついています。これを利用することによって#Includeを記述せずに自動でファイルを読み込むことができます。(関数ライブラリスクリプトと呼ばれています)
未定義の関数が見つかった場合、以下のフォルダを探して該当関数があったら自動で読み込みます。
Lib\{関数名}.ahk
つまり、Test()という未定義の関数が呼び出された場合、Lib\test.ahkを検索してTest()関数が定義されていれば読み込みます。
また、_(アンダーバー)で区切られた関数名に関しては、最初の「_」の前の部分を検索します。
つまり、Test_Set()という関数があれば、 Lib\test.ahk を検索してTest_Set()関数が定義されていれば読み込みを行います。
関数ライブラリスクリプトで検索されるフォルダ
Libフォルダを利用した自動読み込み機能では、以下の順番でファイルを検索します。
順番 | 場所 | 詳細 |
---|---|---|
1 | %A_ScriptDir%\Lib | スクリプトがあるフォルダ直下の「Lib」フォルダ |
2 | %A_MyDocuments%\AutoHotkey\Lib | ユーザードキュメント内の「AutoHotKey\Lib」フォルダ |
3 | {AutoHotkey.exeのあるフォルダ}\Lib | AutoHotKeyが実行されているフォルダ直下の「Lib」フォルダ |
自動読み込み機能を使用する場合の注意点
Libフォルダはデフォルトでは存在していないので、自動読み込み機能を使いたい場合には自分で作成する必要があります。
また、読み込まれるのはファイル全体であるため、関数名やサブルーチンの名称、ホットキーの定義などが重複する可能性があります。
コメント