指定されたファイルの内容がこの位置に存在するかのようにスクリプトを動作させます。
#Include FileOrDirName #Include <LibName> #IncludeAgain FileOrDirName
型:文字列
以下に説明するファイルまたはディレクトリのパスです。このパスには、二重引用符、ワイルドカード、またはセミコロン(';) 以外のエスケープ シーケンスを含めることはできません。ただし、パラメーターを囲う二重引用符は除きます。
組込変数は、パーセント記号で囲んで使用することができます(例えば、#Include "%A_ScriptDir%"
)。有効な変数参照の一部でないパーセント記号は、文字通りに解釈されます。A_Argsと、組み込みクラスを除く、すべての組込変数が有効です。
既知の制限:スクリプトをコンパイルする際、変数はコンパイラによって評価され、最終的に実行されたときにスクリプトが返す値とは異なる場合があります。以下の変数に対応:A_AhkPath、A_AppData、A_AppDataCommon、A_ComputerName、A_ComSpec、A_Desktop、A_DesktopCommon、A_IsCompiled、A_LineFile、A_MyDocuments、A_ProgramFiles、A_Programs、A_ProgramsCommon、A_ScriptDir、A_ScriptFullPath、A_ScriptName、A_Space、A_StartMenu、A_StartMenuCommon、A_Startup、A_StartupCommon、A_Tab、A_Temp、A_UserName、A_WinDir。
ファイル:インクルードするファイル名。デフォルトでは、相対パスは#Includeディレクティブを含むファイルのディレクトリからの相対パスとなります。このデフォルトは、後述の#Include Dir
を使用することで上書きすることができます。注:SetWorkingDirは、スクリプトの実行を開始する前に#Includeが処理されるため、#Includeに影響を与えません。
ディレクトリ:ファイルではなくディレクトリを指定することで、それ以降に出現する現在のファイル内の#IncludeとFileInstallが使用する作業ディレクトリを変更します。注:この方法で作業ディレクトリを変更しても、スクリプトの実行開始時の初期作業ディレクトリ(A_WorkingDir)には影響しない。これを変更するには、スクリプトの先頭でSetWorkingDirを使用します。
注:このパラメータは式ではなく、引用符(「シングル」または「ダブル」のいずれか)で囲むことができます。
型:文字列
ライブラリファイル名または関数名です。例えば、#Include <lib>
と#Include <lib_func>
は、どちらもLibフォルダの一つからlib.ahkをインクルードします。Variable references are not allowed.
スクリプトは、#Includeディレクティブの正確な位置に、インクルードファイルのコンテンツが物理的に存在するかのように動作します(まるでインクルードファイルからコピー&ペーストが行われたかのようです)。そのため、一般的に、孤立した2つのスクリプトを1つの機能するスクリプトに統合することはできません。
#Include ensures that the specified file is included only once, even if multiple inclusions are encountered for it. これに対して、#IncludeAgainは、他のすべての点で#Includeと同じでありながら、同じファイルを複数回インクルードすることができます。
ファイルパスの前に*i
と空白1個を付けることもできますが、この場合、プログラムはこのファイルの読み込みに失敗しても無視します。事例:#Include "*i SpecialOptions.ahk"
。このオプションは、ファイルの内容がメインスクリプトの動作に不可欠でない場合にのみ使用してください。
メインウィンドウのListLinesまたはメニューのView->Linesで表示されるラインは、常にファイル内の物理的な順序に従って番号付けされます。言い換えれば、新しいファイルを含めると、メイン スクリプト ファイルの行番号は、#Include 行の1行分しか変更されません(ただし、コンパイル スクリプトは、コンパイル時にインクルード ファイルを 1 つの大きなスクリプトに統合します)。
#Includeは、外部ファイルで定義された関数を読み込むためによく使われます。
他のディレクティブと同様に、#Includeは条件付きで実行することはできません。つまり、この例では期待通りに動作しないことになります:
if (x = 1) #Include "SomeFile.ahk" ; この行は、xの値に関係なく有効になります。