Eine allgemeine Erklärung 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: Legacy und Ausdruck. Die Legacy-Methode verwendet den Gleichheitszeichenoperator (=), um anführungszeichenlose direkt geschriebene Zeichenketten und in Prozentzeichen gesetzte Variablen zuzuweisen. Zum Beispiel:
MeineZahl = 123 MeineZkette = Dies ist eine direkt geschriebene Zeichenkette. KopieVonVar = %Var% ; Beim Operator "=" sind Prozentzeichen erforderlich, 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 funktionsgleich mit den vorherigen Beispielen:
MeineZahl := 123 MeineZkette := "Dies ist eine direkt geschriebene Zeichenkette." KopieVonVar := Var ; Beim Operator ":=" werden keine Prozentzeichen verwendet.
Die letztere Methode wird von vielen bevorzugt, da sie eine Ausdruckssyntax unterstützt, die leichter zu verstehen ist und der Syntax vieler anderer Sprachen sehr ähnlich ist.
Diese Methoden können natürlich auch verwendet werden, um den Inhalt einer Variable zu löschen (um sie sozusagen leer zu machen):
MeineVar = MeineVar := ""
Das obige leere Anführungszeichenpaar sollte nur mit dem Doppelpunkt-Gleich-Operator (:=) verwendet werden. Die Verwendung des Gleich-Operators (=) würde dazu führen, dass zwei Anführungszeichen in die Variable geschrieben werden.
Inhalte von Variablen abrufen: Analog zu den beiden Methoden zum Speichern von Werten gibt es auch zwei Methoden zum Abrufen von Werten: Legacy und Ausdruck. Bei der Legacy-Methode müssen die Namen der Variablen in Prozentzeichen gesetzt werden, um ihren Inhalt abzurufen. Zum Beispiel:
MsgBox Der Wert in der Variable namens Var ist %Var%. KopieVonVar = %Var%
Bei der Ausdrucksmethode hingegen werden die Prozentzeichen neben den Variablennamen weggelassen, aber direkt geschriebene Zeichenketten in Anführungszeichen gesetzt. Demnach wären die folgenden Beispiele funktionsgleich 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 obigen MsgBox-Zeile wird ein Prozent- und Leerzeichen verwendet, um den Parameter vom Legacy- in den Ausdrucksmodus zu ändern. Dies ist notwendig, da fast alle Befehlsparameter standardmäßig die Legacy-Methode 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 erforderlich sind.
Eine strukturierte Übersicht und zusätzliche Erklärungen finden Sie unter Ausdrücke (Expressions).
Ausdrücke werden verwendet, um eine oder mehrere Operationen auf eine Reihe von Variablen, direkt geschriebenen Zeichenketten und/oder direkt geschriebenen Zahlen anzuwenden.
Variablennamen (außer Pseudo-Arrays und andere Doppelreferenzen) dürfen innerhalb eines Ausdrucks nicht in Prozentzeichen gesetzt werden. Folglich müssen direkt geschriebene Zeichenketten in doppelte Anführungszeichen gesetzt werden, um sie von Variablen zu unterscheiden. 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, da 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 Arten von If-Anweisungen, die wie Ausdrücke aussehen, aber keine sind.
Leere Zeichenketten: Um eine leere Zeichenkette in einem Ausdruck anzugeben, verwenden Sie ein leeres Anführungszeichenpaar. Zum Beispiel wäre die Anweisung if (MeineVar != "")
wahr, wenn MeineVar nicht leer ist. Verwendet man aber ein leeres Anführungszeichenpaar bei einem Legacy-If, wird es als direkt geschriebener Text behandelt. Zum Beispiel wäre die Anweisung if MeineVar = ""
nur wahr, wenn MeineVar ein tatsächliches Anführungszeichenpaar enthält. Verwenden Sie stattdessen bei einem Legacy-If den Operator = oder != mit nichts auf der rechten Seite, um zu prüfen, ob eine Variable leer ist, z.B. if Var =
.
Beachten Sie, dass ungültige Ausdrücke wie (x +* 3)
immer eine leere Zeichenkette zurückgeben.
Ergebnis eines Ausdrucks speichern: Um einer Variable das Ergebnis eines Ausdrucks zuzuweisen, verwenden Sie den Doppelpunkt-Gleich-Operator (:=). Zum Beispiel:
NettoPreis := Preis * (1 - Rabatt/100)
Boolesche Werte: In Fällen, wo die Auswertung eines Ausdrucks entweder True (wahr) oder False (falsch) ergeben muss (z.B. bei einer IF-Anweisung), wird eine leere Zeichenkette oder 0 als False und alle anderen Ergebnisse als True angesehen. Zum Beispiel wäre die Anweisung if ElementeAnzahl
nur dann False, 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 True- oder False-Wert: 1 für True und 0 für False. Im folgenden Beispiel wird 1 in die Done-Variable gespeichert, wenn eine der beiden Bedingungen True ist:
Done := A_Index > 5 or FoundIt
Wie oben angedeutet, kann eine Variable zum Speichern eines False-Wertes verwendet werden, indem sie einfach leer gemacht oder ihr 0 zugewiesen wird. Verwenden Sie dann die Kurzanweisung if Done
, um zu prüfen, ob die Done-Variable True oder False ist.
Die Wörter True und False sind interne Variablen, die 1 bzw. 0 enthalten. Diese können verwendet werden, um die Lesbarkeit eines Skripts zu verbessern. Zum Beispiel:
GroßKleinSensitiv := false SucheFortsetzen := true
Integer (ganze Zahlen) und Floating-Point-Zahlen (Gleitkommazahlen): Innerhalb eines Ausdrucks werden Zahlen, die einen Dezimalpunkt enthalten, als Floating-Point-Zahlen behandelt, andernfalls sind sie Integer. Für die meisten Operatoren wie Addition und Multiplikation gilt: Wenn einer der Eingabewerte eine Floating-Point-Zahl ist, ist auch das Ergebnis eine Floating-Point-Zahl.
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 ist Sleep 0xFF
äquivalent zu 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
).
Ausdruck erzwingen: Obwohl Befehlsparameter (außer AusgabeVar) standardmäßig keine Ausdrücke unterstützen, kann ein Ausdruck erzwungen werden, indem ein Prozentzeichen gefolgt von einem Leer- oder Tabulatorzeichen vorangestellt wird. In [v1.1.21+] kann dieses Präfix im EingabeVar-Parameter eines Befehls verwendet werden, außer bei einem Legacy-If-Befehl (verwenden Sie stattdessen eine Ausdruck-If-Anweisung). Diese Technik wird häufig verwendet, 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 % Wiederholungen + 1 WinSet, Transparent, % X + 100 Control, Choose, % AktuelleAuswahl - 1
Allgemeine Informationen zu 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 die Auswertung dieses Teils des Ausdrucks eine leere Zeichenkette ergibt. Wenn z.B. die Variable X leer ist, gibt der Ausdruck X+1 einen leeren Wert statt 1 zurück.
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). Dieses nicht-numerische Attribut kann durch eine Verkettung erzwungen werden, so dass Ausdrücke wie "0x" n
einen nicht-numerischen Wert erzeugen (auch wenn n gültige hexadezimale Ziffern enthält). Dieses Problem kann umgangen werden, indem der Wert einer Variable zugewiesen oder über eine Funktion wie z.B. Round() übergeben wird. Generell sollte vermieden werden, direkt geschriebene Zahlen in Anführungszeichen zu setzen, da sich dieses Verhalten in einer zukünftigen Version ändern könnte.
Operator | Beschreibung |
---|---|
%Var% | Wenn eine Variable in einem Ausdruck mit Prozentzeichen umschlossen ist (z.B. %Var%), wird der gesamte Inhalt dieser Variable als Name oder Teil des Namens einer anderen Variable vermutet (wenn diese Variable nicht existiert, wird %Var% in eine leere Zeichenkette aufgelöst). Meistens wird dies verwendet, um Elemente eines Pseudo-Arrays zu referenzieren, zum Beispiel: 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 in Prozentzeichen (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/schreibgeschützte 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. Abrufen (Get), Setzen (Set) oder Aufrufen (Call) einer Methode des Objekts x, wobei y ein direkt geschriebener Wert ist. Siehe Objektsyntax. |
new | [v1.1.00+]: Erstellt ein neues Objekt, das von einem anderen Objekt abgeleitet ist. Zum Beispiel ist x := new y oft äquivalent zu x := {base: y} . Nach dem Wort new sollte eine Variable oder ein einfacher Klassenname in Form von GlobaleKlasse.VerschachtelteKlasse angegeben werden, optional auch Parameter wie in x := new y(z) (wobei y eine Variable ist, kein Funktionsname). Weitere Informationen finden Sie unter Benutzerdefinierte Objekte. |
++ -- |
Vorherige und nachherige Inkrementierung/Dekrementierung. Erhöht oder verringert eine numerische Variable um 1 (in den Versionen vor 1.0.46 müssen diese allein in einer Zeile stehen; es dürfen keine anderen Operatoren vorhanden sein). Der Operator kann entweder vor oder hinter dem Namen der Variable stehen. Wenn der Operator vor dem Namen steht, wird die Operation sofort ausgeführt und das Ergebnis wird von der nächsten Operation verwendet. Zum Beispiel bewirkt Var := ++X , dass X sofort um 1 erhöht und der Wert in Var gespeichert wird. Wenn der Operator hingegen hinter dem Namen einer Variable steht, wird die Operation erst ausgeführt, nachdem die Variable von der nächsten Operation verwendet wurde. Zum Beispiel bewirkt Var := X++ , dass X erst um 1 erhöht wird, nachdem der aktuelle Wert von X in Var gespeichert wurde. Aus Gründen der Abwärtskompatibilität behandeln diese Operatoren leere Variablen als 0, wenn sie allein in einer Zeile stehen. Zum Beispiel erzeugen sowohl y := 1, ++x als auch MsgBox % ++x ein leeres Ergebnis, wenn x leer ist. |
** |
Potenz. Anwendungsbeispiel: Hinweis: Eine negative Basis mit einem gebrochenen Exponenten wie Hinweis: In AutoHotkey v1 ist ** im Gegensatz zu seinem mathematischen Gegenstück linksassoziativ. Zum Beispiel wird |
- ! ~ & * |
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, z.B. Logisches NICHT (!): Wenn dieser Operator auf einen Operanden angewendet wird, der leer oder 0 ist, ist das Ergebnis 1 (true). Andernfalls ist das Ergebnis 0 (false). Zum Beispiel: Bitweises NICHT (~): Dieser Operator invertiert jedes Bit seines Operanden. Wenn der Operand eine Floating-Point-Zahl ist, wird er vor der Berechnung auf Integergröße gekürzt. Wenn der Operand eine Zahl zwischen 0 und 4294967295 (0xffffffff) ist, wird er als vorzeichenloser 32-Bit-Wert behandelt. Andernfalls wird er als vorzeichenfähiger 64-Bit-Wert behandelt. Zum Beispiel wird Adresse (&): Dereferenz (*): |
* / // |
Multiplikation (*): Das Ergebnis ist ein Integer, wenn beide Eingabewerte Integer sind, andernfalls ist es eine Floating-Point-Zahl. Echte Division (/): Im Gegensatz zu EnvDiv liefert die echte Division immer eine Floating-Point-Zahl, auch dann, wenn beide Eingabewerte Integer sind. Zum Beispiel ergibt Floor-Division (//): Der Doppelschrägstrich-Operator verwendet eine hochperformante Integer-Division, wenn beide Eingabewerte Integer sind. Zum Beispiel ergibt Die Operatoren *= und /= sind Kurzschreibweisen zum Multiplizieren oder Dividieren eines Variablenwerts mit einem anderen Wert. Zum Beispiel liefert Eine Division durch 0 liefert ein leeres Ergebnis (leere Zeichenkette). |
+ - |
Addition (+) und Subtraktion (-). Die Operatoren += und -= sind Kurzschreibweisen zum Erhöhen oder Verringern eines Variablenwerts um einen beliebigen Wert. Zum Beispiel liefert |
<< >> >>> |
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. Ein Punkt mit mindestens einem Leer- oder Tabulatorzeichen auf beiden Seiten wird verwendet, um zwei Elemente zu einer einzelnen Zeichenkette zu kombinieren. Dasselbe kann auch ohne diesen Punkt erzielt werden (außer bei Mehrdeutigkeiten wie Var := "Die Farbe ist " . GefundeneFarbe ; Explizite Verkettung Var := "Die Farbe ist " GefundeneFarbe ; Auto-Verkettung 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über liegenden Zeile verbunden. |
~= | [AHK_L 31+]: Kurzschreibweise für RegExMatch(). Zum Beispiel bewirkt "abc123" ~= "\d" , dass ErrorLevel auf 0 gesetzt und 4 (die Position des ersten numerischen Zeichens) zurückgegeben wird. Vor [v1.1.03] hatte dieser Operator dieselbe Priorität wie der Gleichheitsoperator (=) und war unvollständig dokumentiert. |
> < >= <= |
Größer (>), kleiner (<), größer gleich (>=) und kleiner gleich (<=). Wenn beide Eingabewerte Zahlen oder numerische Zeichenketten sind, werden sie numerisch verglichen, andernfalls 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 einer Verkettung mit einer in Anführungszeichen gesetzte Zeichenkette) nie als numerisch angesehen, 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, andernfalls werden sie alphabetisch verglichen. Die Operatoren != und <> sind funktionsgleich. 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 hängt von StringCaseSense ab). Die Operatoren <> und != hingegen berücksichtigen 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 einer Verkettung mit einer in Anführungszeichen gesetzte Zeichenkette) nie als numerisch angesehen, 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 der niedrigeren Priorität ist dies dasselbe wie der !-Operator. Zum Beispiel ist not (x = 3 or y = 3) dasselbe wie !(x = 3 or y = 3) . |
AND && |
Beide Operatoren sind ein logisches UND. Zum Beispiel: x > 3 and x < 10 . Zur Verbesserung der Performanz wird die Kurzschlussauswertung angewendet. Eine Zeile, die mit AND/OR/&&/|| (oder einem anderen Operator) beginnt, wird automatisch mit der darüber liegenden Zeile verbunden. |
OR || |
Beide Operatoren sind ein logisches ODER. Zum Beispiel: x <= 3 or x >= 10 . Zur Verbesserung der Performanz wird die Kurzschlussauswertung angewendet. |
?: | Ternärer Operator [v1.0.46+]. Dieser Operator ist die Kurzschreibweise für eine if-else-Anweisung. Er wertet die Bedingung auf seiner linken Seite aus, um zu bestimmen, welche seiner beiden Verzweigungen als Endergebnis dienen soll. Zum Beispiel bewirkt Var := x>y ? 2 : 3 , dass 2 in Var gespeichert wird, wenn x größer als y ist, andernfalls wird 3 gespeichert. Zur Verbesserung der Performanz wird nur die gewinnende Verzweigung ausgewertet (siehe Kurzschlussauswertung). |
:= += -= *= /= //= .= |= &= ^= >>= <<= >>>= |
Zuweisung. Führt eine Operation am Inhalt einer Variable durch und speichert das Ergebnis wieder in dieselbe Variable (aber vor v1.0.46 konnten diese nur als Operator ganz links in einer Zeile verwendet werden, außerdem wurden nur die ersten fünf Operatoren unterstützt). Der einfachste Zuweisungsoperator ist Doppelpunkt-Gleich (:=), der das Ergebnis eines Ausdrucks in eine Variable speichert. Eine Beschreibung der anderen Operatoren finden Sie in den entsprechenden Einträgen dieser Tabelle. Zum Beispiel führt Im Gegensatz zu den meisten anderen Operatoren werden Zuweisungen von rechts nach links ausgewertet. Folglich bewirkt eine Zeile wie Wenn eine Zuweisung als Eingabe für einen anderen Operator verwendet wird, ist der Eingabewert die Variable selbst. Zum Beispiel ist der Ausdruck Die Priorität der Zuweisungsoperatoren wird automatisch erhöht, wenn dadurch ein Syntaxfehler vermieden oder ein intuitiveres Verhalten erreicht wird. 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, eine der Eingaben ist eine Floating-Point-Zahl (in allen anderen Fällen führt /= eine echte Division durch); 2) Datum/Zeit-Berechnungen mit += und -= sind nur möglich, wenn dieser Operator der Operator ganz links in der Zeile ist; 3) Die Operatoren +=, -= und *= behandeln leere Variablen als 0, aber nur, wenn sie einzeln in einer Zeile stehen; zum Beispiel erzeugen sowohl |
, | Komma (Mehrfachanweisung) [v1.0.46+]. Kommas können verwendet werden, um mehrere Teilausdrücke auf eine Zeile zu schreiben. Dies wird üblicherweise verwendet, 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über liegenden Zeile verbunden. Siehe auch: Kommaperformanz. [v1.0.46.01+]: Wenn direkt nach einem Komma eine Variable und ein Gleichheitszeichen folgt, wird dieses Gleichheitszeichen automatisch als Doppelpunkt-Gleich-Zuweisung (:=) behandelt. Zum Beispiel enthält Folgendes nur Zuweisungen: [v1.0.48+]: Kommagetrennte Ausdrücke sind in der Regel performanter als einzeln geschriebene Ausdrücke, insbesondere bei der Zuweisung einer Variable an eine andere (z.B. |
Die folgenden Arten von Teilausdrücken überschreiben die Priorität bzw. die Reihenfolge der Auswertung:
Ausdruck | Beschreibung |
---|---|
(Ausdruck) |
Ein beliebiger Teilausdruck in runden Klammern. Zum Beispiel bewirkt Bei einer Mehrfachanweisung wird das Ergebnis der ersten Anweisung zurückgegeben. Zum Beispiel bewirkt |
Mod() |
Funktionsaufruf. Direkt nach dem Funktionsnamen muss eine runde Klammer stehen, d.h. zwischen dem Namen und der Klammer sind keine Leer- oder Tabulatorzeichen erlaubt. Einzelheiten finden Sie unter Funktionen. |
%func%() |
Siehe Funktionen dynamisch aufrufen. |
func.() | Veraltet: Diese Syntax wird nicht empfohlen. Verwenden Sie stattdessen [AHK_L 48+]: Versucht, eine namenlose Methode des Objekts func aufzurufen. Konventionsgemäß ist das die "Standardmethode" des Objekts. Wenn func kein Objekt enthält, wird stattdessen indirekt das Standardbasisobjekt aufgerufen. [v1.0.95+]: Wenn func einen Funktionsnamen enthält, wird die benannte Funktion aufgerufen. |
Fn(Params*) | [AHK_L 60+]: Variadischer Funktionsaufruf. Params ist ein Array (Objekt) mit Parameterwerten. |
x[y] [a, b, c] |
[AHK_L 31+]: Objektelementzugriff. Abrufen (Get), Setzen (Set) oder Aufrufen (Call) einer Methode des Objekts x, wobei y eine Parameterliste (typischerweise ein Array-Index oder Schlüssel) oder ein Ausdruck ist, der einen Methodennamen zurückgibt. [v1.0.97+]: Direkt geschriebenes Array. Wenn der eckigen Klammer kein Wert (oder kein Teilausdruck, der einen Wert zurückgibt) vorangestellt ist, wird die Klammer als Beginn eines direkt geschriebenen Arrays interpretiert. Zum Beispiel ist Weitere Informationen finden Sie unter Arraysyntax und Objektsyntax. |
{a: b, c: d} | [v1.0.97+]: Direkt geschriebenes Objekt. Ein Objekt bzw. assoziatives Array erstellen. Zum Beispiel ist |
Die folgenden Variablen sind fest in das Programm integriert und können normal referenziert werden.
Allgemeine Informationen finden Sie unter Interne Variablen.
Variable | Beschreibung |
---|---|
A_Space | Diese Variable enthält ein einzelnes Leerzeichen. Siehe AutoTrim für Details. |
A_Tab | Diese Variable enthält ein einzelnes Tabulatorzeichen. Siehe AutoTrim für 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 (z.B. %1%), aber nicht direkt in einem Ausdruck referenziert werden. Die Variable %0% enthält die Anzahl der übergebenen Parameter (andernfalls 0). Einzelheiten finden Sie unter Befehlszeilenparameter. |
A_Args [v1.1.27+] |
Enthält ein Array von Befehlszeilenparametern. Einzelheiten finden Sie unter Befehlszeilenparameter an ein Skript übergeben. |
A_WorkingDir | Das aktuelle Arbeitsverzeichnis, von dem 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, abhängig davon, wie das Skript gestartet wurde. Wenn das Skript z.B. über eine Verknüpfung (z.B. im Startmenü) gestartet wurde, richtet sich dessen anfängliches Arbeitsverzeichnis nach dem Feld "Ausführen in" im Eigenschaftenfenster der Verknüpfung. |
A_ScriptDir | Der vollständige Pfadname des Verzeichnisses, das das aktuelle Skript enthält. Der letzte umgekehrte Schrägstrich wird weggelassen (auch bei Stammverzeichnissen). |
A_ScriptName |
Der Dateiname des aktuellen Skripts ohne Pfadangabe, z.B. MeinSkript.ahk Wenn das Skript kompiliert oder eingebettet ist, enthält diese Variable den Namen der aktuellen EXE-Datei. |
A_ScriptFullPath |
Der vollständige Pfadname des aktuellen Skripts, z.B. C:\Skripte\MeinSkript.ahk Wenn das Skript kompiliert oder eingebettet ist, enthält diese Variable den vollständigen Pfadnamen der aktuellen EXE-Datei. |
A_ScriptHwnd [v1.1.01+] |
Die HWND-Nummer (eindeutige ID) des versteckten Hauptfensters des Skripts. |
A_LineNumber | Die Nummer der aktuell ausgeführten Zeile innerhalb des Skripts (oder innerhalb einer #Include-Datei, falls vorhanden). Diese Zeilennummer entspricht der via ListLines angezeigten Zeilennummer; dies ist z.B. nützlich, um einen Fehler zu melden: Da bei einer Skriptkompilierung alle #Include-Dateien zu einem großen Skript zusammengefasst werden, kann die Zeilennummerierung von der im unkompilierten Modus abweichen. |
A_LineFile |
Der vollständige Pfadname der Datei, zu der A_LineNumber gehört. Wenn das Skript aus einer externen Datei geladen wurde, ist diese Variable äquivalent zu A_ScriptFullPath, es sei denn, die Zeile gehört zu einer der #Include-Dateien des Skripts. Wenn das Skript mit einer BIN-Datei kompiliert wurde, enthält diese Variable den vollständigen Pfadnamen der aktuellen EXE-Datei, äquivalent zu A_ScriptFullPath. [v1.1.34+]: Wenn das Skript eingebettet ist, enthält A_LineFile ein Sternchen (*), gefolgt vom Namen der Ressource, z.B. *#1 |
A_ThisFunc [v1.0.46.16+] |
Der Name der benutzerdefinierten Funktion, die gerade ausgeführt wird (andernfalls leer), z.B. MeineFunktion. Siehe auch: IsFunc() |
A_ThisLabel [v1.0.46.16+] |
Der Name des Labels (Subroutine), das gerade ausgeführt wird (andernfalls leer), z.B. 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 Labels "hineinfällt"; in diesem Fall behält A_ThisLabel den 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 von AutoHotkey, mit der das Skript ausgeführt wird, z.B. 1.0.22. Im Falle eines kompilierten Skripts enthält diese Variable die Version, mit der das Skript ursprünglich kompiliert wurde. Der Aufbau der Versionsnummer erlaubt es, mit ">" oder ">=" zu prüfen, ob A_AhkVersion größer als eine bestimmte Mindestversionsnummer ist. Zum Beispiel: if A_AhkVersion >= 1.0.25.07 . Siehe auch: #Requires und VerCompare() |
A_AhkPath |
Für unkompilierte oder eingebettete Skripte: Der vollständige Pfadname der EXE-Datei, mit der das aktuelle Skript gerade ausgeführt wird. Zum Beispiel: C:\Program Files\AutoHotkey\AutoHotkey.exe Für kompilierte Skripte, die auf einer BIN-Datei basieren, wird der Wert ermittelt, indem das Installationsverzeichnis aus der Registry gelesen und "\AutoHotkey.exe" angefügt wird. 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+]: Für kompilierte Skripte, 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 (was als falsch angesehen wird), wenn Zeichenketten im ANSI-Format (8-Bit) sind. Das Format der Zeichenketten richtet sich nach der Version von AutoHotkey.exe, mit der das Skript ausgeführt wird, oder, falls es kompiliert wurde, nach der BIN-Datei, mit der es kompiliert wurde. Bei ANSI-EXE-Dateien 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 diese Variable immer definiert und schreibgeschützt. |
A_IsCompiled | Enthält 1, wenn das Skript als kompilierte EXE-Datei ausgeführt wird, andernfalls eine leere Zeichenkette (was als falsch angesehen wird). 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 diese Variable immer definiert und schreibgeschützt. |
A_ExitReason | Der aktuellste Grund für die Beendigung des Skripts. Diese Variable ist leer, es sei denn, das Skript hat eine OnExit-Subroutine, die gerade ausgeführt wird oder mindestens einmal durch einen Exitversuch aufgerufen wurde. Einzelheiten finden Sie unter OnExit. |
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, verwenden 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 des Jahres (1-366). Der Wert enthält keine führenden Nullen, z.B. wird 9 abgerufen, nicht 009. Um einen Wert mit führenden Nullen abzurufen, verwenden Sie folgendes: FormatTime, AusgabeVar, , YDay0 . |
A_YWeek | Aktuelles Jahr und aktuelle Kalenderwoche (z.B. 200453) gemäß ISO 8601. Um das Jahr von der Woche zu trennen, verwenden 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. Andernfalls ist sie die letzte Woche des Vorjahres und die nächste Woche die erste Woche des neuen Jahres. |
A_Hour | Die aktuelle 2-stellige Stunde (00-23) im 24-Stunden-Format. Um die Zeit im 12-Stunden-Format mit einem AM/PM-Indikator abzurufen, gehen Sie wie folgt vor: 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). Die führenden Nullen können z.B. wie folgt entfernt werden: 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 verwenden, um das Datum und/oder die Uhrzeit gemäß Ihrer aktuellen Sprach- und Regionseinstellungen zu formatieren. |
A_NowUTC | Die aktuelle koordinierte Weltzeit (engl. Coordinated Universal Time, kurz UTC) im YYYYMMDDHH24MISS-Format. UTC ist grundsätzlich dasselbe wie die mittlere Greenwich-Zeit (engl. Greenwich Mean Time, kurz GMT). |
A_TickCount | Die seit dem Systemstart verstrichene Zeit in Millisekunden, bis zu einem Maximum von 49,7 Tagen. Um diese verstrichene Zeit zu messen, speichern Sie A_TickCount in eine Variable und subtrahieren Sie diese später vom aktuellen A_TickCount-Wert. Zum Beispiel: StartZeit := A_TickCount Sleep, 1000 VerstricheneZeit := A_TickCount - StartZeit MsgBox, %VerstricheneZeit% Millisekunden sind verstrichen. Wenn Sie eine höhere Genauigkeit als die 10 ms von A_TickCount benötigen, verwenden Sie QueryPerformanceCounter(). |
Variable | Beschreibung |
---|---|
A_IsSuspended | Enthält 1, wenn das Skript suspendiert ist, andernfalls 0. |
A_IsPaused [v1.0.48+] |
Enthält 1, wenn der Thread direkt unterhalb des aktuellen Threads pausiert ist, andernfalls 0. |
A_IsCritical [v1.0.48+] |
Enthält 0, wenn Critical im aktuellen Thread ausgeschaltet ist. Andernfalls enthält A_IsCritical einen Integer größer als 0, nämlich das von Critical verwendete Meldungsüberprüfintervall. Da Critical 0 den kritischen Status eines Threads ausschaltet, kann der aktuelle Status von Critical via Alt_IsCritical := A_IsCritical gespeichert und später via Critical %Alt_IsCritical% wiederhergestellt werden. |
A_BatchLines | (oder A_NumBatchLines) Der aktuell via SetBatchLines gesetzte Wert. Beispiele: 200 oder 10ms (abhängig vom Format). |
A_ListLines [v1.1.28+] |
Enthält 1, wenn ListLines eingeschaltet ist, andernfalls 0. |
A_TitleMatchMode | Der aktuell via SetTitleMatchMode gesetzte Modus (1, 2, 3 oder RegEx). |
A_TitleMatchModeSpeed | Die aktuell via SetTitleMatchMode gesetzte Übereinstimmungsgeschwindigkeit (Fast oder Slow). |
A_DetectHiddenWindows | Der aktuell via DetectHiddenWindows gesetzte Modus (On oder Off). |
A_DetectHiddenText | Der aktuell via DetectHiddenText gesetzte Modus (On oder Off). |
A_AutoTrim | Der aktuell via AutoTrim gesetzte Modus (On oder Off). |
A_StringCaseSense | Der aktuell via StringCaseSense gesetzte Modus (On, Off oder Locale). |
A_FileEncoding | [AHK_L 46+]: Enthält die Standardkodierung für verschiedene Befehle; siehe FileEncoding. |
A_FormatInteger | Das aktuell via SetFormat gesetzte Integer-Format (H oder D). [AHK_L 42+]: Kann auch ein kleines h enthalten. |
A_FormatFloat | Das aktuell via SetFormat gesetzte Floating-Point-Format. |
A_SendMode | [v1.1.23+]: Der aktuell via SendMode gesetzte Modus (Event, Input, Play oder InputThenPlay). |
A_SendLevel | [v1.1.23+]: Die aktuelle SendLevel-Einstellung (ein Integer im Bereich von 0 bis 100). |
A_StoreCapsLockMode | [v1.1.23+]: Der aktuell via SetStoreCapsLockMode gesetzte Modus (On oder Off). |
A_KeyDelay A_KeyDuration |
Die aktuell via SetKeyDelay gesetzte Verzögerung oder Dauer (immer dezimal, nicht hexadezimal). A_KeyDuration benötigt [v1.1.23+]. |
A_KeyDelayPlay A_KeyDurationPlay |
Die aktuell via SetKeyDelay gesetzte Verzögerung oder Dauer für den SendPlay-Modus (immer dezimal, nicht hexadezimal). Benötigt [v1.1.23+]. |
A_WinDelay | Die aktuell via SetWinDelay gesetzte Verzögerung (immer dezimal, nicht hexadezimal). |
A_ControlDelay | Die aktuell via SetControlDelay gesetzte Verzögerung (immer dezimal, nicht hexadezimal). |
A_MouseDelay A_MouseDelayPlay |
Die aktuell via SetMouseDelay gesetzte Verzögerung (immer dezimal, nicht hexadezimal). A_MouseDelay gilt für den traditionellen SendEvent-Modus, A_MouseDelayPlay für den SendPlay-Modus. A_MouseDelayPlay benötigt [v1.1.23+]. |
A_DefaultMouseSpeed | Die aktuell via SetDefaultMouseSpeed gesetzte Geschwindigkeit (immer dezimal, nicht hexadezimal). |
A_CoordModeToolTip A_CoordModePixel A_CoordModeMouse A_CoordModeCaret A_CoordModeMenu |
[v1.1.23+]: Der aktuell via CoordMode gesetzte Modus (Window, Client oder Screen). |
A_RegView | [v1.1.08+]: Die aktuell via SetRegView gesetzte Registry-Ansicht. |
A_IconHidden | Enthält 1, wenn das Tray-Symbol gerade versteckt ist, andernfalls 0. Das Symbol kann mit der #NoTrayIcon-Direktive oder dem Menu-Befehl versteckt werden. |
A_IconTip | Leer, es sei denn, für das Tray-Symbol wurde via Menu, Tray, Tip ein benutzerdefinierter Tooltip definiert, dann ist der Text des Tooltips enthalten. |
A_IconFile | Leer, es sei denn, ein benutzerdefiniertes Tray-Symbol wurde 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. Andernfalls 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. Dies ist nützlich, um festzustellen, ob der Benutzer abwesend ist. Physische Benutzereingaben sowie künstlich erzeugte Eingaben durch ein beliebiges Programm oder Skript (z.B. via Send- oder MouseMove-Befehl) setzen diesen Wert auf 0 zurück. Da dieser Wert tendenziell in 10er-Schritten ansteigt, sollte nicht geprüft werden, ob er mit einem anderen Wert übereinstimmt. Prüfen Sie stattdessen, ob dieser Wert größer oder kleiner als ein anderer Wert ist. Zum Beispiel: If A_TimeIdle > 600000 MsgBox, Die letzte Aktivität war vor 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, d.h. diese Variable reagiert nur auf physische Ereignisse. 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 der physischen Eingabe beeinflusst (die Eingabe des anderen/nicht-installierten Hooks hat weder physisch noch künstlich eine Auswirkung). |
A_TimeIdleKeyboard [v1.1.28+] |
Wenn der Tastatur-Hook installiert ist, enthält diese Variable die Zeit in Millisekunden, die seit der letzten physischen Tastatureingabe verstrichen ist. Andernfalls ist diese Variable äquivalent zu A_TimeIdle. |
A_TimeIdleMouse [v1.1.28+] |
Wenn der Maus-Hook installiert ist, enthält diese Variable die Zeit in Millisekunden, die seit der letzten physischen Mauseingabe verstrichen ist. Andernfalls ist diese Variable äquivalent zu A_TimeIdle. |
Variable | Beschreibung |
---|---|
A_DefaultGui [v1.1.23+] | Name oder Nummer der Standard-GUI des aktuellen Threads. |
A_DefaultListView [v1.1.23+] | Variablenname oder HWND des ListView-Steuerelements, mit dem die ListView-Funktionen arbeiten. Wenn die Standard-GUI keine ListView hat, ist diese Variable leer. |
A_DefaultTreeView [v1.1.23+] | Variablenname oder HWND des TreeView-Steuerelements, mit dem die TreeView-Funktionen arbeiten. Wenn die Standard-GUI keine TreeView hat, ist diese Variable leer. |
A_Gui | Name oder Nummer der 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 oder die Beschriftung des Steuerelements, bis zu einer Länge von 63 Zeichen (dies wird meist verwendet, um zu vermeiden, jeder Schaltfläche einen Variablennamen zu geben). 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 durch die 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 durch die 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. Andernfalls enthält sie eine der folgenden Zeichenketten: Normal: Das Ereignis wurde via Linksklick oder Tastendrücke (z.B. ↑, →, ↓, ←, Tab, Leer oder unterstrichene Tastaturkurzbefehle) 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, die Subroutine wird 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: Siehe GuiContextMenu, GuiDropFiles, Slider, MonthCal, ListView und TreeView. |
A_EventInfo | Enthält zusätzliche Informationen über die folgenden Ereignisse:
|
Hinweis: Jeder Thread hat seine eigenen Werte für A_Gui, A_GuiControl, A_GuiX/Y, A_GuiEvent und A_EventInfo, aber nicht für Variablen wie A_ThisHotkey. Wenn also ein Thread von einem anderen unterbrochen wird, sieht er bei seiner Wiederaufnahme immer noch seine ursprünglichen/korrekten Werte in diesen Variablen.
Variable | Beschreibung |
---|---|
A_ThisMenuItem | Der Name des zuletzt ausgewählten benutzerdefinierten Menüpunkts (andernfalls 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 angibt. Der erste Menüpunkt ist 1, der zweite 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 (andernfalls leer), z.B. #z. Dieser Wert ändert sich, wenn der aktuelle Thread von einem anderen Hotkey oder Hotstring unterbrochen wird, daher 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 festen Namen, der sich aus dem Tastennamen und der Reihenfolge der Modifikatorsymbolen zusammensetzt und von allen Varianten des Hotkeys verwendet wird. Jeder neu erstellte Hotstring - entweder via Hotstring-Funktion oder Zweifach-Doppelpunkt-Label - erhält einen festen Namen, der sich aus der auslösenden Zeichenkette und der Sequenz von Optionszeichen zusammensetzt. Siehe auch: A_ThisLabel |
A_PriorHotkey | Dasselbe wie oben, aber für den vorherigen Hotkey. Andernfalls 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 im Tastenverlauf kein entsprechender Tastendruck gefunden werden kann. Alle via Skript erzeugten Eingaben werden ignoriert. Bevor diese Variable verwendet 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 ist -1, wenn A_ThisHotkey leer ist. |
A_TimeSincePriorHotkey | Die Zeit in Millisekunden, die seit dem Drücken von A_PriorHotkey verstrichen ist. Dieser Wert ist -1, 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 erforderlich war (wegen der *-Option), ist diese Variable leer. |
Variable | Beschreibung |
---|---|
ComSpec [v1.0.43.08+] A_ComSpec [v1.1.28+] |
Enthält dieselbe Zeichenkette wie die ComSpec-Umgebungsvariable, was üblicherweise der vollständige Pfad zur ausführbaren Datei der Eingabeaufforderung (cmd.exe) ist. Diese Variable wird oft mit Run/RunWait verwendet. 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 Orte 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 Typ des Betriebssystems. Da AutoHotkey 1.1 nur NT-basierte Betriebssysteme unterstützt, enthält diese Variable immer WIN32_NT. Ältere Versionen von AutoHotkey geben WIN32_WINDOWS zurück, wenn Windows 95/98/ME verwendet wird. |
A_OSVersion | Enthält je nach Windows-Version eine der folgenden Zeichenketten: WIN_7 in [AHK_L 42+], WIN_8 in [v1.1.08+], WIN_8.1 in [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 Eigenschaftenfenster der AutoHotkey-EXE-Datei oder des kompilierten Skripts eingeschaltet wurde. [v1.1.20+]: Wenn die Systemversion nicht als eine der oben genannten erkannt wird, enthält die Variable eine Zeichenkette im Format "Haupt.Neben.Build". Zum Beispiel ist ; Das folgende Beispiel ist obsolet, da diese Systeme nicht mehr unterstützt werden. if A_OSVersion in WIN_NT4,WIN_95,WIN_98,WIN_ME ; Hinweis: Keine Leerzeichen vor oder nach den Kommas. { MsgBox Dieses Skript benötigt Windows 2000/XP oder höher. ExitApp } |
A_Is64bitOS | [v1.1.08+]: Enthält 1 (true), wenn das System 64-Bit ist, oder 0 (false), wenn es 32-Bit ist. |
A_PtrSize | [AHK_L 42+]: Enthält die Größe eines Pointers in Bytes. Dieser Wert ist entweder 4 (32-Bit) oder 8 (64-Bit), abhängig davon, mit welcher EXE-Datei das Skript ausgeführt wird. |
A_Language | Die Standardsprache des Systems als 4-stelliger 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 unterstützen. |
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 Startmenü-Ordners "Programme" des aktuellen Benutzers. Zum Beispiel: C:\Users\<Benutzer>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs |
A_ProgramsCommon |
Der vollständige Pfadname des Startmenü-Ordners "Programme" aller Benutzer. Zum Beispiel: C:\ProgramData\Microsoft\Windows\Start Menu\Programs |
A_Startup |
Der vollständige Pfadname des Startmenü-Ordners "Autostart" des aktuellen Benutzers. Zum Beispiel: C:\Users\<Benutzer>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
A_StartupCommon |
Der vollständige Pfadname des Startmenü-Ordners "Autostart" aller Benutzer. Zum Beispiel: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup |
A_MyDocuments |
Der vollständige Pfadname des Ordners "Dokumente", der beliebige Dateien (vorzugsweise Dokumente) des aktuellen Benutzers enthält. Im Gegensatz zu den meisten anderen ähnlichen Variablen wird, wenn der Ordner das Stammverzeichnis eines Laufwerks ist, der umgekehrte Schrägstrich am Ende weggelassen (z.B. C:\Users\<Benutzer>\Documents |
A_IsAdmin | Enthält 1, wenn der aktuelle Benutzer Adminrechte hat, andernfalls 0. Wenn das Skript sich selbst mit Adminrechten neu starten soll (oder um diese Rechte vom Benutzer via Dialogfenster einzufordern), verwenden Sie Run *RunAs. Beachten Sie aber, dass die Skriptausführung als Administrator dazu führt, dass alle Programme, die vom Skript gestartet werden, ebenfalls 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 Dimensionen von nicht-primären Bildschirmen abgerufen werden. Um stattdessen die Breite und Höhe des gesamten Desktops abzurufen (selbst wenn er sich über mehrere Bildschirme erstreckt), verwenden Sie folgendes Beispiel: SysGet, VirtuelleBreite, 78 SysGet, VirtuelleHöhe, 79 Mit SysGet kann auch der Arbeitsbereich eines Bildschirms abgerufen werden. Dieser Bereich ist in der Regel kleiner als der gesamte Bildschirmbereich, da die Taskleiste und andere registrierte Desktopsymbolleisten ausgeschlossen werden. |
A_ScreenDPI [v1.1.11+] | Die Anzahl der Pixel pro logischem Zoll entlang der Bildschirmbreite. In einem System mit mehreren anzeigefähigen Bildschirmen ist dieser Wert für alle Bildschirme gleich. 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 enthält eines der folgenden Wörter: AppStarting, Arrow, Cross, Help, IBeam, Icon, No, Size, SizeAll, SizeNESW, SizeNS, SizeNWSE, SizeWE, UpArrow, Wait, Unknown. Die Großbuchstaben hinter Size sind Himmelsrichtungen, z.B. NESW = NorthEast+SouthWest (Nordost+Südwest). 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 in einem sich selbst aktualisierenden Tooltip an. Beachten Sie, dass einige Fenster (z.B. bestimmte Versionen von MS Word) immer die gleichen Positionsdaten melden, egal wo sich der Textcursor gerade befindet. #Persistent SetTimer, TextcursorAbfragen, 100 return TextcursorAbfragen: ToolTip, X%A_CaretX% Y%A_CaretY%, A_CaretX, A_CaretY - 20 return |
Clipboard | Kann verwendet 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 bestimmter Befehle zu kennzeichnen. Einzelheiten finden Sie unter ErrorLevel. |
A_LastError | Das Ergebnis der Systemfunktion GetLastError() oder des letzten indirekten Aufrufs eines COM-Objekts. Einzelheiten finden Sie unter DllCall() und Run/RunWait. |
True False |
Enthalten 1 und 0. Diese können verwendet werden, um die Lesbarkeit eines Skripts zu verbessern. Einzelheiten finden Sie unter Boolesche Werte. |
Variable | Beschreibung |
---|---|
A_Index | Enthält die Nummer der aktuellen Schleifenwiederholung (ein 64-Bit-Integer). Sie enthält 1, wenn der Körper der Schleife zum ersten Mal ausgeführt wurde. Beim zweiten Mal enthält sie 2 und so weiter. Wenn eine innere Schleife von einer äußeren Schleife umschlossen ist, hat die innere Schleife Vorrang. A_Index funktioniert in jeder Schleifenvariante, enthält aber außerhalb einer Schleife den Wert 0. |
A_LoopFileName, etc. | Diese und verwandte Variablen sind nur für Datei-Schleifen relevant. |
A_LoopRegName, etc. | Diese und verwandte Variablen sind nur für Registry-Schleifen relevant. |
A_LoopReadLine | Siehe dateilesende Schleife. |
A_LoopField | Siehe parsende Schleife. |
Var := ""
).