Neue Features von AutoHotkey_L

Dieses Dokument beschreibt Features, die zum AutoHotkey_L-Entwicklungszweig von AutoHotkey, jetzt bekannt als "AutoHotkey 1.1", hinzugefügt wurden.

Achtung: Dieses Dokument wurde in den letzten Jahren vernachlässigt. Es ist daher möglich, dass einige der neueren Änderungen nicht enthalten sind.

Kontrollfluss

Feature Beschreibung
Break LoopLabelUnterbricht von einer inneren Schleife heraus eine äußere Schleife.
Continue LoopLabelÜberspringt von einer inneren Schleife heraus den aktuellen Durchlauf der äußeren Schleife.
For x,y in zDurchläuft den Inhalt eines Objekts.
Loop UntilWiederholt Anweisungen, bis eine Bedingung wahr ist. Anwendbar auf jede Schleifenvariante.
Try...Catch...FinallyErmöglicht eine strukturierte Ausnahmebehandlung.
ThrowLöst eine Ausnahme aus.

Befehle

Feature Beschreibung
FileEncodingBestimmt die Standardkodierung für FileRead, FileReadLine, Loop Read, FileAppend und FileOpen().
Siehe auch: Textkodierungen
GuiSiehe GUI-Erweiterungen weiter unten.
IniRead/Write/DeleteLiest, schreibt oder löscht ganze Sektionen, oder ruft eine Liste aller Sektionsnamen ab.
Menu, IconSetzt oder entfernt das Symbol eines Menüpunkts.
RunVerbesserungen hinsichtlich dessen, wie Parameter geparst werden.
SendInput {U+nnnn}Sendet ein Unicode-Zeichen. Unicode-Zeichen können direkt in Unicode-Builds verwendet werden.
SendLevelBestimmt, welche künstlichen Tastatur- oder Mausereignisse von Hotkeys und Hotstrings ignoriert werden.
SetFormat, IntegerFast, h|HBestimmt, ob das Hexadezimalformat klein- oder großgeschrieben wird.
SetRegView, RegAnsichtErmöglicht Registry-Befehlen in einem 32-Bit-Skript den Zugriff auf die 64-Bit-Registry-Ansicht und umgekehrt.
Transform, HTMLFührt Codepage- oder HTML-Umwandlungen durch.
WinGet, ..., ProcessPathRuft den kompletten Pfad und Namen des Prozesses eines Fensters ab.

Direktiven

Feature Beschreibung
#If AusdruckVergleichbar mit #IfWinActive, aber für beliebige Ausdrücke.
#IfTimeoutBestimmt die maximale Zeit, die zur Auswertung eines einzelnen #If-Ausdrucks aufgebracht wird.
#MenuMaskKeyÄndert die Taste, mit der Win- oder Alt-Taste-Oben-Ereignisse maskiert werden.
#Include <Bibl>Bindet eine Skriptdatei aus einem Funktionsbibliotheksordner ein.
#InputLevelBestimmt, welche künstlichen Tastatur- oder Mausereignisse von Hotkeys und Hotstrings ignoriert werden.
#WarnAktiviert oder deaktiviert bestimmte Warnungen, die auf mögliche Fehler vonseiten des Programmierers hinweisen.

Funktionen

Feature Beschreibung
ComObjActiveRuft ein registriertes COM-Objekt ab.
ComObjArrayErstellt ein SafeArray, das für COM verwendet werden kann.
ComObjConnectVerbindet die Ereignisquellen eines COM-Objekts mit Funktionen, die ein bestimmtes Präfix haben.
ComObjCreateErstellt ein COM-Objekt.
ComObjectWrappt einen Wert und Typ zur Übergabe als Parameter oder Rückgabewert.
ComObjEnwrap/UnwrapWrappt/entwrappt ein COM-Objekt.
ComObjErrorAktiviert oder deaktiviert COM-spezifische Fehlermeldungen.
ComObjFlagsErmittelt oder ändert Flags, die das Verhalten eines COM-Wrapper-Objekts kontrollieren.
ComObjGetGibt eine Referenz zu einem Objekt zurück, das von einer COM-Komponente bereitgestellt wird.
ComObjMissingErstellt ein Objekt für "fehlende Parameter" zur Übergabe an eine COM-Methode.
ComObjParameterWrappt einen Wert und Typ zur Übergabe als Parameter.
ComObjQueryFragt ein COM-Objekt nach einem Interface oder Service ab.
ComObjTypeRuft Typinformationen eines COM-Objekts ab.
ComObjValueRuft den Wert oder Pointer ab, der in einem COM-Wrapper-Objekt hinterlegt ist.
ExceptionErstellt ein Exception-Objekt für Throw (und ermöglicht eingeschränkten Zugriff auf die Aufrufliste).
FileOpenErmöglicht eine objektorientierte Datei-Ein-/Ausgabe.
FuncRuft eine Funktionsreferenz ab.
GetKeyName/VK/SCRuft den Namen/Text, virtuellen Tastencode oder Scancode einer Taste ab.
InStrSucht nach einem bestimmten Vorkommen einer Zeichenkette, beginnend von links oder rechts.
IsByRefErmittelt, ob für einen bestimmten ByRef-Parameter eine Variable bereitgestellt wurde.
IsObjectErmittelt, ob ein Wert ein Objekt ist.
StrPut / StrGetKopiert eine Zeichenkette auf eine oder von einer Speicheradresse (optional mit Codepage-Umwandlung).
TrimEntfernt bestimmte Zeichen vom Anfang und/oder Ende einer Zeichenkette.
RegEx (?CNum:Func)Ruft bei der Auswertung eines RegEx-Suchmusters eine Funktion auf.
FunktionsbibliothekenNeue "lokale Bibliothek" und #Include <BiblName>.
Variadische FunktionenFunktionen können mithilfe eines Arrays eine beliebige Anzahl von Parametern akzeptieren.
Statische InitialisiererStatische Variablen können nun mit einem beliebigen Ausdruck initialisiert werden.

Objekte

Feature Beschreibung
AllgemeinEine allgemeine Abhandlung über das Verhalten und die Nutzung von Objekten.
ObjektAssoziative Arrays, die mit anderen Funktionalitäten erweiterbar sind.
EnumeratorErmöglicht das Enumerieren einer Sammlung von Elementen.
FileErmöglicht eine Schnittstelle für den Zugriff auf eine Datei. FileOpen() gibt ein Objekt dieses Typs zurück.
FuncRepräsentiert eine benutzerdefinierte oder interne Funktion, die vom Skript aufgerufen werden kann.
ComObjectSiehe ComObj-Funktionen oben.

Variablen

Feature Beschreibung
A_Is64bitOSEnthält 1 (true), wenn das System 64-Bit ist, oder 0 (false), wenn es 32-Bit ist.
A_IsUnicodeIn Unicode-Builds enthält diese Variable eine 1 (True). In ANSI-Builds wird sie nicht gesetzt, was faktisch False bedeutet.
A_FileEncodingEnthält die Standardkodierung für verschiedene Befehle; siehe FileEncoding.
A_OSVersionUnterstützt Windows 7 und Windows 8; siehe A_OSVersion.
A_PriorKeyDer Name der Taste, die vor dem Drücken oder Loslassen der letzten Taste gedrückt wurde ... (Mehr)
A_PtrSizeEnthält die Größe eines Pointers in Bytes. Entweder 4 (32-Bit) oder 8 (64-Bit).
A_RegViewDie aktuell gesetzte Registry-Ansicht von SetRegView.
A_ScriptHwndDie HWND-Nummer (eindeutige ID) des versteckten Hauptfensters des Skripts.

Datentypen

Feature Beschreibung
PtrÄquivalent zu Int in 32-Bit-Builds und Int64 in 64-Bit-Builds. Wird unterstützt von DllCall(), NumPut() und NumGet().
AStr, WStrWird nur von DllCall() unterstützt; siehe Skriptkompatibilität.

Unicode

Feature Beschreibung
KompatibilitätWie man mit Unicode in DllCall() usw. umgeht.
SkriptdateienDie Nutzung von Unicode in Skriptdateien.
SendInputDie Nutzung von Unicode in Verbindung mit SendInput.

Sonstiges

Feature Beschreibung
ahk_exeFenster können über den Namen oder Pfad des übergeordneten Prozesses (EXE-Datei) identifiziert werden.
DebuggingInteraktive Debugging-Features (zeilenweise Ausführung usw.).
FehlerbehandlungTry/Catch/Throw und erhöhter Nutzwert für A_LastError.
GUI-VerbesserungenZahlreiche Verbesserungen am Gui-Befehl und ähnlichem.
SymbolunterstützungRessourcenidentifikatoren und verbesserte Unterstützung für verschiedene Symbolgrößen.
Sonstige ÄnderungenÄnderungen bzgl. der Skriptkompatibilität.
VersionsverlaufVerlauf der AutoHotkey_L-Revisionen.

Fehlerbehandlung

Viele Befehle unterstützen Try/Catch statt ErrorLevel für die Fehlerbehandlung. Zum Beispiel:

try
{
    FileCopy, Datei1.txt, C:\Ordner
    FileDelete, C:\Ordner\Alt.txt
}
catch
    MsgBox Es ist ein Fehler aufgetreten!

Darüber hinaus setzen die folgenden Befehle nun A_LastError, um das Debuggen zu unterstützen: FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version, FileSetAttrib/Time, FileCreateDir, RegRead, RegWrite, RegDelete.

Funktionsbibliotheken

Neben der Benutzerbibliothek in %A_MyDocuments%\AutoHotkey\Lib und der Standardbibliothek im AutoHotkey-Verzeichnis können nun Funktionen auch aus der "lokalen Bibliothek" %A_ScriptDir%\Lib automatisch inkludiert werden. Weitere Informationen finden Sie unter Funktionsbibliotheken.

#Include <BiblName> Inkludiert explizit eine Bibliotheksdatei, die sich in einer der Funktionsbibliotheken befinden kann.

GUI-Verbesserungen

Folgende Verbesserungen wurden am Gui-Befehl und ähnlichem vorgenommen:

Statische Variablen

Statische Variablen können nun mit einem beliebigen Ausdruck initialisiert werden. Zum Beispiel:

Sleep 500
MsgBox % "Seit dem Start des Skripts sind " Time() "ms vergangen."
Time() {
    static Tick := A_TickCount
    return A_TickCount - Tick
}

Textkodierungen

FileRead, FileReadLine, Loop Read und FileAppend unterstützen den Großteil der von Windows unterstützten Textkodierungen, nicht nur die Standard-ANSI-Codepage des Systems. FileEncoding kann verwendet werden, um die Standardkodierung zu bestimmen. FileRead und FileAppend können diese Standardkodierung wie folgt überschreiben:

FileRead, AusgabeVar, *Pnnn DateiName
FileAppend , Text, DateiName, Kodierung

Während nnn ein numerischer Codepageidentifikator sein muss, folgt Kodierung dem gleichen Format wie FileEncoding.

Siehe auch: Skriptkompatibilität

Variadische Funktionen und Funktionsaufrufe

Variadische Funktionen können mithilfe eines Arrays eine variable Anzahl von Parametern akzeptieren, während variadische Funktionsaufrufe verwendet werden können, um eine variable Anzahl von Parametern an einer Funktion zu übergeben.

Verbesserte Unterstützung von Symbolen

Ungewöhnliche Größen

Es können beliebig große Symbolressourcen, die vom Betriebssystem unterstützt werden, aus einer EXE-Datei extrahiert werden. Wenn mehrere Symbolressourcen mit unterschiedlichen Größen in einer Symbolgruppe vorhanden sind, wird automatisch die am besten geeignete Größe verwendet. Vor Revision 17 wurde eine beliebige Symbolressource vom System ausgewählt, die zunächst auf die systeminterne Standardgröße eines großen Symbols skaliert und anschließend wieder auf die gewünschte Größe skaliert wurde.

Ressourcenidentifikatoren

Negative Symbolnummern können verwendet werden, um eine Gruppensymbolressource innerhalb einer EXE-Datei zu identifizieren. Das folgende Beispiel zeigt, wie das Tray-Symbol mit dem Symbol ersetzt werden kann, das standardmäßig für die .ahk-Dateien verwendet wird:

Menu, Tray, Icon, %A_AhkPath%, -160