Allgemeine Erläuterungen und Details zur Funktionsweise finden Sie unter Variablen.
Werte in Variablen speichern: Um eine Zeichenkette oder Zahl in eine Variable zu speichern, gibt es zwei Methoden: Altmodisch und Ausdruck. Die altmodische Methode verwendet den Gleichheitszeichenoperator (=), um anführungszeichenlose direkt geschriebene Zeichenketten und in Prozentzeichen gesetzte Variablen zuzuweisen. Zum Beispiel:
MeineZahl = 123 MeineZkette = Das ist eine direkt geschriebene Zeichenkette. KopieVonVar = %Var% ; Bei dem Operator "=" sind Prozentzeichen notwendig, um den Inhalt einer Variable abzurufen.
Die Ausdrucksmethode hingegen verwendet den Doppelpunkt-Gleich-Operator (:=), um Zahlen, in Anführungszeichen gesetzte Zeichenketten und andere Arten von Ausdrücken zuzuweisen. Die folgenden Beispiele sind funktional identisch mit den vorherigen Beispielen:
MeineZahl := 123 MeineZkette := "Das ist eine direkt geschriebene Zeichenkette." KopieVonVar := Var ; Bei dem Operator ":=" werden Prozentzeichen weggelassen.
Die letztere Methode wird von vielen bevorzugt, weil sie eine Ausdruckssyntax unterstützt, die besser zu verstehen ist und nahezu identisch zur Syntax vieler anderer Sprachen ist.
Mit diesen Methoden kann natürlich auch der Inhalt einer Variable gelöscht werden (um sie sozusagen leer zu machen):
MeineVar = MeineVar := ""
Die zwei aufeinanderfolgenden Anführungszeichen oben sollten nur mit dem Operator := verwendet werden. Verwendet man stattdessen den Operator =, würde dies dazu führen, dass zwei direkt geschriebene Anführungszeichen in die Variable gespeichert werden.
Inhalte von Variablen abrufen: Es gibt, analog zu den beiden Speichermethoden, auch zwei Methoden, wie man Variablenwerte abrufen kann: Altmodisch und Ausdruck. Bei der altmodischen Methode müssen die Namen der Variablen mit Prozentzeichen umschlossen werden, um ihre Inhalte abzurufen. Zum Beispiel:
MsgBox Der Wert in der Variable namens Var ist %Var%. KopieVonVar = %Var%
Bei der Ausdrucksmethode hingegen werden die Namen der Variablen nicht mit Prozentzeichen umschlossen und direkt geschriebene Zeichenketten in Anführungszeichen gesetzt. Demnach wären die folgenden Beispiele funktional identisch mit den vorherigen Beispielen:
MsgBox % "Der Wert in der Variable namens Var ist " . Var . "." ; Mit einem Punkt können zwei Zeichenketten verkettet (verbunden) werden. KopieVonVar := Var
In der MsgBox-Zeile oben wird ein Prozent- und Leerzeichen verwendet, um den Parameter in den Ausdrucksmodus zu versetzen. Diese Vorgehensweise ist hierbei notwendig, weil nahezu alle Befehlsparameter standardmäßig den altmodischen Modus verwenden, sofern nicht anders dokumentiert.
Variablen vergleichen: Bitte lesen Sie sich den folgenden Abschnitt durch, um zu erfahren, welche Vergleiche es gibt und wann runde Klammern notwendig sind.
Eine strukturierte Übersicht und weitere Erläuterungen finden Sie unter Ausdrücke (Expressions).
Ausdrücke sind nützlich, um eine Reihe von Variablen, direkt geschriebenen Zeichenketten und/oder direkt geschriebenen Zahlen zu verarbeiten.
Variablennamen (außer Pseudo-Arrays und andere Doppelreferenzierungen) dürfen innerhalb eines Ausdrucks nicht mit Prozentzeichen umschlossen werden. Folglich müssen direkt geschriebene Zeichenketten in doppelte Anführungszeichen gesetzt werden, damit sie nicht als Variablen interpretiert werden. Zum Beispiel:
if (AktuelleEinstellung > 100 or GefundeneFarbe != "Blau") MsgBox Die Einstellung ist zu hoch oder die Farbe ist falsch.
Im obigen Beispiel ist "Blau" in Anführungszeichen gesetzt, weil es sich um eine direkt geschriebene Zeichenkette handelt. Geben Sie zwei aufeinanderfolgende Anführungszeichen an, um ein tatsächliches Anführungszeichen in eine direkt geschriebene Zeichenkette einzufügen. Zum Beispiel: "Sie sagte: ""Ein Apfel täglich."""
.
Hinweis: Es gibt verschiedene Typen von If-Anweisungen, die wie Ausdrücke aussehen, aber in Wirklichkeit keine sind.
Leere Zeichenketten: Um eine leere Zeichenkette in einem Ausdruck anzugeben, verwenden Sie zwei aufeinanderfolgende Anführungszeichen. Zum Beispiel wäre die Anweisung if (MeineVar != "")
wahr, wenn MeineVar nicht leer ist. In einer traditionellen if-Anweisung werden zwei aufeinanderfolgende Anführungszeichen jedoch als direkt geschriebener Text behandelt. Zum Beispiel wäre die Anweisung if MeineVar = ""
nur wahr, wenn MeineVar tatsächlich zwei Anführungszeichen enthält. Um also zu prüfen, ob eine Variable in einer traditionellen if-Anweisung leer ist, können Sie den Operator = oder != ohne Vergleichswert verwenden; zum Beispiel: if Var =
.
Beachten Sie, dass ungültige Ausdrücke wie (x +* 3)
immer eine leere Zeichenkette zurückgeben.
Ergebnis eines Ausdrucks speichern: Um das Ergebnis eines Ausdrucks einer Variable zuzuweisen, müssen Sie den Operator := verwenden. Zum Beispiel:
NettoPreis := Preis * (1 - Rabatt/100)
Boolesche Werte: Das Ergebnis eines Ausdrucks (z. B. einer IF-Anweisung) ist falsch (False), wenn es leer oder 0 ist, oder wahr (True), wenn ein anderes Ergebnis vorliegt. Zum Beispiel wäre die Anweisung if ElementeAnzahl
nur dann falsch, wenn ElementeAnzahl leer oder 0 ist. Der Ausdruck if not ElementeAnzahl
würde das gegenteilige Ergebnis liefern.
Operatoren wie NOT/AND/OR/>/=/< erzeugen automatisch einen wahren oder falschen Wert: 1 für True und 0 für False. Im folgenden Beispiel bekommt die Done-Variable eine 1 zugewiesen, wenn eine der beiden Bedingungen wahr ist:
Done := A_Index > 5 or FoundIt
Wie oben angedeutet, kann eine Variable zum Speichern eines falschen Wertes verwendet werden, indem man sie leer macht oder ihr eine 0 zuweist. Verwenden Sie dann die Kurzanweisung if Done
, um zu überprüfen, ob die Done-Variable wahr oder falsch ist.
Die Wörter True und False sind interne Variablen, die 1 und 0 enthalten. Sie können verwendet werden, um ein Skript besser lesbar zu machen, z. B.:
GroßKleinSensitiv := false SucheFortsetzen := true
Integer (ganze Zahlen) und Floating-Point-Zahlen (Gleitkommazahlen): Zahlen, die einen Dezimalpunkt enthalten, werden innerhalb eines Ausdrucks als Floating-Point-Zahlen gewertet; alle anderen Zahlen werden als Integer behandelt. Bei den meisten Operatoren -- wie Addition und Multiplikation -- gilt: Wenn einer der Eingabewerte eine Floating-Point-Zahl ist, wird das Ergebnis auch eine Floating-Point-Zahl sein.
Innerhalb und außerhalb von Ausdrücken können Integer sowohl im hexadezimalen als auch dezimalen Format geschrieben werden. Hexadezimalzahlen beginnen mit dem 0x-Präfix. Zum Beispiel wäre Sleep 0xFF
das gleiche wie Sleep 255
. [v1.0.46.11+]: Floating-Point-Zahlen in wissenschaftlicher Schreibweise werden erkannt; aber nur, wenn sie einen Dezimalpunkt enthalten (z. B. 1.0e4
und -2.1E-4
).
Einen Ausdruck erzwingen: Standardmäßig unterstützen Befehlsparameter (außer AusgabeVar-Parameter) keine Ausdrücke, aber man kann mithilfe eines Prozentzeichens und Leer- oder Tabulatorzeichens einen Ausdruck in einem Parameter erzwingen. In [v1.1.21+] kann dieses Präfix in den EingabeVar-Parametern von fast allen Befehlen verwendet werden; benutzen Sie für die traditionellen IF-Befehlen stattdessen If (Ausdruck). Diese Technik wird häufig genutzt, um auf Arrays zuzugreifen. Zum Beispiel:
FileAppend, % MeinArray[i], Meine Datei.txt FileAppend, % MeinPseudoArray%i%, Meine Datei.txt MsgBox % "Die MeineVar-Variable enthält " . MeineVar . "." Loop % Iterationen + 1 WinSet, Transparent, % X + 100 Control, Choose, % AktuelleAuswahl - 1
Allgemeine Informationen über Operatoren finden Sie unter Operatoren.
Sofern nicht anders unten angegeben, werden leere Werte (leere Zeichenketten) oder nicht-numerische Werte innerhalb einer mathematischen Operation nicht als 0 interpretiert. Stattdessen werden sie als Fehler behandelt, was dazu führt, dass dieser Teil des Ausdrucks als leere Zeichenkette gewertet wird. Wenn die Variable X zum Beispiel leer ist, wird der Ausdruck X+1 einen leeren Wert statt 1 zurückgeben.
Aus historischen Gründen werden in Anführungszeichen gesetzte numerische Zeichenketten wie "123"
immer als nicht-numerisch angesehen, wenn sie direkt in einem Ausdruck verwendet werden (aber nicht, wenn sie in eine Variable gespeichert oder von einer Funktion zurückgegeben werden). Dieser nicht-numerische Attribut kann mit einer Verkettung erzwungen werden, um Ausdrücke wie "0x" n
einen nicht-numerischen Wert erzeugen zu lassen (auch wenn n gültige hexadezimale Ziffern enthalten sollte). Dieses Problem kann man umgehen, indem man den Wert in eine Variable speichert oder ihn via Funktion, wie z. B. Round(), übergibt. Generell sollte man vermeiden, direkt geschriebene Zahlen in Anführungszeichen zu setzen, weil dieses Verhalten eventuell in einer zukünftigen Version geändert wird.
Operator | Beschreibung |
---|---|
%Var% | Umschließt man innerhalb eines Ausdrucks eine Variable mit Prozentzeichen (z. B. %Var%), wird alles, was in dieser Variable enthalten ist, als Name oder Teil eines Namens einer anderen Variable angesehen (wenn es diese Variable nicht gibt, wird %Var% in eine leere Zeichenkette aufgelöst). Meistens wird das verwendet, um auf Elemente eines Pseudo-Arrays zu verweisen, wie z. B.: Var := MeinArray%A_Index% + 100 Aus Gründen der Abwärtskompatibilität ignorieren Befehlsparameter, die als "kann ein Ausdruck sein" dokumentiert sind, die Prozentzeichen bei einem alleinstehenden Namen, der von Prozentzeichen umschlossen ist (z. B. %Var%, aber nicht Array%i%). Um das zu umgehen, umschließen Sie die Referenz mit runden Klammern; z. B. [AHK_L 52+]: Zusätzlich zu den normalen Variablen kann %Var% in eine Umgebungsvariable, die Zwischenablage oder eine reservierte/nur lesbare Variable aufgelöst werden. Vor Revision 52 wurde %Var% in solchen Fällen in eine leere Zeichenkette aufgelöst. |
x.y | [AHK_L 31+]: Objektzugriff. Ruft einen Wert ab, setzt einen Wert oder ruft eine Methode des Objekts x auf. Hierbei ist y ein direkt geschriebener Wert. Siehe Objektsyntax. |
new | [v1.1.00+]: Erstellt ein neues von einem anderen Objekt abgeleitetes Objekt. Zum Beispiel wäre x := new y generell das gleiche wie x := {base: y} . Nach dem Wort new sollte eine Variable oder ein einfacher Klassenname in Form von GlobaleKlasse.VerschachtelteKlasse erfolgen, und je nach Bedarf Parameter wie in x := new y(z) (hierbei ist y kein Funktionsname, sondern eine Variable). Weitere Informationen finden Sie unter Benutzerdefinierte Objekte. |
++ -- |
Vorherige und nachherige Inkrementierung/Dekrementierung. Erhöht oder verringert eine Zahlenvariable um 1 (in den Versionen vor 1.0.46 müssen sie allein auf einer Zeile stehen; es dürfen keine anderen Operatoren vorhanden sein). Der Operator kann entweder vor oder nach dem Namen einer Variable erfolgen. Erfolgt der Operator vor dem Namen, wird die Operation sofort durchgeführt und ihr Ergebnis für die nächste Operation verwendet. Zum Beispiel würde Var := ++X die X-Variable sofort um 1 erhöhen und ihr Wert in Var speichern. Erfolgt der Operator nach dem Namen einer Variable, wird die Operation erst durchgeführt, wenn die Variable für die nächste Operation verwendet wurde. Zum Beispiel würde Var := X++ die X-Variable erst um 1 erhöhen, wenn der aktuelle Wert von X in Var gespeichert wurde. Aus Gründen der Abwärtskompatibilität behandeln diese Operatoren leere Variablen als 0, sofern sie allein auf einer Zeile stehen; zum Beispiel würde sowohl y := 1, ++x als auch MsgBox % ++x ein leeres Ergebnis erzeugen, wenn x leer ist. |
** |
Potenz. Sowohl die Basis als auch der Exponent können einen Dezimalpunkt enthalten. Ist der Exponent negativ, wird das Ergebnis in eine Floating-Point-Zahl umgewandelt, auch dann, wenn Basis und Exponent Integer sind. Da dieser Operator eine höhere Priorität hat als ein unäres Minuszeichen, wird Hinweis: Eine negative Basis in Verbindung mit einem gebrochenen Exponenten wie Hinweis: In AutoHotkey v1 ist ** im Gegensatz zu seinem mathematischen Gegenstück linksassoziativ. |
- ! ~ & * |
Unäres Minuszeichen (-): Obwohl dieser Operator und der Subtraktionsoperator dasselbe Symbol verwenden, wird das unäre Minuszeichen nur auf ein einzelnes Element oder einen Teilausdruck angewendet; zum Beispiel: Logisches NICHT (!): Wenn dieser Operator bei einem Operanden angewendet wird, der leer oder 0 ist, ist das Ergebnis eine 1 (true). Ansonsten ist das Ergebnis eine 0 (false). Zum Beispiel: Bitweises NICHT (~): Dieser Operator invertiert jedes Bit seines Operanden. Handelt es sich bei den Operanden um eine Floating-Point-Zahl, wird er vor der Berechnung auf Integer-Größe gekürzt. Ist der Operand eine Zahl zwischen 0 und 4294967295 (0xffffffff), wird er als vorzeichenloser 32-Bit-Wert behandelt. Ansonsten wird er als vorzeichenfähiger 64-Bit-Wert behandelt. Zum Beispiel wäre Adresse (&): Dereferenzierung (*): |
* / // |
Multiplizieren (*): Das Ergebnis ist ein Integer, wenn beide Eingabewerte Integer sind; ansonsten ist es eine Floating-Point-Zahl. Echtes Dividieren (/): Im Gegensatz zu EnvDiv liefert die echte Division immer eine Floating-Point-Zahl, auch dann, wenn beide Eingabewerte Integer sind. Zum Beispiel wäre Floor-Dividieren (//): Der Doppelschrägstrich-Operator verwendet eine sehr leistungsfähige Integer-Division, wenn beide Eingabewerte Integer sind. Zum Beispiel wäre Die Operatoren *= und /= sind Kurzschreibweisen zum Multiplizieren oder Dividieren eines Variablenwertes mit einem anderen Wert. Eine Division durch 0 liefert ein leeres Ergebnis (leere Zeichenkette). |
+ - |
Addieren (+) und Subtrahieren (-). Die Operatoren += und -= sind Kurzschreibweisen zum Erhöhen oder Verringern eines Variablenwertes um einen beliebigen Wert. |
<< >> >>> |
Bitweise Verschiebung nach links (<<). Anwendungsbeispiel: Arithmetische bitweise Verschiebung nach rechts (>>). Anwendungsbeispiel: Logische bitweise Verschiebung nach rechts (>>>) [v1.1.35+]. Anwendungsbeispiel: Bei allen drei Operatoren werden Floating-Point-Eingabewerte vor der Berechnung auf einen Integer gekürzt. Die Ergebnisse sind undefiniert, wenn Wert2 kleiner als 0 oder größer als 63 ist. |
& ^ | |
Bitweises UND (&), bitweises exklusives ODER (^) und bitweises ODER (|). Von diesen drei Operatoren hat & die höchste Priorität und | die niedrigste Priorität. Jeder Floating-Point-Eingabewert wird vor der Berechnung auf einen Integer gekürzt. |
. | Verkettung. Mit dem Punkt-Operator können zwei Elemente kombiniert werden, um eine einzelne Zeichenkette zu erhalten (auf beiden Seiten des Punktes muss mindestens ein Leerzeichen vorhanden sein). Dasselbe Ergebnis kann auch ohne diesen Punkt erzielt werden (außer bei Zweideutigkeiten wie Teilausdrücke können auch verkettet werden. Zum Beispiel: Eine Zeile, die mit einem Punkt (oder einem anderen Operator) beginnt, wird automatisch mit der darüberliegenden Zeile verbunden. |
~= | [AHK_L 31+]: Kurzschreibweise für RegExMatch(). "abc123" ~= "\d" beispielsweise würde ErrorLevel auf 0 setzen und eine 4 liefern (die Position des ersten numerischen Zeichens). Früher vor [v1.1.03] war es so, dass dieser Operator und der Gleichheitsoperator (=) die gleiche Priorität hatten und unvollständig dokumentiert war. |
> < >= <= |
Größer (>), kleiner (<), größer gleich (>=) und kleiner gleich (<=). Wenn beide Eingabewerte Zahlen oder numerische Zeichenketten sind, werden sie numerisch verglichen; ansonsten werden sie alphabetisch verglichen. Der Vergleich ist nur Groß-/Kleinschreibung-sensitiv, wenn StringCaseSense eingeschaltet ist. Siehe auch: Sort Hinweis: In AutoHotkey v1 wird eine in Anführungszeichen gesetzte Zeichenkette (oder das Ergebnis vom Verketten mit einer in Anführungszeichen gesetzte Zeichenkette) nie als numerisch gewertet, wenn sie direkt in einem Ausdruck verwendet wird. |
= == <> != !== |
Gleich (=), Groß-/Kleinschreibung-sensitiv gleich (==) und ungleich (<> oder !=). Wenn beide Eingabewerte Zahlen oder numerische Zeichenketten sind, werden sie numerisch verglichen; ansonsten werden sie alphabetisch verglichen. Die Operatoren != und <> sind funktional identisch. Die Operatoren == und = verhalten sich gleich, wenn beide Eingabewerte numerisch sind, es sei denn, einer der Eingabewerte ist nicht numerisch, dann ist == immer Groß-/Kleinschreibung-sensitiv und = immer nicht-Groß-/Kleinschreibung-sensitiv (die Methode der Nichtsensitivität ist abhängig von StringCaseSense). Die Operatoren <> und != berücksichtigen hingegen StringCaseSense. Groß-/Kleinschreibung-sensitiv ungleich (!==) [v1.1.35+]. Verhält sich identisch zu ==, außer dass das Ergebnis invertiert wird. Hinweis: In AutoHotkey v1 wird eine in Anführungszeichen gesetzte Zeichenkette (oder das Ergebnis vom Verketten mit einer in Anführungszeichen gesetzte Zeichenkette) nie als numerisch gewertet, wenn sie direkt in einem Ausdruck verwendet wird. Veraltet: Der Operator <> ist nicht für neue Skripte empfohlen. Verwenden Sie stattdessen den Operator !=. |
NOT | Logisches NICHT. Abgesehen von seiner geringeren Priorität ist dieser Operator funktional identisch mit dem !-Operator. not (x = 3 or y = 3) wäre zum Beispiel das gleiche wie !(x = 3 or y = 3) . |
AND && |
Beide Operatoren sind ein logisches UND. Zum Beispiel: x > 3 and x < 10 . Zur Verbesserung der Leistung wird die Kurzschlussauswertung angewendet. Eine Zeile, die mit AND/OR/&&/|| (oder einem anderen Operator) beginnt, wird automatisch mit der darüberliegenden Zeile verbunden. |
OR || |
Beide Operatoren sind ein logisches ODER. Zum Beispiel: x <= 3 or x >= 10 . Zur Verbesserung der Leistung wird die Kurzschlussauswertung angewendet. |
?: | Ternärer Operator [v1.0.46+]. Dieser Operator ist eine Kurzschreibweise zum Durchführen einer if-else-Anweisung. Der Operator wertet die Bedingung auf der linken Seite aus, um festzustellen, welche der beiden Verzweigungen als Endergebnis dienen soll. Var := x>y ? 2 : 3 beispielsweise würde eine 2 in Var speichern, falls x größer als y ist; ansonsten würde es eine 3 speichern. Zur Verbesserung der Leistung wird nur die gewinnende Verzweigung ausgewertet (siehe Kurzschlussauswertung). |
:= += -= *= /= //= .= |= &= ^= >>= <<= >>>= |
Zuweisung. Führt eine Operation auf den Inhalt einer Variable aus und speichert das Ergebnis wieder in die gleiche Variable (früher vor v1.0.46 konnten sie nur als Operator ganz links auf einer Zeile verwendet werden, außerdem wurden nur die ersten fünf Operatoren unterstützt). Der einfachste Zuweisungsoperator ist der Doppelpunkt-Gleich-Operator (:=), der das Ergebnis eines Ausdrucks in eine Variable speichert. Eine Beschreibung dessen, was die anderen Operatoren tun, finden Sie in den entsprechenden Einträgen dieser Tabelle. Im Gegensatz zu den meisten anderen Operatoren werden Zuweisungen von rechts nach links ausgewertet. Eine Zeile wie Verwendet man eine Zuweisung im Eingabewert eines anderen Operators, wird die Variable selbst als Eingabewert genommen. Der Ausdruck Die Priorität der Zuweisungsoperatoren erhöht sich automatisch, wenn dadurch ein Syntaxfehler verhindert oder ein besseres Verhalten bereitgestellt werden kann. Zum Beispiel: >>>= benötigt [v1.1.35+]. Bekannte Einschränkungen durch Abwärtskompatibilität (die eventuell in einer zukünftigen Version behoben werden): 1) Wenn /= der Operator ganz links in einem Ausdruck ist und nicht zu einer Mehrfachanweisung gehört, führt dieser Operator eine Floor-Division durch, es sei denn, einer der Eingabewerte ist eine Floating-Point-Zahl (in allen anderen Fällen führt /= eine echte Division durch); 2) Datum/Zeit-Berechnung mit += und -= ist nur möglich, wenn dieser Operator der Operator ganz links auf der Zeile ist; 3) Die Operatoren +=, -= und *= behandeln leere Variablen als 0, aber nur, wenn sie einzeln auf einer Zeile stehen; |
, | Komma (Mehrfachanweisung) [v1.0.46+]. Kommas können genutzt werden, um mehrere Teilausdrücke auf einer Zeile zu schreiben. Diese Vorgehensweise wird häufig angewendet, um mehrere Zuweisungen oder Funktionsaufrufe zu gruppieren. Zum Beispiel: Hinweis: Eine Zeile, die mit einem Komma (oder einem anderen Operator) beginnt, wird automatisch mit der darüberliegenden Zeile verbunden. Siehe auch: Leistung in Bezug auf Kommas. [v1.0.46.01+]: Wenn direkt nach einem Komma eine Variable und ein Gleichheitszeichen erfolgt, wird das Gleichheitszeichen automatisch als Zuweisung (:=) behandelt. Alle Teilausdrücke in der folgenden Mehrfachanweisung sind beispielsweise Zuweisungen: |
Die folgenden Arten von Teilausdrücken überschreiben die Priorität bzw. die Reihenfolge der Auswertung:
Ausdruck | Beschreibung |
---|---|
(Ausdruck) |
Ein beliebiger in Klammern gesetzter Teilausdruck. Bei einer Mehrfachanweisung wird das Ergebnis der ersten Anweisung zurückgegeben. |
mod() |
Funktionsaufruf. Direkt nach dem Funktionsnamen muss eine runde Startklammer erfolgen; das heißt, dass keine Leer- oder Tabulatorzeichen zwischen dem Namen und der Klammer erlaubt sind. Einzelheiten finden Sie unter Funktionen. |
%func%() |
Siehe Funktionen dynamisch aufrufen. |
func.() | Veraltet: Diese Syntax wird nicht empfohlen. Benutzen Sie stattdessen [AHK_L 48+]: Versucht, eine namenlose Methode des Objekts func aufzurufen. Gemäß der Konvention ist das die "Standardmethode" des Objekts. Wenn func kein Objekt enthält, wird stattdessen das Standardbasisobjekt aufgerufen. [v1.0.95+]: Enthält func einen Funktionsnamen, wird die benannte Funktion aufgerufen. |
Fn(Params*) | [AHK_L 60+]: Variadischer Funktionsaufruf. Params ist ein Array (Objekt), das Parameterwerte enthält. |
x[y] [a, b, c] |
[AHK_L 31+]: Zugriff auf Objektelemente. Ruft einen Wert ab, setzt einen Wert oder ruft eine Methode des Objekts x auf. Hierbei ist y eine Parameterliste oder ein Ausdruck, der einen Methodennamen zurückgibt. [v1.0.97+]: Direkte Array-Schreibweise. Wenn die eckige Startklammer keinen Wert (oder Teilausdruck, der einen Wert zurückgibt) davor hat, wird die Klammer als Beginn eines direkt geschriebenen Arrays interpretiert. Weitere Informationen finden Sie unter Array-Syntax und Objektsyntax. |
{a: b, c: d} | [v1.0.97+]: Direkte Objekt-Schreibweise. Erstellt ein Objekt oder assoziatives Array. |
Leistung: [v1.0.48+]: Ausdrücke, die mit einem Komma getrennt werden, sind leistungsfähiger als einzeln geschriebene Ausdrücke, besonders wenn es darum geht, eine Variable in eine andere Variable zu speichern (z. B. x := y, a := b
). Je mehr Ausdrücke zu einem einzigen Ausdruck zusammengefasst werden, desto höher ist die Leistung; zum Beispiel könnte man ein Geschwindigkeitszuwachs von 35 % erreichen, wenn man fünf oder zehn einfache Ausdrücke zu einem Ausdruck kombiniert.
Die folgenden Variablen sind fest in das Programm integriert und normal abrufbar.
Allgemeine Informationen finden Sie unter Interne Variablen.
Variable | Beschreibung |
---|---|
A_Space | Diese Variable enthält ein einzelnes Leerzeichen. Siehe AutoTrim für weitere Details. |
A_Tab | Diese Variable enthält ein einzelnes Tabulatorzeichen. Siehe AutoTrim für weitere Details. |
Variable | Beschreibung |
---|---|
1, 2, 3, etc. | Diese Variablen werden automatisch erstellt, wenn ein Skript mit Befehlszeilenparametern gestartet wird. Sie können wie normale Variablennamen geändert oder abgerufen werden (zum Beispiel: %1%), aber nicht direkt in einem Ausdruck verwiesen werden. Die Variable %0% enthält die Anzahl der Parameter, die übergeben worden sind (0 wenn keine). Einzelheiten finden Sie unter Befehlszeilenparameter. |
A_Args [v1.1.27+] |
Enthält ein Array mit Befehlszeilenparametern. Einzelheiten finden Sie unter Befehlszeilenparameter an ein Skript übergeben. |
A_WorkingDir | Das aktuelle Arbeitsverzeichnis, von wo aus das Skript standardmäßig auf Dateien zugreift. Der letzte umgekehrte Schrägstrich ist nicht enthalten, es sei denn, es handelt sich um das Stammverzeichnis. Zwei Beispiele: C:\ und C:\Meine Dokumente. Mit SetWorkingDir kann das Arbeitsverzeichnis geändert werden. |
A_InitialWorkingDir [v1.1.35+] |
Das anfängliche Arbeitsverzeichnis des Skripts, das abhängig davon ist, wie das Skript gestartet wurde. Wurde es beispielsweise über eine Verknüpfung gestartet (z. B. im Startmenü), richtet sich dessen anfängliche Arbeitsverzeichnis nach dem Feld "Ausführen in", das im Eigenschaftsfenster der Verknüpfung zu finden ist. |
A_ScriptDir | Der vollständige Pfadname des Verzeichnisses, wo sich das aktuelle Skript befindet. Der letzte umgekehrte Schrägstrich wird weggelassen (auch bei Stammverzeichnissen). |
A_ScriptName |
Der Dateiname des aktuellen Skripts, ohne Pfad, z. B. MeinSkript.ahk Wenn das Skript kompiliert oder eingebettet ist, dann ist das hier der Name der aktuellen ausführbaren Datei. |
A_ScriptFullPath |
Der vollständige Pfadname des aktuellen Skripts, z. B. C:\Skripte\MeinSkript.ahk Wenn das Skript kompiliert oder eingebettet ist, dann ist das hier der vollständige Pfadname der aktuellen ausführbaren Datei. |
A_ScriptHwnd [v1.1.01+] |
Die HWND-Nummer (eindeutige ID) des versteckten Skript-Hauptfensters. |
A_LineNumber | Die Nummer der aktuell ausgeführten Zeile innerhalb des Skripts (oder innerhalb einer #Include-Datei, sofern angegeben). Diese Zeilennummer stimmt mit der angezeigten Zeilennummer in ListLines überein; diese Variable ist zum Beispiel nützlich, um einen Fehler zu melden: Da beim Kompilieren eines Skripts alle #Include-Dateien zusammengefügt werden, sind die Zeilen eventuell anders nummeriert als im unkompilierten Modus. |
A_LineFile |
Der vollständige Pfadname der Datei, zu der A_LineNumber gehört. Wenn das Skript aus einer externen Datei geladen wurde, ist das hier dasselbe wie A_ScriptFullPath, es sei denn, die Zeile gehört zu einer der #Include-Dateien des Skripts. Wenn das Skript basierend auf einer BIN-Datei kompiliert wurde, ist das hier der vollständige Pfadname der aktuellen ausführbaren Datei, analog zu A_ScriptFullPath. [v1.1.34+]: Wenn das Skript eingebettet ist, enthält A_LineFile ein Sternchen (*), gefolgt von dem Ressourcennamen; z. B. *#1 |
A_ThisFunc [v1.0.46.16+] |
Der Name der benutzerdefinierten Funktion, die gerade ausgeführt wird (ansonsten leer); zum Beispiel: MeineFunktion. Siehe auch: IsFunc() |
A_ThisLabel [v1.0.46.16+] |
Der Name des Labels (Subroutine), das gerade ausgeführt wird (ansonsten leer); zum Beispiel: MeinLabel. Diese Variable wird jedes Mal aktualisiert, wenn das Skript Gosub/Return oder Goto ausführt. Sie wird auch aktualisiert, wenn ein Label automatisch durch Timer, GUI-Threads, Menüpunkte, Hotkeys, Hotstrings, OnClipboardChange-Labels und OnExit-Labels aufgerufen wird. A_ThisLabel wird jedoch nicht aktualisiert, wenn die Skriptausführung in eines der oben genannten Label "hineinfällt"; in diesem Fall behält A_ThisLabel ihren vorherigen Wert. Siehe auch: A_ThisHotkey und IsLabel() |
A_AhkVersion | In den Versionen vor 1.0.22 ist diese Variable leer. A_AhkVersion enthält die Version des AutoHotkey-Programms, mit dem das Skript ausgeführt wird, z. B. 1.0.22. Wird diese Variable in einem kompilierten Skript verwendet, meldet sie die Version des AutoHotkey-Programms, mit der das Skript ursprünglich kompiliert wurde. Aufgrund der Struktur der Versionsnummer kann ein Skript mithilfe von ">" oder ">=" überprüfen, ob A_AhkVersion größer als eine bestimmte Versionsnummer ist. Zum Beispiel: if A_AhkVersion >= 1.0.25.07 . Siehe auch: #Requires und VerCompare() |
A_AhkPath |
Bei unkompilierten oder eingebetteten Skripten: Der vollständige Pfadname der EXE-Datei, mit der das aktuelle Skript gerade ausgeführt wird. Zum Beispiel: C:\Program Files\AutoHotkey\AutoHotkey.exe Bei kompilierten Skripten, die auf einer BIN-Datei basieren, wird der Wert durch Lesen des Installationsverzeichnisses aus der Registry und Anfügen von "\AutoHotkey.exe" ermittelt. Wenn AutoHotkey nicht installiert ist, ist der Wert leer. Das folgende Beispiel ist äquivalent: RegRead InstallDir, HKLM\SOFTWARE\AutoHotkey, InstallDir AhkPath := ErrorLevel ? "" : InstallDir "\AutoHotkey.exe" [v1.1.34+]: Bei kompilierten Skripten, die auf einer EXE-Datei basieren, enthält A_AhkPath den vollständigen Pfadnamen des kompilierten Skripts. Dies kann in Kombination mit /script verwendet werden, um externe Skripte auszuführen. Um stattdessen die installierte Kopie von AutoHotkey zu lokalisieren, lesen Sie die Registry wie oben gezeigt. |
A_IsUnicode | Enthält 1, wenn Zeichenketten im Unicode-Format (16-Bit) sind, oder eine leere Zeichenkette (das als falsch angesehen wird), wenn Zeichenketten im ANSI-Format (8-Bit) sind. Das Format der Zeichenketten ist abhängig davon, mit welcher AutoHotkey-Version das Skript ausgeführt wird oder mit welcher BIN-Datei es kompiliert wurde. Bei ANSI-basierten Ausführungsdateien vor [v1.1.06] blieb A_IsUnicode undefiniert; das heißt, dass das Skript dieser Variable einen Wert zuweisen konnte und dass der Versuch, sie zu lesen, eine UseUnsetGlobal-Warnung auslösen konnte. In späteren Versionen ist sie immer definiert und schreibgeschützt. |
A_IsCompiled | Enthält 1, wenn das Skript als kompilierte EXE-Datei ausgeführt wird, oder eine leere Zeichenkette (das als falsch angesehen wird), wenn das nicht der Fall ist. Bei unkompilierten Skripten vor [v1.1.06] blieb A_IsCompiled undefiniert; das heißt, dass das Skript dieser Variable einen Wert zuweisen konnte und dass der Versuch, sie zu lesen, eine UseUnsetGlobal-Warnung auslösen konnte. In späteren Versionen ist sie immer definiert und schreibgeschützt. |
A_ExitReason | Der aktuellste Grund, warum das Skript terminiert werden soll. Diese Variable enthält nur einen Wert, wenn eine OnExit-Subroutine des Skripts gerade läuft oder durch einen Exitversuch mindestens einmal aufgerufen wurde. Siehe OnExit für weitere Details. |
Variable | Beschreibung |
---|---|
A_YYYY |
Das aktuelle 4-stellige Jahr (z. B. 2004). A_Year enthält denselben Wert. Hinweis: Um die formatierte Version einer Uhrzeit oder eines Datums gemäß Ihrer aktuellen Sprach- und Regionseinstellungen abzurufen, können Sie |
A_MM | Der aktuelle 2-stellige Monat (01-12). A_Mon enthält denselben Wert. |
A_DD | Der aktuelle 2-stellige Tag des Monats (01-31). A_MDay enthält denselben Wert. |
A_MMMM | Der aktuelle vollständige Monatsname in der aktuellen Sprache des Benutzers, z. B. Juli |
A_MMM | Der aktuelle abgekürzte Monatsname in der aktuellen Sprache des Benutzers, z. B. Jul |
A_DDDD | Der aktuelle vollständige Wochentagsname in der aktuellen Sprache des Benutzers, z. B. Sonntag |
A_DDD | Der aktuelle abgekürzte Wochentagsname in der aktuellen Sprache des Benutzers, z. B. So |
A_WDay | Der aktuelle 1-stellige Wochentag (1-7). 1 ist Sonntag in allen Sprach- und Regionseinstellungen. |
A_YDay | Der aktuelle Tag im Jahr (1-366). Der Wert enthält keine führenden Nullen, z. B. wird 9 abgerufen, nicht 009. Das folgende Beispiel zeigt, wie ein Wert mit führenden Nullen abgerufen werden kann: FormatTime, AusgabeVar, , YDay0 . |
A_YWeek | Das aktuelle Jahr und Wochennummer (z. B. 200453) gemäß ISO 8601. Um das Jahr von der Woche zu trennen, nutzen Sie Jahr := SubStr(A_YWeek, 1, 4) und Woche := SubStr(A_YWeek, -1) . Genaue Definition von A_YWeek: Wenn die Woche mit dem 1. Januar mindestens vier Tage im neuen Jahr hat, ist sie Woche 1. Ansonsten ist sie die letzte Woche des vorherigen Jahres, und die nachfolgende Woche die erste Woche des neuen Jahres. |
A_Hour | Die aktuelle 2-stellige Stunde (00-23) im 24-Stunden-Format. Das folgende Beispiel zeigt, wie die Zeit im 12-Stunden-Format mit den Indikatoren AM bzw. PM abgerufen werden kann: FormatTime, AusgabeVar, , h:mm:ss tt |
A_Min | Die aktuelle 2-stellige Minute (00-59). |
A_Sec | Die aktuelle 2-stellige Sekunde (00-59). |
A_MSec | Die aktuelle 3-stellige Millisekunde (000-999). Das folgende Beispiel zeigt, wie die Nullen am Anfang entfernt werden können: Millisekunden := A_MSec + 0 . |
A_Now |
Die aktuelle Ortszeit im YYYYMMDDHH24MISS-Format. Hinweis: Datums- und Zeitberechnungen können mit EnvAdd und EnvSub durchgeführt werden. Außerdem können Sie FormatTime nutzen, um das Datum und/oder die Uhrzeit gemäß Ihrer aktuellen Sprach- und Regionseinstellungen zu formatieren. |
A_NowUTC | Die aktuelle koordinierte Weltzeit (Coordinated Universal Time oder kurz UTC) im YYYYMMDDHH24MISS-Format. UTC ist grundsätzlich das gleiche wie Greenwich Mean Time (GMT). |
A_TickCount | Die Zeit in Millisekunden, die seit dem Start des Systems verstrichen ist, bis zu einem Maximum von 49,7 Tagen. Um diese verstrichene Zeit zu messen, speichern Sie A_TickCount in eine Variable und ziehen Sie sie später vom aktuellen A_TickCount-Wert ab. Zum Beispiel: StartZeit := A_TickCount Sleep, 1000 VerstricheneZeit := A_TickCount - StartZeit MsgBox, %VerstricheneZeit% Millisekunden sind verstrichen. Schauen Sie sich QueryPerformanceCounter() an, wenn Sie eine höhere Genauigkeit als die 10 ms von A_TickCount benötigen. |
Variable | Beschreibung |
---|---|
A_IsSuspended | Enthält 1, wenn das Skript suspendiert ist, ansonsten 0. |
A_IsPaused [v1.0.48+] |
Enthält 1, wenn der Thread direkt unterhalb des aktuellen Threads pausiert ist. Ansonsten ist eine 0 enthalten. |
A_IsCritical [v1.0.48+] |
Enthält 0, wenn Critical im aktuellen Thread ausgeschaltet ist. Ansonsten enthält A_IsCritical einen Integer größer als 0 bzw. die von Critical verwendete Meldungsüberprüfungsfrequenz. Critical 0 schaltet den kritischen Status eines Threads aus. Um den aktuellen Status von Critical zu speichern und wiederherzustellen, können Sie Alt_IsCritical := A_IsCritical und später Critical %Alt_IsCritical% verwenden. |
A_BatchLines | (oder A_NumBatchLines) Der aktuell gesetzte Wert von SetBatchLines. Beispiele: 200 oder 10ms (je nach Format). |
A_ListLines [v1.1.28+] |
Enthält 1, wenn ListLines eingeschaltet ist. Ansonsten ist eine 0 enthalten. |
A_TitleMatchMode | Der aktuell gesetzte Modus von SetTitleMatchMode: 1, 2, 3 oder RegEx. |
A_TitleMatchModeSpeed | Die aktuell gesetzte Übereinstimmungsgeschwindigkeit (fast oder slow) von SetTitleMatchMode. |
A_DetectHiddenWindows | Der aktuell gesetzte Modus (On oder Off) von DetectHiddenWindows. |
A_DetectHiddenText | Der aktuell gesetzte Modus (On oder Off) von DetectHiddenText. |
A_AutoTrim | Der aktuell gesetzte Modus (On oder Off) von AutoTrim. |
A_StringCaseSense | Der aktuell gesetzte Modus (On, Off oder Locale) von StringCaseSense. |
A_FileEncoding | [AHK_L 46+]: Enthält die von verschiedenen Befehlen standardmäßig genutzte Codierung; siehe FileEncoding. |
A_FormatInteger | Das aktuell gesetzte Integer-Format (H oder D) von SetFormat. [AHK_L 42+]: Kann auch ein kleines h enthalten. |
A_FormatFloat | Das aktuell gesetzte Floating-Point-Format von SetFormat. |
A_SendMode | [v1.1.23+]: Der aktuell gesetzte Modus (Event, Input, Play oder InputThenPlay) von SendMode. |
A_SendLevel | [v1.1.23+]: Die aktuelle Einstellung von SendLevel (ein Integer im Bereich von 0 bis 100). |
A_StoreCapsLockMode | [v1.1.23+]: Der aktuell gesetzte Modus (On oder Off) von SetStoreCapsLockMode. |
A_KeyDelay A_KeyDuration |
Die aktuell gesetzte Verzögerung oder Dauer von SetKeyDelay (im dezimalen Format). A_KeyDuration benötigt [v1.1.23+]. |
A_KeyDelayPlay A_KeyDurationPlay |
Die aktuell gesetzte Verzögerung oder Dauer von SetKeyDelay für den SendPlay-Modus (im dezimalen Format). Benötigt [v1.1.23+]. |
A_WinDelay | Die aktuell gesetzte Verzögerung von SetWinDelay (im dezimalen Format). |
A_ControlDelay | Die aktuell gesetzte Verzögerung von SetControlDelay (im dezimalen Format). |
A_MouseDelay A_MouseDelayPlay |
Die aktuell gesetzte Verzögerung von SetMouseDelay (im dezimalen Format). A_MouseDelay gilt für den traditionellen SendEvent-Modus, während A_MouseDelayPlay für den SendPlay-Modus vorgesehen ist. A_MouseDelayPlay benötigt [v1.1.23+]. |
A_DefaultMouseSpeed | Die aktuell gesetzte Geschwindigkeit von SetDefaultMouseSpeed (im dezimalen Format). |
A_CoordModeToolTip A_CoordModePixel A_CoordModeMouse A_CoordModeCaret A_CoordModeMenu |
[v1.1.23+]: Der aktuell gesetzte Modus (Window, Client oder Screen) von CoordMode. |
A_RegView | [v1.1.08+]: Die aktuell gesetzte Registry-Ansicht von SetRegView. |
A_IconHidden | Enthält 1, wenn das Tray-Symbol gerade versteckt ist, ansonsten 0. Mit der #NoTrayIcon-Direktive oder dem Menu-Befehl kann das Symbol versteckt werden. |
A_IconTip | Leer, es sei denn, es wurde für das Tray-Symbol ein benutzerdefinierter Tooltip via Menu, Tray, Tip definiert, dann ist der Text des Tooltips enthalten. |
A_IconFile | Leer, es sei denn, es wurde ein benutzerdefiniertes Tray-Symbol via Menu, Tray, Icon definiert, dann ist der vollständige Pfadname der Datei des neuen Symbols enthalten. |
A_IconNumber | Leer, wenn A_IconFile leer ist. Ansonsten ist die Nummer der Symbolgruppe enthalten, die in A_IconFile verwendet wird (üblicherweise 1). |
Variable | Beschreibung |
---|---|
A_TimeIdle | Die Zeit in Millisekunden, die seit der letzten Eingabe via Tastatur, Maus usw. verstrichen ist. Diese Variable ist nützlich, um herauszufinden, ob der Benutzer abwesend ist. Physische Benutzereingaben sowie künstlich erzeugte Eingaben von beliebigen Programmen oder Skripten (z. B. der Send- oder MouseMove-Befehl) werden diesen Wert wieder auf 0 setzen. Da dieser Wert meistens schrittweise um 10 erhöht wird, ist es ratsam, ihn nicht zu überprüfen, ob er exakt mit einem anderen Wert übereinstimmt. Überprüfen Sie stattdessen, ob dieser Wert größer oder kleiner als ein anderer Wert ist. Zum Beispiel: IfGreater, A_TimeIdle, 600000, MsgBox, Die letzte Eingabeaktivität erfolgte vor ca. 10 Minuten . |
A_TimeIdlePhysical | Ähnlich wie oben, allerdings werden künstliche Tastendrücke und/oder Mausklicks ignoriert, wenn der entsprechende Hook (Tastatur oder Maus) installiert ist; das heißt, dass diese Variable nur auf physische Ereignisse reagiert. Dadurch wird verhindert, dass simulierte Tastendrücke und Mausklicks fälschlicherweise die Aktivität des Benutzers vortäuschen. Wenn keine Hooks installiert sind, ist diese Variable äquivalent zu A_TimeIdle. Wenn nur ein Hook installiert ist, wird A_TimeIdlePhysical nur von dieser Art von physischer Eingabe beeinflusst (die Eingabe des anderen/nicht-installierten Hooks, hat sowohl physisch als auch künstlich keine Auswirkung). |
A_TimeIdleKeyboard [v1.1.28+] |
Wenn der Tastatur-Hook installiert ist, enthält diese Variable die Anzahl der Millisekunden, die seit der letzten physischen Tastatureingabe verstrichen sind. Ansonsten ist diese Variable äquivalent zu A_TimeIdle. |
A_TimeIdleMouse [v1.1.28+] |
Wenn der Maus-Hook installiert ist, enthält diese Variable die Anzahl der Millisekunden, die seit der letzten physischen Mauseingabe verstrichen sind. Ansonsten ist diese Variable äquivalent zu A_TimeIdle. |
Variable | Beschreibung |
---|---|
A_DefaultGui [v1.1.23+] | Name oder Nummer der im aktuellen Thread verwendeten Standard-GUI. |
A_DefaultListView [v1.1.23+] | Variablenname oder HWND des ListView-Steuerelements, auf dem sich die ListView-Funktionen gerade beziehen. Wenn die Standard-GUI keine ListView hat, ist diese Variable leer. |
A_DefaultTreeView [v1.1.23+] | Variablenname oder HWND des TreeView-Steuerelements, auf dem sich die TreeView-Funktionen gerade beziehen. Wenn die Standard-GUI keine TreeView hat, ist diese Variable leer. |
A_Gui | Name oder Nummer einer GUI, die den aktuellen Thread gestartet hat. Diese Variable ist leer, es sei denn, ein GUI-Steuerelement, Menüpunkt oder Ereignis wie GuiClose/GuiEscape hat den aktuellen Thread gestartet. |
A_GuiControl | Der Name der zugeordneten Variable des GUI-Steuerelements, das den aktuellen Thread gestartet hat. Wenn dieses Steuerelement keine zugeordnete Variable hat, enthält A_GuiControl stattdessen den Text bzw. Beschriftung des Steuerelements, bis zu einem Maximum von 63 Zeichen (auf diese Weise können zum Beispiel Button-Steuerelemente angesteuert werden, ohne ihnen zwingend einen Variablennamen zuzuordnen). A_GuiControl ist leer, wenn: 1) A_Gui leer ist; 2) ein GUI-Menüpunkt oder Ereignis wie GuiClose/GuiEscape den aktuellen Thread gestartet hat; 3) das Steuerelement keine zugeordnete Variable und Beschriftung hat; oder 4) das Steuerelement, das den aktuellen Thread ursprünglich gestartet hat, nicht mehr existiert (z. B. aufgrund von Gui Destroy). |
A_GuiWidth A_GuiHeight |
Diese Variablen enthalten die Breite und Höhe des GUI-Fensters für GuiSize-Ereignisse. Diese gelten nur für den Clientbereich des GUI-Fensters (das ist der Bereich ohne Titelleiste, Menüleiste und Rahmen). [v1.1.11+]: Diese Werte werden von der DPI-Skalierung beeinflusst. |
A_GuiX A_GuiY |
Diese Variablen enthalten die X- und Y-Koordinate für GuiContextMenu- und GuiDropFiles-Ereignisse. Die Koordinaten sind relativ zur linken oberen Ecke des Fensters. [v1.1.11+]: Diese Werte werden von der DPI-Skalierung beeinflusst. |
A_GuiEvent oder A_GuiControlEvent |
Die Art des Ereignisses, das den aktuellen Thread gestartet hat. Wenn der Thread nicht durch eine GUI-Aktion gestartet wurde, ist diese Variable leer. Ansonsten enthält sie eine der folgenden Zeichenketten: Normal: Das Ereignis wurde via Linksklick oder Tastendrücke (↑, →, ↓, ←, Tab, Leer, unterstrichene Tastaturkurzbefehle und so weiter) ausgelöst. Dieser Wert wird auch für Menüpunkte und spezielle Ereignisse wie GuiClose und GuiEscape verwendet. DoubleClick: Das Ereignis wurde durch einen Doppelklick ausgelöst. Hinweis: Der erste Klick des Doppelklicks bewirkt immer noch, dass ein Normal-Ereignis ausgelöst wird. Mit anderen Worten wird die Subroutine zweimal gestartet: zuerst durch den ersten Klick und dann durch den zweiten Klick. RightClick: Tritt nur bei GuiContextMenu, ListViews und TreeViews auf. Kontextabhängige Werte: Um mehr zu erfahren, siehe GuiContextMenu, GuiDropFiles, Slider, MonthCal, ListView und TreeView. |
A_EventInfo | Enthält zusätzliche Informationen über die folgenden Ereignisse:
|
Hinweis: Jeder Thread verwaltet seine eigenen Werte für A_Gui, A_GuiControl, A_GuiX/Y, A_GuiEvent und A_EventInfo (im Gegensatz zu Variablen wie A_ThisHotkey). Das heißt, dass die aktuellen Werte solcher Variablen für jeden Thread erhalten bleiben, egal ob er zwischenzeitlich von einem anderen Thread unterbrochen wird.
Variable | Beschreibung |
---|---|
A_ThisMenuItem | Der Name des zuletzt ausgewählten benutzerdefinierten Menüpunkts (ansonsten leer). |
A_ThisMenu | Der Name des Menüs, wo A_ThisMenuItem ausgewählt wurde. |
A_ThisMenuItemPos | Eine Nummer, die die aktuelle Position von A_ThisMenuItem innerhalb von A_ThisMenu repräsentiert. Der erste Menüpunkt ist 1, der Zweite ist 2 und so weiter. Menütrennlinien werden mitgezählt. Diese Variable ist leer, wenn A_ThisMenuItem leer ist oder innerhalb von A_ThisMenu nicht mehr existiert. Sie ist auch leer, wenn A_ThisMenu selbst nicht mehr existiert. |
A_ThisHotkey | Der zuletzt ausgeführte Hotkey oder nicht-automatisch-ersetzende Hotstring (ansonsten leer), z. B. #z. Dieser Wert ändert sich, wenn der aktuelle Thread von einem anderen Hotkey unterbrochen wird, deshalb ist es ratsam, diesen Wert sofort in eine andere Variable zu speichern, wenn der originale Wert später für eine andere Subroutine benötigt wird. Jeder neu erstellte Hotkey -- entweder via Hotkey-Befehl oder Zweifach-Doppelpunkt-Label -- erhält einen fest zugewiesenen Namen, der eine Zeichenkette bestehend aus seinem Tastennamen und der Reihenfolge seiner Modifikatorsymbolen ist. Dieser Name wird von allen Varianten des Hotkeys verwendet. Jeder neu erstellte Hotstring erhält einen fest zugewiesenen Namen, der identisch zum verwendeten Text ist. Siehe auch: A_ThisLabel |
A_PriorHotkey | Das gleiche wie oben, aber für den vorher ausgeführten Hotkey. Ansonsten leer. |
A_PriorKey | [v1.1.01+]: Der Name der Taste, die vor dem Drücken oder Loslassen der letzten Taste gedrückt wurde, oder leer, wenn kein geeigneter Tastendruck im Tastenverlauf gefunden werden kann. Alle via Skript erzeugten Eingaben werden ignoriert. Bevor diese Variable genutzt werden kann, muss der Tastatur- oder Maus-Hook installiert und der Tastenverlauf aktiviert sein. |
A_TimeSinceThisHotkey | Die Zeit in Millisekunden, die seit dem Drücken von A_ThisHotkey verstrichen ist. Dieser Wert wird -1 sein, wenn A_ThisHotkey leer ist. |
A_TimeSincePriorHotkey | Die Zeit in Millisekunden, die seit dem Drücken von A_PriorHotkey verstrichen ist. Dieser Wert wird -1 sein, wenn A_PriorHotkey leer ist. |
A_EndChar | Ein Endungszeichen, das der Benutzer zuletzt gedrückt hat, um einen nicht-automatisch-ersetzenden Hotstring auszulösen. Wenn kein Endungszeichen notwendig war (wegen der *-Option), wird diese Variable leer sein. |
Variable | Beschreibung |
---|---|
ComSpec [v1.0.43.08+] A_ComSpec [v1.1.28+] |
Enthält wie die ComSpec-Umgebungsvariable den Pfadnamen des Befehlszeileninterpreters. Diese Variable wird oft in Verbindung mit Run/RunWait genutzt. Zum Beispiel: C:\Windows\system32\cmd.exe |
A_Temp [v1.0.43.09+] |
Der vollständige Pfadname des Ordners zum Speichern von temporären Dateien. Folgende Standorte werden der Reihenfolge nach durchsucht, um den Pfadnamen zu ermitteln: 1) Umgebungsvariable TMP, TEMP oder USERPROFILE; 2) Windows-Verzeichnis. Zum Beispiel: C:\Users\<Benutzer>\AppData\Local\Temp |
A_OSType | Der aktuelle Typ des Betriebssystems. Da AutoHotkey 1.1 nur NT-basierte Betriebssysteme unterstützt, wird diese Variable immer WIN32_NT enthalten. Ältere Versionen von AutoHotkey geben WIN32_WINDOWS zurück, wenn Windows 95/98/ME als Betriebssystem verwendet wird. |
A_OSVersion | Enthält je nach Windows-Version eine der folgenden Zeichenketten: WIN_7 [benötigt AHK_L 42+], WIN_8 [benötigt v1.1.08+], WIN_8.1 [benötigt v1.1.15+], WIN_VISTA, WIN_2003, WIN_XP, WIN_2000. Beachten Sie, dass das Betriebssystem eine andere Versionsnummer meldet bzw. A_OSVersion einen anderen Wert enthält, wenn der Kompatibilitätsmodus im Eigenschaftsfenster der AutoHotkey-Datei oder des kompilierten Skripts eingeschaltet ist. [v1.1.20+]: Wenn die Version des Betriebssystems nicht als eine der oben aufgelisteten Versionen erkannt wird, enthält die Variable eine Zeichenkette im Format "Haupt.Neben.Build". ; Das folgende Beispiel ist obsolet, da diese Betriebssysteme nicht mehr unterstützt werden. if A_OSVersion in WIN_NT4,WIN_95,WIN_98,WIN_ME ; Hinweis: Keine Leerzeichen hinter oder nach den Kommas. { MsgBox Dieses Skript benötigt Windows 2000/XP oder höher. ExitApp } |
A_Is64bitOS | [v1.1.08+]: Enthält 1 (wahr), wenn das Betriebssystem eine 64-Bit-Version ist, oder 0 (falsch), wenn es eine 32-Bit-Version ist. |
A_PtrSize | [AHK_L 42+]: Enthält die Größe eines Pointers in Bytes. Dieser Wert ist entweder 4 oder 8, abhängig davon, ob zum Ausführen des Skripts die 32-Bit- oder 64-Bit-Version von AutoHotkey verwendet wird. |
A_Language | Die Standardsprache des Systems als 4-stelligen Code. |
A_ComputerName | Der Netzwerkname des Computers. |
A_UserName | Der Anmeldename des Benutzers, der dieses Skript gestartet hat. |
A_WinDir | Das Windows-Verzeichnis. Zum Beispiel: C:\Windows |
A_ProgramFiles oder ProgramFiles |
Das Verzeichnis der Programmdateien (z. B. Für 64-Bit-Systeme (nicht 32-Bit-Systeme) gilt Folgendes:
[v1.0.43.08+]: Das Präfix "A_" kann weggelassen werden, um den Umstieg auf #NoEnv zu erleichtern. |
A_AppData [v1.0.43.09+] |
Der vollständige Pfadname des Ordners, der anwendungsspezifische Daten des aktuellen Benutzers enthält. Zum Beispiel: C:\Users\<Benutzer>\AppData\Roaming |
A_AppDataCommon [v1.0.43.09+] |
Der vollständige Pfadname des Ordners, der anwendungsspezifische Daten aller Benutzer enthält. Zum Beispiel: C:\ProgramData |
A_Desktop |
Der vollständige Pfadname des Ordners, der die Desktop-Dateien des aktuellen Benutzers enthält. Zum Beispiel: C:\Users\<Benutzer>\Desktop |
A_DesktopCommon |
Der vollständige Pfadname des Ordners, der die Desktop-Dateien aller Benutzer enthält. Zum Beispiel: C:\Users\Public\Desktop |
A_StartMenu |
Der vollständige Pfadname des Ordners, der die Startmenü-Dateien des aktuellen Benutzers enthält. Zum Beispiel: C:\Users\<Benutzer>\AppData\Roaming\Microsoft\Windows\Start Menu |
A_StartMenuCommon |
Der vollständige Pfadname des Ordners, der die Startmenü-Dateien aller Benutzer enthält. Zum Beispiel: C:\ProgramData\Microsoft\Windows\Start Menu |
A_Programs |
Der vollständige Pfadname des Programme-Ordners im Startmenü des aktuellen Benutzers. Zum Beispiel: C:\Users\<Benutzer>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs |
A_ProgramsCommon |
Der vollständige Pfadname des Programme-Ordners im Startmenü aller Benutzer. Zum Beispiel: C:\ProgramData\Microsoft\Windows\Start Menu\Programs |
A_Startup |
Der vollständige Pfadname des Autostart-Ordners im Startmenü des aktuellen Benutzers. Zum Beispiel: C:\Users\<Benutzer>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
A_StartupCommon |
Der vollständige Pfadname des Autostart-Ordners im Startmenü aller Benutzer. Zum Beispiel: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup |
A_MyDocuments |
Der vollständige Pfadname des Ordners "Eigene Dokumente", der beliebige Dateien (vorzugsweise Dokumente) des aktuellen Benutzers enthält. Wenn der Ordner die oberste Ebene eines Laufwerks ist, wird im Gegensatz zu anderen ähnlichen Variablen der umgekehrte Schrägstrich am Ende weggelassen (zum Beispiel wäre C:\Users\<Benutzer>\Documents |
A_IsAdmin | Wenn der aktuelle Benutzer über administrative Rechte verfügt, ist eine 1 enthalten. Ansonsten ist eine 0 enthalten. Um das Skript sich selbst mit administrativen Rechten neu starten zu lassen (oder um diese Rechte vom Benutzer einzufordern), verwenden Sie Run *RunAs. Beachten Sie aber, dass die Ausführung des Skripts als Administrator dazu führt, dass alle vom Skript gestarteten Programme auch als Administrator ausgeführt werden. Eine mögliche Alternative finden Sie in der FAQ. |
A_ScreenWidth |
Die Breite und Höhe des primären Bildschirms in Pixel (z. B. 1024 und 768). Mit SysGet können die Abmessungen von nicht-primären Bildschirmen abgerufen werden. Das folgende Beispiel zeigt, wie die Breite und Höhe des gesamten Desktops ermittelt werden kann (selbst wenn er sich über mehrere Bildschirme erstrecken sollte): SysGet, VirtuelleBreite, 78 SysGet, VirtuelleHöhe, 79 Mit SysGet kann zudem der Arbeitsbereich eines Bildschirms ermittelt werden. Dieser Bereich ist in der Regel kleiner als der Gesamtbereich des Bildschirms, weil die Taskleiste und andere registrierte Desktopsymbolleisten nicht berücksichtigt werden. |
A_ScreenDPI [v1.1.11+] | Die Anzahl der Pixel pro logischen Zoll entlang der Bildschirmbreite. Dieser Wert bezieht sich auf alle Bildschirme eines Systems. Standardmäßig gilt ein DPI-Wert von 96, abhängig von der Textgrößeneinstellung des Systems. Siehe auch Gui -DPIScale. |
A_IPAddress1 bis 4 | Die IP-Adressen der ersten 4 Netzwerkadapter im Computer. |
Variable | Beschreibung |
---|---|
A_Cursor | Der Typ des aktuell angezeigten Mauszeigers. Die Variable kann eines der folgenden Wörter enthalten: AppStarting, Arrow, Cross, Help, IBeam, Icon, No, Size, SizeAll, SizeNESW, SizeNS, SizeNWSE, SizeWE, UpArrow, Wait, Unknown. Die Großbuchstaben nach Size sind Himmelsrichtungen, z. B. NESW = NorthEast+SouthWest (Nordosten+Südwesten). Die handförmigen Mauszeiger (Zeigen und Greifen) sind als Unknown klassifiziert. |
A_CaretX A_CaretY |
Die aktuelle X- und Y-Koordinate des Textcursors (Texteinfügemarke). Standardmäßig sind die Koordinaten relativ zum aktiven Fenster. Mit CoordMode können die Koordinaten relativ zum gesamten Bildschirm gemacht werden. Wenn kein Fenster aktiv ist oder die Position des Textcursors nicht ermittelt werden kann, sind diese Variablen leer. Das folgende Skript zeigt die aktuellen Positionsdaten eines Textcursors mithilfe eines selbstaktualisierenden Tooltips an. Beachten Sie, dass einige Fenster (z. B. bestimmte Versionen von MS Word) immer die gleichen Positionsdaten melden, wenn Sie den Textcursor verschieben. #Persistent SetTimer, TextcursorAbfragen, 100 return TextcursorAbfragen: ToolTip, X%A_CaretX% Y%A_CaretY%, A_CaretX, A_CaretY - 20 return |
Clipboard | Kann genutzt werden, um den Inhalt der systeminternen Zwischenablage abzurufen oder zu setzen. Einzelheiten finden Sie unter Clipboard. |
A_Clipboard [v1.1.35+] | |
ClipboardAll | Der gesamte Inhalt der Zwischenablage (z. B. Formatierung und Text). Einzelheiten finden Sie unter ClipboardAll. |
ErrorLevel | Diese Variable wird gesetzt, um den Erfolg oder Misserfolg einiger Befehle zu kennzeichnen. Einzelheiten finden Sie unter ErrorLevel. |
A_LastError | Das Ergebnis der GetLastError()-Systemfunktion oder des letzten COM-Objektaufrufs. Einzelheiten finden Sie unter DllCall() und Run/RunWait. |
True False |
Enthalten 1 und 0. Sie können verwendet werden, um ein Skript besser lesbar zu machen. Einzelheiten finden Sie unter Boolesche Werte. |
Variable | Beschreibung |
---|---|
A_Index | Enthält die Nummer des aktuellen Schleifendurchlaufs (ein 64-Bit-Integer). Wenn beispielsweise das Skript den Schleifenkörper zum ersten Mal ausführt, enthält diese Variable eine 1. Einzelheiten finden Sie unter Loop oder While-Schleife. |
A_LoopFileName, etc. | Diese und andere verwandten Variablen sind nur für Datei-Schleifen relevant. |
A_LoopRegName, etc. | Diese und andere verwandten Variablen sind nur für Registry-Schleifen relevant. |
A_LoopReadLine | Siehe dateilesende Schleife. |
A_LoopField | Siehe parsende Schleife. |
Var := ""
).