#DllLoad

Lädt eine DLL- oder EXE-Datei vor Beginn der Skriptausführung.

#DllLoad DateiOderVerzName

Parameter

DateiOderVerzName

Typ: Zeichenkette

Der Pfad einer Datei oder eines Verzeichnisses, wie unten beschrieben. Der Dateiname darf keine doppelten Anführungszeichen (außer einem optionalen Paar doppelter Anführungszeichen, das den Parameter umschließt), Platzhalterzeichen oder Escapesequenzen außer Semikolon (`;) enthalten.

Interne Variablen können verwendet werden, müssen aber in Prozentzeichen gesetzt werden, z.B. #DllLoad "%A_ScriptDir%". Prozentzeichen, die nicht zu einer gültigen Variablenreferenz gehören, werden als direkt geschriebener Text interpretiert. Alle internen Variablen sind gültig, außer A_Args und interne Klassen.

Bekannte Einschränkung: Beim Kompilieren eines Skripts werden Variablen vom Compiler ausgewertet, d.h. sie können von dem abweichen, was das Skript bei der endgültigen Ausführung zurückgeben würde. Folgende Variablen werden unterstützt: 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.

Datei: Der absolute oder relative Pfad der zu ladenden DLL- oder EXE-Datei. Wenn ein relativer Pfad angegeben ist, verwendet die Direktive die Suchstrategie der Systemfunktion LoadLibraryW, um die Datei zu finden. Hinweis: SetWorkingDir hat keinen Einfluss auf #DllLoad, da #DllLoad vor Beginn der Skriptausführung ausgewertet wird.

Verzeichnis: Geben Sie ein Verzeichnis anstelle einer Datei an, um die Suchstrategie für alle nachfolgenden #DllLoad-Direktiven ohne absoluten Pfad zu ändern. Die neue Suchstrategie ist dasselbe wie, als hätte man Verzeichnis an die Systemfunktion SetDllDirectoryW übergeben. Wenn dieser Parameter weggelassen wird, wird die ursprüngliche Suchstrategie wiederhergestellt.

Hinweis: Dieser Parameter ist kein Ausdruck, kann aber in Anführungszeichen gesetzt werden (entweder 'einfach' oder "doppelt").

Bemerkungen

Eine mit dieser Direktive geladene DLL- oder EXE-Datei kann nicht mehr mit der Systemfunktion FreeLibrary entladen werden. Wenn das Skript terminiert wird, werden alle geladenen Dateien automatisch entladen.

Dem Dateipfad kann *i gefolgt von einem Leerzeichen vorangestellt werden, was das Programm veranlasst, jegliche Fehler beim Laden der Datei zu ignorieren. Diese Option sollte nur verwendet werden, wenn das Skript trotz des Fehlers ausführbar ist, z.B. wenn die DLL oder EXE nicht unbedingt erforderlich ist, oder wenn das Skript darauf ausgelegt ist, den Fehler zu erkennen. Zum Beispiel:

#DllLoad "*i MeineDLL"
if !DllCall("GetModuleHandle", "str", "MeineDLL")
    MsgBox "MeineDLL konnte nicht geladen werden!"

Wenn für DateiOderVerzName nur der Name einer DLL-Datei angegeben ist (also ohne Pfad und Dateiendung), wird .dll an den Dateinamen angehängt. Um dies zu verhindern, setzen Sie einen Punkt (.) hinter den Dateinamen.

#DllLoad kann wie alle anderen Direktiven nicht bedingt ausgeführt werden.

DllCall

Beispiele

Lädt eine DLL-Datei aus dem Ordner "Dokumente" des aktuellen Benutzers vor Beginn der Skriptausführung.

#DllLoad "%A_MyDocuments%\MeineDLL.dll"