#Include / #IncludeAgain

Veranlasst das Skript, sich so zu verhalten, als wäre der Inhalt einer bestimmten Datei an genau dieser Stelle vorhanden.

#Include DateiOderVerzName
#Include <BiblName>  ; [AHK_L 57+]
#IncludeAgain DateiOderVerzName

Parameter

DateiOderVerzName

Der Pfad einer Datei oder eines Verzeichnisses, wie unten beschrieben. Dieser Parameter darf keine doppelten Anführungszeichen, Platzhalterzeichen oder Referenzen zu nicht-internen Variablen enthalten. Escapesequenzen außer Semikolon (`;) dürfen nicht verwendet werden und sind auch nicht notwendig, weil Zeichen wie Prozent (%) als direkt geschriebener Text behandelt werden.

Prozentzeichen, die nicht zu einer gültigen Variablenreferenz gehören, werden als direkt geschriebener Text interpretiert. Alle internen Variablen sind gültig, außer ErrorLevel, A_Args und den nummerierten Variablen. In Versionen vor [v1.1.28] wurden nur %A_ScriptDir%, %A_AppData%, %A_AppDataCommon% und in [v1.1.11+] %A_LineFile% unterstützt.

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. Ahk2Exe v1.1.30.00 und niedriger unterstützen nur die vier oben genannten Variablen. [v1.1.30.01+]: Die folgenden Variablen werden ebenfalls unterstützt: A_AhkPath, A_ComputerName, A_ComSpec, A_Desktop, A_DesktopCommon, A_IsCompiled, A_IsUnicode, A_MyDocuments, A_ProgramFiles, A_Programs, A_ProgramsCommon, A_ScriptFullPath, A_ScriptName, A_Space, A_StartMenu, A_StartMenuCommon, A_Startup, A_StartupCommon, A_Tab, A_Temp, A_UserName, A_WinDir.

Datei: Name der zu inkludierenden Datei, die im Start- oder Arbeitsverzeichnis vermutet wird, wenn kein absoluter Pfad angegeben ist (außer bei Ahk2Exe, das die Datei im Verzeichnis des Skripts vermutet). Hinweis: SetWorkingDir hat keinen Einfluss auf #Include, da #Include vor Beginn der Skriptausführung ausgewertet wird.

Verzeichnis: Geben Sie ein Verzeichnis anstelle einer Datei an, um das Arbeitsverzeichnis für alle nachfolgenden Instanzen von #Include und FileInstall zu ändern. Hinweis: Das Ändern des Arbeitsverzeichnisses auf diese Weise hat keinen Einfluss auf das anfängliche Arbeitsverzeichnis des Skripts (A_WorkingDir). Um das zu ändern, verwenden Sie SetWorkingDir ganz oben im Skript.

<BiblName> [AHK_L 57+]

Der Name einer Bibliotheksdatei oder -funktion. Zum Beispiel würden sowohl #Include <Bibl> als auch #Include <Bibl_Funktion> Bibl.ahk aus einem der Funktionsbibliotheksordner inkludieren. Variablenreferenzen sind nicht erlaubt.

Bemerkungen

Ein Skript verhält sich so, als wäre der Inhalt der zu inkludierenden Datei physisch exakt an der Position der #Include-Direktive vorhanden (als wäre der Inhalt der Datei sozusagen vorher kopiert und dann dort eingefügt wurden). Diese Direktive ist daher nicht in der Lage, zwei einzelne Skripte zu einem funktionierenden Skript zusammenzufügen.

#Include stellt sicher, dass die angegebene Datei nur einmal inkludiert wird, falls sie mehrmals im Skript zum Inkludieren angegeben ist. Mit #IncludeAgain kann hingegen eine Datei mehrmals inkludiert werden, andernfalls verhält es sich wie #Include.

Dem Dateipfad kann *i gefolgt von einem Leerzeichen vorangestellt werden, was das Programm veranlasst, jegliche Fehler beim Lesen der Datei zu ignorieren. Zum Beispiel: #Include *i Spezialoptionen.ahk. Diese Option sollte nur verwendet werden, wenn der Inhalt der Datei für die Ausführung des Hauptskripts nicht relevant ist.

Zeilen, die im Hauptfenster via ListLines oder Menüpunkt "View->Lines" angezeigt werden, sind immer gemäß ihrer physischen Reihenfolge innerhalb ihrer eigenen Dateien nummeriert. Mit anderen Worten: Beim Inkludieren einer neuen Datei erhöht sich die Zeilennummerierung des Hauptskripts nur um eine Zeile, nämlich die der #Include-Zeile selbst (außer bei kompilierten Skripten, bei denen das Hauptskript und die zu inkludierenden Dateien zu einem großen Skript zusammengefügt sind).

#Include wird oft verwendet, um Funktionen zu laden, die in einer externen Datei definiert sind. Im Gegensatz zu Subroutinen-Labels können Funktionen ganz oben im Skript inkludiert werden, ohne dass der automatische Ausführungsbereich beeinträchtigt wird.

#Include kann wie alle anderen Direktiven nicht bedingt ausgeführt werden. Das folgende Beispiel würde also nicht wie erwartet funktionieren:

if (x = 1)
    #Include BeliebigeDatei.ahk  ; Diese Zeile wird ohne Beachtung des X-Wertes ausgeführt.

Dateien können automatisch inkludiert werden (also ohne #Include verwenden zu müssen), indem eine Bibliotheksfunktion per Name aufgerufen wird.

[v1.1.11+]: Geben Sie %A_LineFile%\.. an, um das Verzeichnis der aktuellen Datei zu nutzen, selbst wenn sie nicht die Hauptskriptdatei ist. Zum Beispiel #Include %A_LineFile%\..\script.ahk. [v1.1.28+]: Mit %A_AhkPath%\.. kann auf das Verzeichnis verwiesen werden, das AutoHotkey.exe enthält.

Funktionsbibliotheken, Funktionen, FileInstall

Beispiele

Inkludiert den Inhalt der angegebenen Datei in das aktuelle Skript.

#Include C:\Meine Dokumente\Skripte\Hilfsprogramm-Subroutinen.ahk

Ändert das Arbeitsverzeichnis für nachfolgende #Includes und FileInstalls.

#Include %A_ScriptDir%

Dasselbe wie oben, aber für ein explizit benanntes Verzeichnis.

#Include C:\Meine Skripte