#DllLoad

スクリプトの実行を開始する前に、DLLまたはEXEファイルをロードします。

#DllLoad FileOrDirName

パラメータ

FileOrDirName

型:文字列

以下に説明するファイルまたはディレクトリのパスです。このパスには、二重引用符、ワイルドカード、またはセミコロン(';) 以外のエスケープ シーケンスを含めることはできません。ただし、パラメーターを囲う二重引用符は除きます。

組み込み変数は、#DllLoad "%A_ScriptDir%"のようにパーセント記号で囲むことによって使用できます。有効な変数参照の一部でないパーセント記号は、文字通りに解釈されます。A_Argsと、組み込みクラスを除く、すべての組込変数が有効です。

既知の制限:スクリプトをコンパイルする際、変数はコンパイラによって評価され、最終的に実行されたときにスクリプトが返す値とは異なる場合があります。以下の変数に対応:A_AhkPathA_AppDataA_AppDataCommonA_ComputerNameA_ComSpecA_DesktopA_DesktopCommonA_IsCompiledA_LineFileA_MyDocumentsA_ProgramFilesA_ProgramsA_ProgramsCommonA_ScriptDirA_ScriptFullPathA_ScriptNameA_SpaceA_StartMenuA_StartMenuCommonA_StartupA_StartupCommonA_TabA_TempA_UserNameA_WinDir

ファイル:ロードするDLLまたはEXEファイルの絶対パスまたは相対パスを指定します。相対パスが指定された場合、システムの関数LoadLibraryWと同じ検索方法でファイルを検索します。注:SetWorkingDirは、スクリプトの実行を開始する前に#DllLoadが処理されるため、#DllLoadには影響しません。

ディレクトリ:DLLまたはEXEへの絶対パスを指定しない#DllLoadを実行した場合、ファイルではなくディレクトリを指定することで検索方法を変更します。新しい検索戦略は、Directoryが、システムの関数SetDllDirectoryWに渡された場合と同じです。このパラメータが省略された場合、デフォルトの検索ストラテジーが復元されます。

注:このパラメータは式ではなく、引用符(「シングル」または「ダブル」のいずれか)で囲むことができます。

備考

このディレクティブによって一度ロードされたDLLやEXEは、システムの関数FreeLibraryを呼び出すことによってアンロードすることができません。スクリプトの終了時には、ロードされたすべてのファイルが自動的にアンロードされます。

ファイルパスの前に *iと1 つのスペースを付けると、プログラムはファイルの読み込みに失敗しても無視します。このオプションは、DLLやEXEが必須でないなど、障害があってもスクリプトが実行できる場合、またはスクリプトが障害を検出するように設計されている場合にのみ使用する必要があります。事例:

#DllLoad "*i MyDLL"
if !DllCall("GetModuleHandle", "str", "MyDLL")
    MsgBox "Failed to load MyDLL!"

FileOrDirNameパラメーターにパスのないDLL名を指定して拡張子を省略すると、ファイル名に.dll が追加されます。これを避けるには、ファイル名の末尾にピリオド(.)を含めてください。

他のディレクティブと同様に、#DllLoadは条件付きで実行することはできません。

DllCall

スクリプトの実行前に、カレントユーザーの "My Documents"フォルダーにあるDLLファイルをロードします。

#DllLoad "%A_MyDocuments%\MyDLL.dll"