AHK のソースコードの方で fromFileName と同じ様な事をする

AHK のソースコードの方で fromFileName と同じ様な事をする

AHK のソースコードの方で fromFileName と同じ様な使い方をする例を紹介します。

fromFileName と同じ様な使い方とは、スクリプトを記述したファイルを「加える・捨てる」だけで使用可能にしたりオフの状態にしたりできるものという意味のものです。
つまり、再利用しやすい使い方です。

ソースコード版について のページで説明した
userMakeSubroutineAndFunction.ahk のファイルに以下を記述した例で紹介します。

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\script1.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\script2.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\script3.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\script4.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\script5.ahk

userMakeScript のフォルダ内に script1.ahk という名前のファイルなどを配置してそれを使う方法です。

#Include*i のオプションがありますが、これは指定しているファイルが存在しなくてもエラーにならない様にする指定です。

ですので、 script1.ahk などのファイルを削除や移動してもよい事になります。

このやり方はファイル名を選べないという不便さはありますが、 fromFileName と同じ様に、使う時だけ加えて、要らなくなったときは削除か移動するというやり方がとれる方法だと思います。

例としてのファイルを挙げます。

このファイルを script1.ahk といった名前にして userMakeScript のフォルダ内に配置します。

+^!1::
    F_showToggleGui( B_GuiNumTmpOutput )
    return

+^!2::
    F_showToggleGui( B_GuiNumOutput )
    return

+^!3::
    F_showToggleGui( B_GuiNumErrorOutput )
    return

+^!4::
    F_showToggleGui( B_GuiNumStock2 )
    F_showToggleGui( B_GuiNumStock1 )
    return

+^!5::
    F_showToggleGuiTextPattern( B_GuiNumText1 )
    return

+^!6::
    F_showToggleGui( B_GuiNumClickWindow )
    return

Ctrl+Alt+Shift + [数字] のキーで TRR のウインドウを表示させるキーを作っています。

このようなものを script1.ahk などのファイル名で作り、使う時にだけ配置して、使わなくなったら削除か移動するという形をとれば「使い捨て」と「再利用」がしやすい使い方ができるのではないかと思います。

起動時に実効する処理は

起動時に実効する処理を使いたい場合は userMakeStartUpExecute.ahk のファイルを使う事になります。

先程の script1.ahk などは、関数やサブルーチンやホットキーラベルを宣言して使うためのファイルですが、一応これは「加える・捨てる」というやり方を前提として使うファイルです。

userMakeStartUpExecute.ahk 内のスクリプト内に、 script1.ahk などのファイル内の関数やサブルーチンを呼び出すなどで script1.ahk と関連付けがされている場合は、 script1.ahk を削除するなどした場合、エラーになってしまう事になると思います。

ここでは、起動時に実効する処理を使いたい場合にこうしたらいいと思う方法を挙げておきます。

起動時に実効する処理を使いたい場合、普通のやり方では userMakeStartUpExecute.ahk のファイルを使用するという方法になります。

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\start1.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\start2.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\start3.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\start4.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\start5.ahk

これを userMakeStartUpExecute.ahk に記述しておき、 start1.ahk などのファイルを用意して、 script1.ahk と関連付けたものを用意するといった方法が考えられます。

この方法でもよいのですが、そうすると、 script1.ahkstart1.ahk と関連付けたものであった場合、 script1.ahk を削除してしまう事でエラーになってしまう事になると思います。

script1.ahk を削除した場合、 start1.ahk も削除するというルールを忘れない様にしなければいけない事になります。

解決方法という程ではないですが、 script1.ahk などのファイルを削除する事でエラーが起きにくくなる様にする方法を以下に挙げる事にします。

fromFileName を使用する

起動時に実効する処理を作るのであれば、 TRRfromFileName を使用して作る事を薦めます。

script1.ahk のファイルを使って作った関数などを使ったスクリプトを起動時に実効する場合、
script1 などの関連が分かりやすい名前のカテゴリーフォルダ名で fromFileName 内に配置し、 アイテムstartup を使って動作させる方法がよいと思います。

この方法なら、 script1 を削除か移動をさせるかをした場合、
元の script1.ahk 内の関数などが無くなっている事のエラーが エラー表示 のウインドウに出力されるだけで、 AHK側のエラーでストップする事を防げると思うので少し安全に使えるのではないかと思います。

category のフォルダ以下に script1.ahk を置く

script1.ahk などのファイルを削除する事でエラーが起きにくくなるもう一つの方法は、 script1.ahk などのファイルを category1 などのフォルダ内に置く方法です。

userMakeSubroutineAndFunction.ahk のファイルを以下の記述にします。

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category1\script1.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category2\script2.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category3\script3.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category4\script4.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category5\script5.ahk

そして、 userMakeStartUpExecute.ahk のファイルの方も以下の記述にします。

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category1\start1.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category2\start2.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category3\start3.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category4\start4.ahk

#Include *i %A_ScriptDir%\trrEvery\userMakeScript\category5\start5.ahk

category1 のフォルダに
script1.ahkstart1.ahk を置く構成です。

この形にしておくことで script1.ahk を削除か移動した場合、 関連付けられている start1.ahk の方も変更する事を忘れにくくなると思います。

あとがき

AHK のソースコードの方で fromFileName と同じ様な使い方をする例は以上です。

少ししつこいですが、以上の方法を使えば、ファイルを「加える・捨てる」だけで使える機能を増やしたりオフにしたりができる「再利用がしやすい使い方」が可能になるのではないかと思います。

この方法は、 TRR に限らず、 AutoHotkey のみで使う場合でも使える方法です。

時々使うホットキーラベルといったものがあった場合、この方法を試してみてもよいのではないかと思います。