#Include / #IncludeAgain

Veranlasst das Skript sich so zu verhalten, als würde sich der Inhalt der angegebenen Datei direkt an dieser Position befinden.

#Include DateiOderVerzName
#Include <LibName>
#IncludeAgain DateiOderVerzName

Parameter

DateiOderVerzName

Der Pfad einer Datei oder eines Verzeichnisses, wie unten beschrieben. Der Dateiname darf keine Anführungszeichen, Platzhalter oder Variablenverweise enthalten, außer %A_ScriptDir%, %A_AppData%, %A_AppDataCommon% und (seit v1.1.11) %A_LineFile%. Escapesequenzen außer Semikolon (`;) dürfen weder verwendet werden, noch sind sie notwendig, weil solche Zeichen (z. B. Prozentzeichen) als literal angesehen werden.

Datei: Name der Datei, die eingefügt werden soll, und sich voraussichtlich im Start- oder Arbeitsverzeichnis befinden wird, solange kein absoluter Pfad angegeben ist (außer bei ahk2exe, das die Datei im eigenen Verzeichnis des Skripts vermutet). Hinweis: SetWorkingDir hat keine Auswirkung auf #Include, weil die Direktive verarbeitet wird, bevor das Skript ausgeführt wird.

Verzeichnis: Es ist möglich, ein Verzeichnis anstelle einer Datei anzugeben, um das Arbeitsverzeichnis für alle nachfolgenden Vorkommnisse von #Include und FileInstall zu ändern. Hinweis: Diese Änderung hat keinen Einfluss auf das anfänglich gesetzte Arbeitsverzeichnis des Skripts (A_WorkingDir). Um das zu ändern, verwende SetWorkingDir im obersten Bereich des Skripts.

LibName

[AHK_L 57+]: Library-Datei oder Funktionsname. Zum Beispiel würden sowohl #Include <Lib> als auch #Include <Lib_Funktion> Lib.ahk aus einem der Funktions-Library-Ordner einfügen.

Bemerkungen

Ein Skript verhält sich so, als würde sich der Inhalt der einzufügenden Datei exakt auf der Position von #Include befinden (als wäre der Inhalt der Datei kopiert und eingefügt wurden). Daraus folgt, dass zwei einzelne Skripte in der Regel nicht zu einem funktionierenden Skript zusammengefügt werden können (um das zu erreichen, siehe www.autohotkey.com/forum/topic18545.html).

#Include stellt sicher, dass Dateiname nur einmal eingefügt wird, selbst wenn mehrere Einfügungen für diese Datei vorkommen. #IncludeAgain erlaubt hingegen mehrere Einfügungen von der gleichen Datei. In jeder anderen Hinsicht ist #IncludeAgain das gleiche wie #Include.

Bei Bedarf kann vor dem Dateiname-Parameter ein *i angefügt werden, das das Programm dazu veranlassen würde, die einzufügende Datei zu ignorieren, wenn sie nicht gelesen werden konnte. Zum Beispiel: #Include *i Spezialoptionen.ahk. Diese Option sollte man nur verwenden, wenn der Inhalt der einzufügenden Datei nicht zum Ausführen des Hauptskripts benötigt wird.

Die Nummerierung der Zeilen, die im Hauptfenster per ListLines oder Menü "View-Lines" angezeigt werden, richtet sich nach ihrer physikalischen Reihenfolge innerhalb der einzufügenden Dateien. Das heißt, dass das Einfügen einer neuen Datei die Zeilennummerierung des Hauptskripts um 1 erhöht, nämlich von der #Include-Zeile selbst (außer bei kompilierten Skripten, die ihre einzufügenden Dateien zu einem großen Skript zusammenfügen, während sie kompiliert werden).

#Include wird oft verwendet, um Funktionen aus einer externen Datei zu laden. Im Gegensatz zu Subroutinen können Funktionen ganz am Anfang des Skripts eingefügt werden, ohne dabei den automatischen Ausführungsbereich zu beeinflussen.

#Include kann, wie bei anderen Direktiven auch, nicht bedingt ausgeführt werden. Das heißt, dass das folgende Beispiel nicht funktionieren würde:

if x = 1
    #Include BeliebigeDatei.ahk  ; Diese Zeile wird ohne Beachtung des X-Wertes ausgeführt.
    y = 2  ; Und diese Zeile würde sich auf das obere IF beziehen, weil sich Direktiven nicht auf IFs beziehen können.

Dateien können automatisch eingefügt werden (ohne #Include verwenden zu müssen), wenn eine Library-Funktion per Name aufgerufen wird.

[v1.1.11+]: Mit %A_LineFile%\.. kann man auf das Verzeichnis mit der aktuellen Datei verweisen, selbst wenn es nicht die Hauptskriptdatei ist. Zum Beispiel #Include %A_LineFile%\..\script.ahk.

Siehe auch

Libraries mit Funktionen, Funktionen, FileInstall

Beispiel

#Include C:\Meine Dokumente\Skripte\Hilfsprogramm-Subroutinen.ahk
#Include %A_ScriptDir%  ; Ändert das Arbeitsverzeichnis für jedes nachfolgende #Include und FileInstall.
#Include C:\Meine Skripte  ; Wie oben, aber für ein explizit benanntes Verzeichnis.