Fügt den Inhalt der angegebenen Datei an genau dieser Stelle in das Skript ein.
#Include FileOrDirName
#IncludeAgain FileOrDirName
| FileOrDirName |
Datei: Der Name der einzufügenden Datei. Wenn der Name nicht den vollständigen Pfad enthält, wird die Datei im aktuellen Arbeitsverzeichnis erwartet (mit Ausnahme der ahk2exe, die die Datei im Skriptverzeichnis sucht). Der Name darf keine Referenzen auf Variable (außer %A_ScriptDir%, %A_AppData% und %A_AppDataCommon%), Anführungszeichen oder Platzhalter enthalten. Andere Escape Sequenzen als für das Semikolon (`;) dürfen nicht verwendet werden. Sie werden auch nicht gebraucht, weil Zeichen wie z.B. das Prozentzeichen als normale Zeichen behandelt, d.h. nicht ausgewertet werden. Achtung: SetWorkingDir hat keine Auswirkungen auf #Include, weil die #Include Direktive bereits verarbeitet wird, bevor die eigentliche Ausführung des Skripts gestartet wird. Verzeichnis: In v1.0.35.11+ kann ein Verzeichnisname anstelle eines Dateinamens angegeben werden, um das aktuelle Arbeitsverzeichnis für alle nachfolgenden #Include Direktiven und FileInstall Anweisungen zu bestimmen. Der Verzeichnisname darf keine anderen Variablen als %A_ScriptDir%, %A_AppData% und %A_AppDataCommon% enthalten. Achtung: Wenn man das Arbeitsverzeichnis auf diese Weise ändert, hat das keine Auswirkungen auf das ursprüngliche Arbeitsverzeichnis des Skripts (A_WorkingDir). Um dieses zu verändern, verwendet man SetWorkingDir am Anfang des Skripts. |
Ein Skript verhält sich so, als sei der Inhalt der eingefügten Datei tatsächlich an genau der Stelle der #Include Direktive eingegeben worden (d.h., als ob der Inhalt aus der Datei in das Skript kopiert wurde). Folglich können auf diese Weise nicht einfach 2 verschiedene Skripte zu einem zusammengefügt werden (um dies zu bewerkstelligen siehe: http://www.autohotkey.com/forum/topic18545.html).
#Include stellt sicher, dass Filename nur genau einmal eingefügt wird, auch wenn mehrere #Include Direktiven für diese Datei vorhanden sind. Dagegen erlaubt #IncludeAgain das wiederholte Einfügen derselben Datei, verhält sich aber sonst genau wie #Include.
Dem Filename kann optional ein *i und ein einzelnes Leerzeichen vorangestellt werden. Das Skript ignoriert dann alle Fehler beim Laden der Datei, z.B.: #Include *i SpecialOptions.ahk. Diese Option sollte nur verwendet werden, wenn die Datei für die Funktion des Skripts nicht unbedingt benötigt wird.
Skriptzeilen, die mit ListLines oder dem Menü View->Lines im AHK-Hauptfenster angezeigt werden, haben immer eine Nummerierung, die ihrer Position in der Ursprungsdatei entspricht. D.h., das Einfügen einer Datei verändert die Nummerierung der Skriptzeilen nur um die eine Zeile, die die #Include Direktive enthält. Kompilierte Skripts dagegen mischen zum Zeitpunkt der Übersetzung alle Zeilen in eine neu nummerierte Datei.
#Include wird oft verwendet, um Funktionen nachzuladen, die in einer eigenen Datei abgelegt sind. Anders als Sprungmarken für Subroutinen können Funktionen auch ganz am Anfang des Skripts eingefügt werden, ohne automatisch in der Auto-Execute Sektion ausgeführt zu werden.
Wie andere # Direktiven kann #Include nicht bedingt ausgeführt werden. D.h., das folgende Beispiel funktioniert nicht:
if x = 1
#Include SomeFile.ahk ; Diese Zeile wird unabhängig von x immer ausgeführt. y = 2 ; Und diese Zeile gehört zum darüberstehenden IF, weil # Direktiven dem IF nicht zugeordnet werden.
Dateien können auch automatisch (ohne #Include) hinzugefügt werden indem eine Library Function aufgerufen wird.
Libraries of Functions, Functions, FileInstall
#Include C:\My Documents\Scripts\Utility Subroutines.ahk
#Include %A_ScriptDir% ; Setzt das Arbeitsverzeichnis für alle nachfolgenden #Include Direktiven und FileInstall Anweisungen. #Include C:\Meine Skripte ; Wie oben, aber mit einem explizit angegebenen Verzeichnisnamen.