Änderungen und neue Features

Änderungen und neue Features, eingeführt durch den aktuellen Entwicklungszweig von AutoHotkey (auch bekannt als AutoHotkey_L), sind nachfolgend aufgelistet.

Ältere Änderungen können in Archivierte Änderungen gefunden werden.

1.1.24.05 - 3. Februar 2017

Behoben: WinSet AlwaysOnTop/Trans/TransColor funktioniert nun bei Fenstern mit 0 ExStyle.

1.1.24.04 - 17. Dezember 2016

Behoben: File.ReadNum() griff wiederholt auf alte Daten zu, wenn ein vorheriges File.Read() sein Leseprozess am Ende des Puffers gestoppt hat.

Verbessert: Puffer wird besser genutzt, wenn File.Read() das Ende der gepufferten Daten erreicht hat.

Behoben: GuiControl +Password benutzt in Windows XP und höher nun standardmäßig den schwarzen Punkt als Maskierungszeichen.

Behoben: GuiControl +/-Password bewirkt nun, dass das Steuerelement sofort neu gezeichnet wird.

1.1.24.03 - 19. November 2016

Behoben: COM-Ausnahmefehlermeldungen enden nicht mehr mit `r.

Behoben: {U+x} unterstützt nun Ergänzungszeichen (x > 0xFFFF).

Behoben: Klasseneigenschaften ohne get{} geben nicht mehr das interne Property-Objekt, sondern einen leeren Wert zurück, wenn die Klasse ein base hat, das keinen Wert für die Eigenschaft definiert. Eigenschaften in Klassen ohne base verhielten sich bereits korrekt.

Behoben: Die Hintergrundfarbe von Steuerelementen innerhalb eines Tab3-Steuerelements waren falsch, wenn die visuellen Styles im System deaktiviert sind (z. B. Windows Classic).

Behoben: Das Beenden eines Threads in Funktionen, die direkt von einem Ereignis aufgerufen werden, wurde korrigiert (z. B. OnExit-Funktionen). Dieser Bug hatte keine nennenswerte Auswirkung, außer im Entwicklungszweig v2-alpha.

Behoben: Der Debugger erkennt eine Trennung nun sofort (also wenn ein Klient zum Beispiel ohne Aufrufen von Stopp/Abtrennen terminiert).

Behoben: Der Debugger behandelt property_get -m 0 absofort als "unlimitiert", gemäß der DBGp-Spezifikation.

Behoben: Der Debugger erwartet nun base64 bei property_set -t integer/float, gemäß der DBGp-Spezifikation.

1.1.24.02 - 13. Oktober 2016

Hinzugefügt: Option Run with UI Access (mit UI-Access ausführen) für den Installer.

Hinzugefügt: Dokumentation für Automatische Größenanpassung von Tab3.

Folgende Tab3-Bugs wurden behoben:

Behoben: OnMessage wird lParam bei 32-Bit nun als vorzeichenlos übergeben.

Behoben: Gui Name : erlaubt nun Leerzeichen vor dem Doppelpunkt.

Behoben: Gui- oder GuiControl-Identifizierung via HWND kann nun mit einem negativen Wert erfolgen.

Behoben: ComObject unterdrückt nun Fehler, die durch Trennung von Ereignissen ausgelöst werden, nachdem das Skript das Objekt freigegeben hat.

Behoben: Gui Show verursachte eine Verkleinerung des Fensters, wenn es eine mehrzeilige Menüleiste hat.

Behoben: LV_InsertCol(n, Breite) bewirkte, dass sich der ListView-Scrollbalken auf einigen OS-Versionen nicht aktualisieren konnte.

Optimiert: Codegröße von FileRecycleEmpty.

1.1.24.01 - 2. August 2016

Geändert: Hotkey, If, Ausdruck löst nun einen Fehler aus, wenn der nicht-dokumentierte dritte Parameter benutzt wird.

Behoben: &&, || und der ternäre Operator geben nun jedes Objekt frei, das als Bedingung benutzt wurde, wie bei if (a.Unterobjekt && b).

Behoben: Gui/GuiControl konnte Radio-Buttons innerhalb eines Tab3-Steuerelements nicht markieren.

Behoben: FileCreateShortcut's Verknüpfung-Parameter kann in Windows 10 absofort einen relativen Pfad enthalten.

Behoben: Ein Tab3-Steuerelement mit aktivierter Theme-Option wird die benutzerdefinierte Farbe seiner Steuerelemente nicht länger überschreiben.

Behoben: Der Debugger behandelte Ablaufsteuerungsbefehle in einigen bestimmten Fällen nicht korrekt.

1.1.24.00 - 22. Mai 2016

Gravierende Änderungen:

Der Versuch, eine leere Variable oder einen Ausdruck, der zu einem leeren Wert führt, an SetTimer's Label-Parameter zu übergeben, wird absofort als Fehler eingestuft. Dieser Parameter darf weder leer sein noch fehlen.

Einmalig-laufende Timer werden nach ihrem Durchlauf automatisch gelöscht, wenn sie mit einem via Skript erstellten Objekt verbunden sind. Dadurch kann das Objekt freigegeben werden, wenn es vom Skript nicht länger benötigt wird, aber das bedeutet auch, dass die Periode und Priorität des Timers verworfen werden.

SetTimer, Hotkey, GuiControl und Menu überprüfen nun die minimale Parameteranzahl von Funktionen, die via Verweis übergeben wurden (nicht nur via Namen, wie in früheren Versionen). Wenn die Funktion zu viele Parameter benötigt, wird ein Fehler ausgelöst oder ErrorLevel gesetzt (je nach Bedarf).

Abwärtskompatible Änderungen:

Wenn SetTimer's Label-Parameter fehlt und A_ThisLabel leer ist, wird der aktuelle Timer (sofern vorhanden) verwendet.

Neue Features:

Hinzugefügt: Neue Tab-Steuerelementart Tab3, das viele Probleme löst, die bei den anderen Tab-Steuerelementarten vorkommen.

Fehlerbehebungen:

Behoben: GuiControl aktualisiert nun Steuerelemente beim Hinzufügen/Löschen von Tabs. Im Einzelnen:

Behoben: +Disabled/+Hidden verloren ihren Effekt bei Steuerelementen in einem Tab.

Behoben: Deaktivierte Tab-Steuerelemente ignorieren absofort STRG+TAB.

Behoben: Gui Tab ohne Parameter beginnt nun eine neue Radiogruppe, falls zutreffend. Gui Tab mit Parametern hatte bereits diesen Effekt.

1.1.23.07 - 20. Mai 2016

Behoben: Menu x, Insert, y, z, % Objekt verwendet nun das Objekt, anstatt es zu ignorieren.

Behoben: Menu x, Add, :item text, % Objekt verwendet nun das Objekt, anstatt nach einem Untermenü zu suchen.

1.1.23.06 - 15. Mai 2016

Behoben: break label ließ das Programm abstürzen, wenn diese Anweisung direkt in ihrer Zielschleife verschachtelt wurde.

1.1.23.05 - 27. März 2016

Behoben: InputBox, MsgBox, FileSelectFile und FileSelectFolder sendeten ein ungewolltes ALT-UP, wenn ALT unten war. Der Grund war ein Fehler mit dem STRG/UMSCHALT-Workaround in v1.1.22.01.

Verbessert: Der STRG/UMSCHALT-Workaround "maskiert" nicht länger unnötigerweise die WIN-Taste, wenn STRG, UMSCHALT oder ALT unten ist.

1.1.23.04 - 26. März 2016

Behoben: LV_Modify unterstützt nun das Weglassen der Optionen, wie bei LV_Modify(r,, Spalte1).

1.1.23.03 - 12. März 2016

Behoben: __Delete-Meta-Funktionen hatten Ausnahmen fälschlicherweise unterdrückt oder vorzeitig ausgelöst, wenn sie während der Ausnahmeweitergabe aufgerufen worden sind.

Behoben: Ladezeiterkennung von Funktionsaufrufen, wo ein Pflichtparameter leer ist, wie bei fn(x,,y).

1.1.23.02 - 12. März 2016

Behoben: RegDelete löschte den kompletten Key, anstatt den Standardwert.

Codepflege; kleine Verbesserung der Code-Größe.

1.1.23.01 - 24. Januar 2016

Behoben: Theoretisches Problem beim Laden von Skripten mit merkwürdigen/sehr langen Pfaden.

Ahk2Exe: Unicode in kompilierten Skripten behoben (fehlerhaft seit v1.1.23.00).

1.1.23.00 - 16. January 2016

Hinzugefügt: Unterbefehl Menu Insert.

Hinzugefügt: MenuGetHandle().

Hinzugefügt: MenuGetName().

Hinzugefügt: Menüpunktoptionen: Radio, Right, Break und BarBreak.

Verbessert: Der Menu-Befehl erlaubt das Identifizieren von Menüpunkten anhand ihrer Position: 1&

Hinzugefügt: LoadPicture().

Hinzugefügt: hicon/hbitmap: Syntax, um Handles an Befehlen zu übergeben, die normalerweise Bilder aus einer Datei laden.

Hinzugefügt: Neue Built-In-Variablen: A_CoordModeToolTip/Pixel/Mouse/Caret/Menu, A_DefaultGui, A_DefaultListView, A_DefaultTreeView, A_KeyDelayPlay, A_KeyDuration/Play, A_MouseDelayPlay, A_SendLevel, A_SendMode und A_StoreCapslockMode.

Hinzugefügt: Die Hotkey-Option Ix, um die Eingabestufe der Hotkey-Variante auf x zu setzen.

Verbessert: Picture-Steuerelement unterstützt nun BackgroundTrans in Verbindung mit Symbolen.

Verbessert: Das Picture-Steuerelement flackert weniger, wenn große Bilder geladen werden.

Kleine Optimierungen am Menu-Code und beim Nachschlagen von Built-In-Vars.

Behoben: Umwandlungen von Menüpunkten zu Trennlinien, und umgekehrt.

Behoben: A_ThisMenuItemPos unterstützt nun doppelte Menüpunktnamen.

Behoben: Untermenüs wurden manchmal nicht neu erstellt, nachdem ein Menü gelöscht wurde.

Behoben: AutoHotkeyXXX.exe öffnet nun AutoHotkey.chm, und nicht AutoHotkeyXXX.chm.

1.1.22.09 - 11. November 2015

Behoben: Einige Probleme mit SetTimer Delete.

1.1.22.08 - 11. November 2015

Behoben: For-Loop übergibt die Kontrolle nun korrekt, wenn _NewEnum/Next eine Ausnahme auslöst.

Behoben: Finally löst die ausstehende Ausnahme erst aus, wenn all seine Anweisungen ausgewertet wurden, und nicht schon beim ersten Aufruf einer Built-In-Funktion.

Behoben: Erkennung von ungültigen Sprüngen aus Finally-Blöcken während der Ladezeit (fehlerhaft seit v1.1.20).

1.1.22.07 - 27. September 2015

Behoben: Gui-Steuerelement-Optionen w-1 und h-1 schlugen fehl, wenn DPI größer als 150 % war und das Gui kein -DPIScale hatte.

Behoben: ~Taste up-Hotkeys werden absofort kein automatisches Send {Taste down} mehr durchführen. Diese Problematik trat nur auf, wenn der Hotkey eingeschaltet wurde, nachdem die Taste nach unten gedrückt wurde.

1.1.22.06 - 13. September 2015

Behoben: Input und Hotstrings erkennen nun Unicode/Nicht-Tasten-Zeichen-Ereignisse.

Behoben: Die Auto-Größenanpassung von Edit-Steuerelementen schließt die letzte Zeile nun mit ein, wenn sie leer ist.

Behoben: Out-of-Memory-Handhabung in ComObj-Funktionen.

Behoben: ComObjArray ignoriert absofort überschüssige Parameter, anstatt ein Absturz zu verursachen (gilt nur für dynamische Aufrufe).

Behoben: GuiControl fügt Tabs nun an (anstatt sie davor zu setzen), so wie es auch dokumentiert ist.

Behoben: XP64-Unterstützung.

1.1.22.05 - 10. September 2015

Behoben: Symbole mit nicht-numerischen IDs werden nicht länger in sub-optimaler Qualität geladen.

Behoben: Gui Destroy gab Funktionsobjekte nicht frei, die mit der Option +g gesetzt worden sind.

Behoben: Gui Show wird nicht länger versuchen, ein untergeordnetes GUI gewaltsam zu aktivieren.

Behoben: Feststell-/Num-/Rollen-Status wird nun gesetzt, während die Taste unten ist.

Behoben: Gui Color verursachte falsche Textfarbe (üblicherweise schwarz).

Geändert: Gui Show wurde geändert, um Widrigkeiten beim sofortigen Ausführen von GuiSize zu verbessern.

Für Entwickler:

1.1.22.04 - 19. August 2015

Behoben: ObjRawSet() kann absofort nichts zurückgeben.

Hinzugefügt: supportedOS-Tag für Windows 10 im EXE-Manifest (verhindert einige Probleme mit dem Programmkompatibilitätsassistenten und Ähnliches).

Hinzugefügt: Erkennung von Syntaxfehlern nach ")" in einer Funktionsdeklaration.

1.1.22.03 - 12. Juli 2015

Behoben: A_EndChar gab einen gekürzten Wert für Unicode-Endungszeichen zurück.

Kleine Implementationsänderungen:

1.1.22.02 - 27. Mai 2015

Behoben: TreeView löst nicht länger *-Ereignisse für unbekannte Benachrichtigungen aus.

Behoben: Kein Absturz/schlechtes Verhalten mehr, wenn ein Timer sich selbst löscht.

Behoben: RWin-up war maskiert in einigen seltenen Fällen, wo LWin-up es nicht gewesen wäre.

1.1.22.01 - 24. Mai 2015

Behoben: Text/Edit/Button-Steuerelemente kompensieren nun bei ihrer Größenanpassung eventuell hinausragende Zeichen.

Behoben: Registry-Befehle erlauben nun ein : in ihrem Subkey, wenn er mit dem Rootkey kombiniert wird.

Behoben: Hotkey-Priorisierung berücksichtigt absofort Modifikatoren.

Überarbeitet: Else/Try/Catch/Finally unterstützen nun so etwas wie Hotkey::Try Befehl.

Hinzugefügt: Eine Übergangslösung für Skript-Dialogfenster, die so taten, als wurde STRG oder UMSCHALT gedrückt, nachdem sie vom Tastatur-Hook blockiert wurden.

1.1.22.00 - 1. Mai 2015

Hinzugefügt: Absofort erfolgt SetErrorMode(SEM_FAILCRITICALERRORS) beim Starten des Programms, um System-Fehlermeldungen wie "Es befindet sich kein Datenträger im Laufwerk" zu unterdrücken. Das Aufrufen von Drive oder DriveGet hat nicht länger Einfluss auf den Fehlermodus des Prozesses.

Geändert: MonthCal-Steuerelemente haben standardmäßig nun Tabstopp in Windows Vista oder höher.

Verbessert: ComObjConnect verwendet nun IProvideClassInfo, sofern verfügbar.

Behoben: Definitionen von Methoden/Eigenschaften, die auf derselben Zeile nach einer schließenden Klammer erfolgen, funktionieren nun korrekt.

Behoben: Die automatische Größenanpassungen von Text/Link-Steuerelementen kompensieren nun den +Border-Style (WS_BORDER).

Behoben: Break N bei einem Loop, das unterhalb von If/Else/Try/Catch verwendet wird.

1.1.21.03 - 12. April 2015

Behoben: Erkennung von Namenskonflikten zwischen Eigenschaften und Methoden.

1.1.21.02 - 4. April 2015

Behoben: OnMessage(nachr, fnobj, 0) wird nichts mehr tun, wenn fnobj noch nicht registriert ist.

1.1.21.01 - 3. April 2015

Behoben: Bei StrReplace() kann der Ersatztext-Parameter nun weggelassen werden.

Behoben: Klassenvariablen können nun Nicht-ASCII-Namen haben.

1.1.21.00 - 28. März 2015

Hinzugefügt: Loop, Reg, Rootkey[\Key, Modus].

Hinzugefügt: Loop, Files, Dateimuster [, Modus].

Geändert: EingabeVar-Parameter können absofort % Ausdruck enthalten (außer bei If-Befehlen).

Object-Methoden überarbeitet:

Hinzugefügt: Ord() und Unterstützung von Ergänzungszeichen (>0xFFFF) für Chr().

Hinzugefügt: StrReplace().

Entfernt: Der veraltete und undokumentierte 5-Parameter-Modus von RegRead, der ausschließlich für die AutoIt-v2-Kompatibilität galt (der zusätzliche Parameter war unbenutzt).

Geändert: Die Rootkey- und Subkey-Parameter von RegRead, RegWrite und RegDelete können nun kombiniert werden.

1.1.20.03 - 21. März 2015

Behoben: MouseGetPos (AusgabeSteuerelement), GuiContextMenu und GuiDropFiles (A_GuiControl) ignorieren nicht länger deaktivierte Steuerelemente [fehlerhaft seit v1.1.20.00].

1.1.20.02 - 11. März 2015

Behoben: Add-First-Modus von OnMessage.

Behoben: A_OSVersion bei unbekannten Betriebssystemen in x64-Builds.

Behoben: ExitApp hebt die Pause des Skripts auf, bevor Objekte freigegeben werden, falls eine __Delete-Meta-Funktion aufgerufen wird.

Triviale Optimierungen und Codeanpassung.

1.1.20.01 - 10. März 2015

Die Änderungen in v1.1.20.00 bzgl. des Speicherns und Wiederherstellens von ErrorLevel bei Thread-Unterbrechung wurden rückgängig gemacht, um unbeabsichtigte Folgen entgegenzuwirken.

Erneut behoben: Timer verursachten manchmal, dass ErrorLevel in hexadezimal formatiert wurde.

Behoben: Klassenmethoden behalten einen gezählten Verweis auf die Klasse.

1.1.20.00 - 8. März 2015

Neue Features:

Erweitert: Hotkey-, Menu-, SetTimer-, Gui- und Gui-Steuerelement-Ereignisse akzeptieren nun eine Funktion anstelle eines Labels, wenn kein Label gefunden wird.

Erweitert: Hotkey-, Menu-, SetTimer-, Gui- und Gui-Steuerelement-Ereignisse akzeptieren nun ein Funktionsobjekt. Hinzugefügt: Delete-Unterbefehl für SetTimer zum Freigeben des Objekts.

Erweitert: Bei OnMessage() ist es nun möglich, dass eine beliebige Anzahl von Funktionen oder Funktionsobjekten eine einzelne Nachricht überwachen können.

Hinzugefügt: OnExit() und OnClipboardChange(), die ein Funktionsname oder -objekt akzeptieren.

Hinzugefügt: Hotkey-Label können nun auf eine Funktionsdefinition verweisen.

Hinzugefügt: U/L/T-Modifikatoren zum Umwandeln in Groß-/Kleinschreibung mit Format().

Hinzugefügt: E-Option für den Input-Befehl, um Endungszeichen als Zeichen statt als Tastencode zu behandeln.

Hinzugefügt: Unterstützung von ** (stderr) in FileAppend.

Hinzugefügt: ObjBindMethod(obj, method, args*) und Func.Bind(args*).

Änderungen:

Geändert: AHK verhält sich nun anders, wenn das Hauptskript nicht gefunden wird:

Geändert: WinActivate wird das Fenster nun wiederherstellen, wenn es bereits aktiv, aber minimiert ist.

Geändert: WinActivate sucht nun nach einem sichtbaren Fenster, um es zu aktivieren, wenn DetectHiddenWindows ausgeschaltet und das aktive Fenster versteckt ist, anstatt nichts zu tun.

Geändert: A_CaretX/A_CaretY verwenden nun eine andere Methode zum Abrufen der Position der Texteinfügemarke.

Geändert: A_OSVersion verwendet nun RtlGetVersion(), um Windows 10 und hoffentlich auch zukünftige Versionen erkennen zu können.

Geändert: A_OSVersion gibt nun eine Versionsnummer im Format "Haupt.Neben.Build" zurück, wenn es keinen Namen für das Betriebssystem hat.

Geändert: Objekte unterstützen nun x[,y], x.y[,z] und x[](y).

Einige interne Änderungen, um Fehler zu beheben, Codegröße zu reduzieren oder Performance zu verbessern, sowie:

Fehlerbehebungen:

Behoben: VK-zu-Tastenname-Umwandlungen für die Tasten von 'A' bis 'Z' berücksichtigen nun das Tastaturlayout.

Behoben: FileAppend's * (stdout) berücksichtigt nun den Codierung-Parameter, anstatt immer ANSI-Text auszugeben.

Behoben: Auto-Skalierung von GUIs mit nur einem Scrollbalken.

Behoben: Exception(m, n) verursachte einen Absturz, wenn n sehr weit die Grenzen überschritten hat.

Behoben: GuiContextMenu setzt A_GuiEvent nun korrekt in x64.

Behoben: FileGetSize übergab manchmal ein unbestimmtes Ergebnis, wenn die Datei nicht existiert oder nicht geöffnet werden kann.

Behoben: Thread-Unterbrechungen speichern und stellen ErrorLevel besser wieder her [in v1.1.20.01 aufgrund von unbeabsichtigten Folgen rückgängig gemacht].

Behoben: ControlClick-Pos-Modus ignoriert nun deaktivierte Steuerelemente.

Behoben: Merkwürdiges Verhalten, wenn Gui +MaxSize kleiner als +MinSize ist.

Behoben: GuiControl/Get benötigte einen Gui-Namen, wenn ein Steuerelement-HWND angegeben wurde.

Behoben: Meta-Funktionen beeinträchtigten Zeilennummern, die von Exception() gemeldet werden.

1.1.19.03 - 11. Februar 2015

Verbessert: Neubelegung erlaubt nun scXXX::Y, wenn das aktuelle Tastaturlayout das ScXXX nicht einem VK-Code zugeordnet hat. Allerdings muss Y noch auf dem aktuellen Tastaturlayout vorhanden sein.

Behoben: break n funktioniert nun korrekt, wenn until vorhanden ist, anstatt den Thread zu beenden.

Behoben: ControlGetFocus unterbrach einen Doppelklick des Benutzers (Danke an HotKeyIt).

Behoben: ListView wird sein g-Label nicht mehr aufrufen, wenn nicht unterstützte (und bisher unbekannte) Nachrichten wie z. B. LVN_GETEMPTYMARKUP erfolgen.

Behoben: #Include *i <X> beendet das Programm nun wie vorgesehen, wenn X einen Syntaxfehler enthält.

Behoben: for Var in Ausdruck verursachte manchmal einen Absturz des Programms, wenn Ausdruck eine Skript-Funktion aufruft.

1.1.19.02 - 25. Januar 2015

Entfernt: Die 16-farbigen Symbole, die in Win9x/Win2k verwendet wurden.

Entfernt: Die separaten Symbolressourcen für den Infobereich.

Verbessert: Die Auswahl der Symbolgröße, wenn Symbole aus DLL/EXE-Dateien geladen werden.

Behoben: Einige Probleme bei der Gültigkeitsprüfung von Hotkeys, während das Skript geladen wird.

Behoben: /iLib schreibt die Datei nun auch, wenn sie Syntax-Fehler enthält.

Behoben: Return/Break/Continue/Goto innerhalb von Try..Finally.

1.1.19.01 - 5. Januar 2015

Behoben: Der Hotkey-Befehl verursachte einen Absturz bei dem Versuch, neuen Varianten von vorhandenen Hotkeys zu erstellen (fehlerhaft seit v1.1.19.00).

Kleine Optimierungen an den Hotkey-Befehl und A_TimeIdle durchgeführt, bezogen auf das Entfernen der Win9x-Unterstützung.

1.1.19.00 - 4. Januar 2015

Hinzugefügt: Ein Name für Func.Call(). Die veraltete Methode Func.() kann weiter verwendet werden.

Behoben: Einige Probleme mit X.Y und X.Y(Z) in VBScript/JScript/C#:

Behoben: Der Hotkey-Befehl ignorierte das Präfix ~ (ursprüngliche Tastenfunktion nicht blockieren), wenn Label weggelassen wurde.

Behoben: Der Hotkey-Befehl ignorierte das Präfix $ (Hook verwenden), wenn die Hotkey-Variante bereits ohne $ erstellt wurde.

Behoben: Die Syntax %Fn%() funktioniert absofort auch bei JavaScript-Funktion-Objekten.

Behoben: EXE-Manifest erzeugt nicht länger UAC-Installer-Erkennungsheuristiken (fehlerhaft seit v1.1.17).

Verbessert: Threads werden in der Aufrufliste des Debuggers besser dargestellt.

1.1.18.00 - 30. Dezember 2014

Verbesserte IDispatch-Implementierung für AutoHotkey-Objekte:

Hinzugefügt: Unterstützung für das Erstellen neuer Eigenschaften in IE DOM/JavaScript-Objekten.

Behoben: FileAppend, %VarMitClipboardAll%, Datei verursachte Abstürze.

1.1.17.01 - 28. Dezember 2014

Behoben: COM-Event-Handler erhielten nicht den letzten Objekt-Parameter.

1.1.17.00 - 27. Dezember 2014

Neue Features:

Hinzugefügt: Format().

Hinzugefügt: FileOpen() kann nun verwendet werden, um Daten aus stdin zu lesen oder Daten in stdout oder stderr zu schreiben, indem man "*" oder "**" als Dateiname übergibt. Mit AutoHotkey.exe * kann Skript-Text ausgeführt werden, der nicht aus einer Datei gelesen, sondern von einem anderen Prozess weitergeleitet wurde. Siehe als Beispiel ExecScript().

Hinzugefügt: Unterstützung zum Übergeben von AutoHotkey-Objekten an COM-APIs als IDispatch.

Hinzugefügt: Unterstützung für VT_BYREF in ComObject-Wrappers. Mit obj[] kann auf den verwiesenen Wert zugegriffen werden.

Fehlerbehebungen:

Behoben: BSOD in Win XP SP2.

Behoben: Im Besitz befindliche ComObjArrays werden nun per Wert zurückgegeben, anstatt per Pointer. Das heißt, dass eine Kopie des Arrays zurückgegeben wird, anstatt ein Pointer, der auf ein bald gelöschtes Array verweist.

Behoben: Die URL im Beispiel-Skript wurde geändert - das ist das Skript, das automatisch erstellt wird, sobald du AutoHotkey das erste Mal startest.

Behoben: sc15D entspricht nun vk5D/AppsKey (Send, GetKeyName, etc.).

Behoben: Edit-Steuerelemente behandeln ALTGR+A nicht länger als STRG+A.

Behoben: Statische Klassenvariablen agieren nicht länger als Ziele für Label, die unmittelbar vor der Klasse stehen.

1.1.16.05 - 28. September 2014

Behoben: x.y/[]/{} wurde manchmal fälschlicherweise als variadisch gekennzeichnet.

1.1.16.04 - 16. September 2014

Behoben: Das Programm stürzte ab, wenn eine nicht-schreibbare Eigenschaft überschrieben wurde.

Behoben: Das Programm stürzte ab, wenn ein RegExMatch-Objekt mit nicht-erfassten Teilausdrücken während eines RegEx-Callouts erstellt wurde.

1.1.16.03 - 11. September 2014

Behoben: Schlechtes Verhalten in Abs() und Mod(), das durch einen fehlerhaften Bug-Fix in v1.1.16.01 verursacht wurde.

1.1.16.02 - 11. September 2014

Behoben: #Include kann nun innerhalb einer Klasse verwendet werden (fehlerhaft seit a6ea27f).

Behoben: Clipboard gab binärische CF_HDROP-Daten in einigen Instanzen zurück.

Verbessert: Genauigkeit von FileGetSize bei Dateien erhöht, die noch offen sind.

Verbessert: For-Loop-Kompatibilität mit COM-Objekten.

1.1.16.01 - 10. September 2014

Hinzugefügt: Syntax zum Definieren von dynamischen Eigenschaften innerhalb von Klassen.

Hinzugefügt: Die Optionen x+m und y+m zum Positionieren von GUI-Steuerelementen.

Hinzugefügt: Der #InputLevel von jedem Hotkey wird nun bei ListHotkeys angezeigt (wenn ungleich Null).

Optimiert: RegExMatch mit der O-Option (Objekt); das Erfassen von Bereichen einer langen Zeichenkette erfolgt nun viel schneller als zuvor in einigen Fällen.

Behoben: Objekte überprüfen nun, ob nach Abschließen von __Call neue Methoden verfügbar sind (wie bei __Set and __Get auch).

Behoben: In einigen Fällen erfolgt kein undefiniertes Verhalten mehr, wenn VarSetCapacity fehlschlägt.

Behoben: FileRead meldet bei Dateien über 4 GB nun einen Fehler, anstatt die gelesenen Daten einfach zu kürzen, selbst wenn es nicht gefordert war.

Behoben: FileRead *c wird nun korrekt null-terminieren, wenn die Byte-Länge ungerade ist.

Einige ClipboardAll-Probleme behoben und Verhalten geändert:

Behoben: A_EventInfo bei TreeView-Elementen mit negativen Bildschirm-Koordinaten.

Behoben: Ein mögliches ListView/TreeView-Nachrichtenfilterungsproblem.

Behoben: A_LineFile/A_LineNumber in #If-Ausdrücken.

Behoben: #If wird sich nun selbst in ListLines einfügen (aber als "If").

Behoben: Abs(["-"]*) und ähnliches ließen das Programm abstürzen.

Behoben: } funcdef(){ global und }} enden nun eine Methode/Eigenschaft/Klasse.

1.1.15.04 - 12. August 2014

Behoben: Performance-Problem bei &var_mit_langer_zeichenkette_aus_zahlen.

Behoben: Built-in-Variablen werden den Speicher beim Zuweisen eines Objekts nicht mehr beschädigen.

Behoben: Absofort kann der Parser continue je nach Bedarf verbieten, selbst wenn die aktuelle Funktion innerhalb einer Schleife definiert ist.

Behoben: File.Encoding := x "-RAW" kann die Codierung/Decodierung von Nicht-ASCII-Zeichen nicht mehr brechen. Der Suffix -RAW wird absofort ignoriert.

1.1.15.03 - 2. August 2014

Behoben: Meta-Funktionen verlassen den Thread nun korrekt, wenn Exit oder Throw verwendet wird.

Behoben: FileInstall verwendet nun A_WorkingDir, wenn Ziel in einem nicht-kompilierten Skript relativ ist.

1.1.15.02 - 7. Juli 2014

Behoben: Debuggen von negativen Integer-Keys in Objekten.

1.1.15.01 - 30. Juni 2014

Geändert: Built-in-Fehler- und Warnungsdialogfenster sind nun immer im Vordergrund.

Behoben: Until kann nicht mehr aus einer rekursiven Datei-/Registry-Schleife ausbrechen.

1.1.15.00 - 4. Mai 2014

Hinzugefügt: A_OSVersion-Wert WIN_8.1.

Geändert: Der Hotkey-Befehl wird das Übergabeverhalten bei vorhandenen Hotkey-Varianten nun anfügen / entfernen, abhängig davon, ob das Tilde-Präfix (~) vorhanden ist oder nicht.

Geändert: EXE-Manifest wurde geändert, so dass GetVersion/GetVersionEx Windows 8.1 erkennen können.

1.1.14.04 - 25. April 2014

Behoben: DllCall() lässt das Skript nicht mehr abstürzen, wenn Funktion ein reiner Integer-Wert von 0 ist.

Behoben: IsFunc("ComObj(") wird nun als falsch gewertet, anstatt eine Ausnahme auszulösen.

Behoben: ControlClick sendet nun korrekt XButton1/XButton2.

1.1.14.03 - 14. Februar 2014

Behoben: new X erzeugt nicht länger ein Speicherleck, wenn X.__Init den Thread vorzeitig beendet.

Behoben: Haltepunkte werden nicht länger auf Klassenvariablen-Initialisierer verschoben, wenn sie Methodendefinitionen enthalten.

1.1.14.02 - 30. Januar 2014

Behoben: x:: und x up:: werden beim KeyUp-Ereignis ausgelöst, wenn die Zustände der Modifikatortasten verhindern sollten, dass x beim KeyDown-Ereignis ausgelöst wird. Seit v1.1.14 ist es beabsichtigt, dass beide Hotkeys beim KeyUp-Ereignis ausgelöst werden, wenn x auch in einer benutzerdefinierten Tastenkombination wie x & y:: verwendet wird.

1.1.14.01 - 15. Januar 2014

Behoben: Try verursachte ohne Catch/Finally einen Absturz, wenn keine Ausnahme ausgelöst wurde.

1.1.14.00 - 15. Januar 2014

Hinzugefügt: Finally-Anweisung zum Durchführen von Säuberungsaktionen nach Try/Catch. [fincs]

Geändert: Das Tilde-Präfix (~) verhält sich bei benutzerdefinierten Tastenkombinationen nun intuitiver.

Behoben: x & y:: wird sowohl x:: als auch x up:: auslösen, wenn x im losgelassenen Zustand ist.

Behoben: ImageSearch setzt ErrorLevel nun auf 2, anstatt auf 0, wenn ein GDI-Aufruf fehlschlägt.

Behoben: EnvGet lässt das Programm nicht länger abstürzen, wenn Var 32767 Zeichen überschreitet.

Behoben: StatusBarWait setzt ErrorLevel nun korrekt.

Behoben: FileRead *c in ANSI-Builds verursachen nicht länger eine Heap-Beschädigung.

Behoben: Lokale Variablen werden bei rekursiven Aufrufen nun korrekt an variadischen Funktionen übergeben.

Behoben: Das Skript wird nun korrekt geladen, wenn die erste Zeile ein Ausdruck in runden Klammern ist.

Behoben: Der Fast-Modus von PixelSearch setzte AusgabeX/Y nur bei Erfolg.

1.1.13.01 - 11. Oktober 2013

Behoben: Variadische Funktionsaufrufe mit benannten Werten bei Pflichtparametern.

1.1.13.00 - 27. August 2013

Hinzugefügt: StrSplit() von v2 alpha.

1.1.12.00 - 14. August 2013

Hinzugefügt: Optionale Parameter können durch die Angabe von zwei fortlaufenden Kommas weggelassen werden, wie z. B. in InStr(a, b,, 2). Im Gegensatz zu den vorherigen Versionen funktioniert diese Methode nun auch für Objekte (einschließlich COM-Objekte) und Built-in-Funktionen. [a,,b] kann verwendet werden, um ein lückenhaftes Array zu erzeugen.

Hinzugefügt: Objekteigenschaften können nun mit der variadischen Syntax gesetzt werden, wie z. B. x[y*]:=z, dessen Y-Variable einen Array mit Keys/Indexen oder Parametern enthält.

1.1.11.02 - 28. Juli 2013

Behoben: GuiControl/Get akzeptiert nun das ClassNN vom untergeordneten Eingabefeld einer ComboBox. Zur Identifizierung der ComboBox konnte man bereits das HWND des untergeordneten Eingabefeldes einer ComboBox angeben.

1.1.11.01 - 25. Juni 2013

Behoben: Standardbreite und - höhe der InputBox wiederhergestellt (fehlerhaft seit v1.1.11.00 - Commit 7373cc6443).

Behoben: Die Gültigkeitsprüfung von DllCall-Argumenttypen behandelt SYM_OBJECT nun zuverlässig, und berücksichtigt #Warn UseUnset (wenn ein Variablenname ein ungültiger Typ ist).

Geändert: VarSetCapacity(var) wird nicht mehr vor uninitialisierten Variablen warnen.

1.1.11.00 - 21. Juni 2013

Hinzugefügt: Unterstützung für %A_LineFile% in #Include.

Geändert: Reduzierung der Größe von AutoHotkeySC.bin durch Verringerung der Auflösung vom (selten verwendeten) Dateitypsymbol.

Behoben: Bei class X extends Y ist es nun möglich, Y nach X zu definieren.

Entwickelt von fincs: AutoHotkey richtet sich nun nach der DPI. Die Gui-Befehle passen sich automatisch an, falls die DPI ungleich 96 ist. Siehe Gui -DPIScale.

1.1.10.01 - 17. Mai 2013

Verbessert: RegRead unterstützt nun REG_BINARY-Werte größer als 64 KB.

Verbessert: RegWrite unterstützt nun REG_BINARY/REG_MULTI_SZ-Werte größer als 64 KB.

Behoben: Process Close (und möglicherweise andere Dinge) in Windows XP.

1.1.10.00 - 11. Mai 2013

Hinzugefügt: Einfache Unterstützung für benutzerdefinierte GUI-Steuerelementarten.

Überarbeitet: SoundSet/-WaveVolume und SoundGet/-WaveVolume unterstützen nun Windows Vista und höher.

Behoben: Run "<Datei>" <Parameter> übergibt das Leerzeichen nicht länger als Teil des Parameters.

Behoben: Einige Probleme beim Lesen der Konsoleneingabe (CONIN$).

1.1.09.04 - 14. März 2013

Behoben: Gui-Menu-Zugriffstasten funktionierten nicht, wenn das Gui selbst (nicht ein Steuerelement) den Fokus hatte.

1.1.09.03 - 9. Februar 2013

Zwei Bugs behoben, die bestimmte Zuweisungen beeinflussten, bei denen die Zielvariable eine ungeleerte Binärzahl enthält und null Kapazität hat.

Behoben: GuiControl und GuiControlGet agierten mit dem falschen Steuerelement, falls denen ein HWND gegeben wurde, das nicht zum aktuellen Gui gehört. Stattdessen wird der Zustand als Fehler behandelt.

Behoben: OnMessage-Funktionen setzen A_Gui und A_GuiControl nun korrekt, wenn das Ziel-Gui ein untergeordnetes Fenster ist.

1.1.09.02 - 24. Dezember 2012

Behoben: MsgBox zeigt bei ungültigen Optionen nun eine Fehlermeldung an, anstatt den Thread automatisch zu verlassen.

Behoben: Syntaxfehler in Klassenvariablen-Initialisierer bewirken nicht länger, dass das Programm ohne ordnungsgemäße Fehlermeldung abstürzt.

1.1.09.01 - 15. Dezember 2012

Behoben: AND/OR nach einer Mehrfachanweisung wie ((x, y) and z).

Behoben: RegExReplace unterstützt nun korrekt doppelt vorhandene Teilausdrucksnamen.

Behoben: Object.Remove() wird Keys in Form einer Zeichenkette nun freigeben.

Behoben: base.Invoke() ist nicht mehr von der dynamischen Variablenauflösung abhängig.

1.1.09.00 - 7. November 2012

Gravierende Änderungen:

Entfernt: .aut-Datei-Kompatibilität und #AllowSameLineComments.

Entfernt: undokumentierte AutoIt-v2-Befehle.

Abwärtskompatible Änderungen:

Erlaubt: Um Widersprüche bei Variablendeklarationen und Ausdrücke zu vermeiden, können optionale Parameter nun auch mit := deklariert werden, nicht nur mit =.

Erlaubt: Nicht-ASCII-Zeichen in Keys ohne Anführungszeichen ({key: x} und obj.key).

Geändert: Name in der Versionsinfo von "AutoHotkey_L" zu "AutoHotkey".

Fehlerbehebungen:

Behoben: Instabilität, hervorgerufen durch Warnungsmeldungen, die mitten bei der Auswertung von Argumenten eines Befehls erschienen.

Behoben: Der Fast-Modus von PixelSearch behandelt "nicht gefunden" nicht mehr als Fehler.

Behoben: ahk_exe akzeptiert danach nun weitere ahk_-Kriterien.

Behoben: else continue 2 und ähnliches benötigen nicht länger geschweifte Klammern um die Schleife.

Behoben: RegRead meldet nun nicht länger Misserfolg nach erfolgreichem Einlesen von Binärdaten.

Behoben: File.Length kompensiert oder leert nun alle gepufferten Daten.

Behoben: Gui-Skalierung berücksichtigt nun Scrollbalken, falls vorhanden.

Debugger:

Hinzugefügt: Unterstützung für asynchrone Befehle.

Verbessert: Behandlung von Haltepunkten bei Zeilen wie else foo() oder { bar(), so dass der Debugger gegebenenfalls tatsächlich stoppen wird.

Codegröße optimiert, einige Bugs behoben und den Debugger generell robuster gemacht.

1.1.08.01 - 3. August 2012

Debugger: Fehler behoben, dass max_depth entweder nur die Hälfte vom vorgesehenen Limit oder unlimitiert war.

1.1.08.00 - 14. Juli 2012

Gravierende Änderungen:

Geändert: Standardzeichensatz des Skripts ist nun ANSI, da das vorherige Verhalten für die meisten irreführend war. UTF-8-Dateien müssen nun eine Bytereihenfolge-Markierung (BOM) haben, um richtig erkannt werden zu können. Zum Beispiel fügt der Windows-Editor in jede Datei eine BOM ein, sobald diese im UTF-8-Format gespeichert wird.

Geändert: return x ermöglicht nun das Formatieren numerischer Zeichenketten; es ist das gleiche wie return (x).

Geändert: Gui, Name: New setzt das neue GUI nun als Standard.

Sonstige Änderungen:

Geändert: ClipboardAll wird CF_UNICODETEXT nun den anderen Textformaten vorziehen.

Geändert: Gui Show erlaubt nun Gleitkommazahlen.

Geändert: A_OSVersion wird bei Windows 8 nun WIN_8 zurückgeben.

Geändert: Die Dateibeschreibung von AutoHotkey.exe enthält nun "ANSI/Unicode 32/64-bit".

Geändert: Der Parser erlaubt nun Zeilen wie new MeinObjekt() ohne Zuweisung.

Geändert: PCRE auf 8.30 aktualisiert.

Die Formulierungen einiger Warnungen wurden verbessert, außerdem befindet sich in jedem Warnfenster nun ein Verweis auf die Dokumentation.

Verbesserungen beim Debugger:

Neue Features:

Hinzugefügt: Unterstützung für das PCRE-Konstrukt (*MARK:NAME) mithilfe von RegExMatchObject.Mark.

Hinzugefügt: Unterstützung von Zuweisungen wie classvar.x := y in Klassendefinitionen (nach dem Deklarieren von classvar).

Hinzugefügt: A_Is64bitOS.

Hinzugefügt: SetRegView und A_RegView.

Fehlerbehebungen:

Behoben: Func.() wird den Funktionsaufruf nun einfach überspringen, falls Pflichtparameter weggelassen werden, anstatt den Thread dazu zu bringen, sich selbst automatisch zu beenden.

Behoben: Object.Remove() kann nun Objekt-Keys freigeben.

Behoben: Hotkey-Paare im gedrückten/losgelassenen Zustand unterdrücken die Eingabe nun korrekt, falls nur ein Hotkey des Paares aktiviert ist.

Behoben: #Include <Lib> beeinflusst nun nicht länger das Arbeitsverzeichnis nachfolgender #Include-Direktiven.

Behoben: objaddref() verhielt sich wie ObjRelease(), wenn es mit einem kleingeschriebenen 'a' aufgerufen wurde.

Behoben: A_AhkPath in 32-Bit-kompilierten Skripts erkennt nun 64-Bit-AutoHotkey-Installationen und umgekehrt.

Behoben: TreeView-Steuerelemente mit der -Background-Option wurden in älteren Betriebssystemen falsch gerendert.

Behoben: Bei der Ausführung von While/Until wurden Fehlermeldungen bzgl. der Identifizierung der geeigneten Zeile angezeigt.

1.1.07.03 - 25. März 2012

Behoben: STRG/ALT/UMSCHALT-Hotkeys im gedrückten Status machten entsprechende Hotkeys im losgelassenen Status unwirksam, welche zuvor definiert wurden.

Behoben: Hotkeys im gedrückten Status verwenden nun immer den Hook, wenn sie nach einem Hotkey im losgelassen Status mit der gleichen Taste definiert werden. Falls der Hotkey im gedrückten Status die Methode "reg" verwendet, wird der Hook das Drückereignis blockieren und nur den Hotkey im losgelassenen Status auslösen.

Behoben: Ladezeitüberprüfungen interpretierten Ausdrücke ohne Derefenzierungen als unbearbeiteten Text. Zum Beispiel wurde Gosub % "foo" bei der Ladezeit in "foo": aufgelöst. Ebenso wurde % "" in verschiedenen Fällen als ungültig angesehen, auch dann, wenn eine leere Zeichenkette erlaubt war.

1.1.07.02 - 22. März 2012

Behoben: Ein selten auftretender Absturz, sobald GetClipboardData() fehlschlug.

Behoben: ComObjArray() wird nun bei Misserfolg eine leere Zeichenkette zurückgeben, anstatt einen beliebigen Integer.

Behoben: Object.Remove(i, "") hatte Auswirkung auf Integer-Keys, sobald !Object.HasKey(i).

1.1.07.01 - 2. März 2012

Behoben: FileRead ignoriert nun #MaxMem beim Lesen von UTF-16 in Unicode-Builds.

Behoben: Dynamische Funktionsaufrufe mit Built-in-Variablen wie z. B. %A_ThisLabel%().

1.1.07.00 - 27. Februar 2012

Verbessert: %var%() unterstützt nun Funktionsobjekte und die __Call-Meta-Standardfunktion.

Behoben: ControlGet List funktioniert nun bei ListViews, wenn das Skript und der Zielprozess nicht im 32-Bit-Format sind, oder alle beide im 64-Bit-Format sind.

Behoben: SendEvent mit einer Tastenverzögerung von 0; eine Änderung, die in v1.1.05.04 eigenführt wurde, bewirkte, dass SendEvent langsamer war, als gedacht.

Behoben: Object.Remove(i) passte die Keys nicht an, wenn Object[i] nicht existierte.

Behoben: ComObjType() verhielt sich manchmal unvorhersehbar, wenn diese Funktion über einen Alternativnamen aufgerufen wurde.

Behoben: ExitApp beendet nun den Thread, wenn das Beenden des Skripts von einer OnExit-Subroutine verhindert wird, anstatt die Ausführung nach dem Block fortzusetzen, der ExitApp enthält.

Ein Funktionsaufruf über ein Objekt verhindert nicht länger, dass der Thread beendet wird. Wenn daher Exit verwendet wird oder ein Laufzeitfehler innerhalb einer Klassenmethode auftaucht, wird der ganze Thread beendet, anstatt nur die Funktion.

Der Aufruf einer base-Klassenmethode über base.Method() oder ähnlichem innerhalb einer Klassendefinition verursacht nicht länger eine UseUnset-Warnung, falls die Methode nicht existiert. Folglich verursacht die Instanziierung eines Objekts, das Instanzvariablen hat, nicht länger eine Warnung bezüglich der internen Methode base.__Init, falls die base-Klasse keine Instanzvariablen hat.

1.1.06.02 - 13. Februar 2012

Behoben: IniRead führte zum Absturz, sobald die Sektion weggelassen wurde, aber nicht der Key.

Behoben: Genauigkeit von FileGetSize mit Dateien, die 4GB oder höher groß sind.

1.1.06.01 - 12. Februar 2012

Behoben: Die intelligente Kommahandhabung der MsgBox benötigt numerische Optionen, nicht Titel.

1.1.06.00 - 12. Februar 2012

Neue Features:

Hinzugefügt: #InputLevel-Direktive und SendLevel-Befehl von Russell Davis.

Hinzugefügt: Link-Steuerelemente von ChrisS85.

Gravierende Änderungen:

Geändert: Befehlsparser verhindert nun, dass Escapezeichen-versehene Zeichen wie `t oder ` am Anfang oder am Ende eines Parameters entfernt werden.

Geändert: Intelligentere Kommahandhabung bei der MsgBox, um die Flexibilität zu verbessern und Widersprüche zu verringern.

Geändert: A_IsUnicode/A_IsCompiled enthalten in ANSI-Versionen/unkompilierten Skripts eine leere Zeichenkette, anstatt undefiniert zu bleiben. Auf diese Weise können diese überprüft werden, ohne dabei #Warn-Warnungen auszulösen. Nebeneffekte sind:

Geändert: Send und verwandte Befehle beachten nun #MenuMaskKey, wenn sie Zustände von Modifikatortasten ändern.

Sonstige Änderungen:

Geändert: GuiControl Choose wird nun alle ListBox-Einträge abwählen, wenn N=0.

Geändert: RegisterCallback kann nun anstelle eines Namens ein Func-Objekt verwenden.

Geändert: ListLines zeigt nun Dateinamen an (solange das Skript nicht kompiliert ist).

Verbessert: Run wird beim Verwenden von ShellExecuteEx nun eine Prozess-ID ausgeben, wenn möglich.

Fehlerbehebungen:

Behoben: Handle-Leaks in RegRead.

Behoben: x.y++ und Ähnliches wird eine leere Zeichenkette zuweisen, wenn x.y nicht numerisch ist.

Behoben: WIN+L-Übergangslösung von SendInput bewirkte, dass die WIN-Taste "hängen blieb".

Behoben: Ahk2Exe fügte automatisch die falsche Datei ein, wenn #Include <Lib> verwendet wurde.

1.1.05.06 - 31. Dezember 2011

Behoben: Inkrement (++) und Dekrement (--) haben keine Wirkung, wenn sie auf ein Objektfeld mit einer Zeichenkette angewendet werden.

Behoben: Inkrement (++) und Dekrement (--) verursachen nun eine Warnmeldung, wenn sie bei einer uninitialisierten Variable verwendet werden.

1.1.05.05 - 17. Dezember 2011

Behoben: continue n verhielt sich falsch, wenn eine innere Schleife keine Klammern hatte.

Behoben: RegExMatchObject[Name] funktioniert nun richtig bei doppelt vorkommenden Namen.

1.1.05.04 - 5. Dezember 2011

Behoben: Der Unterbefehl "Selected" von ControlGet erwies sich in der x64-Version als unzuverlässig.

Behoben: CPU wurde voll ausgelastet, sobald darauf gewartet wurde, dass ein darunterliegender Thread ein Dialogfenster anzeigt (und wahrscheinlich auch in anderen Fällen).

1.1.05.03 - 30. November 2011

Behoben: Loop ... Until VariableMitObjekt.

1.1.05.02 - 20. November 2011

Behoben: Beim Laden eines kompilierten Skripts wurde das EOF (End of File) in einigen Fällen falsch erkannt.

Behoben: SendInput wird Modifikatortasten automatisch loslassen, sobald Sonderzeichen oder {U+xxxx} gesendet werden (fehlerhaft seit v1.1.00.01).

Behoben: ComObjConnect wird Non-Dispatch-Schnittstellen herausfiltern, anstatt das Skript abstürzen zu lassen.

Behoben: new %VariableMitKlassenname%().

1.1.05.01 - 16. Oktober 2011

Behoben: Klassendeklarationen erlauben nun Direktive wie z. B. #Include.

1.1.05.00 - 8. Oktober 2011

Hinzugefügt: Client-Koordinationsmodus.

Hinzugefügt: Objekt-Ausgabemodus für RegExMatch und RegEx-Callouts.

Hinzugefügt: Superglobale Deklarationen, um wiederholende globale Deklarationen zu verhindern.

Gravierende Änderung: Klassendeklarationen wie Class c erzeugen eine superglobale Variable, anstatt eine gewöhnliche globale Variable.

Hinzugefügt: Mehr Details für Dialogfenster mit unbehandelte Ausnahmefehler.

Geändert: Gui +Owner funktioniert auch, falls das GUI danach erstellt wurde.

Geändert: Bei Deklarationen von Instanzvariablen in Klassendefinitionen können Key-Value-Paare nicht mehr im Klassenobjekt leer gelassen werden.

Geändert: Bei Misserfolg verwendet #Include nun das Standardformat für die Fehlermeldung (mehr Details; berücksichtigt auch ErrorStdOut).

Geändert: Throw löst nun standardmäßig ein Ausnahmeobjekt aus, falls dessen Parameter weggelassen werden.

Geändert: Format von Laufzeitfehlermeldungen wurde etwas angepasst, um die Widersprüche zu verringern und Code-Größe zu verbessern.

Geändert: PCRE aus Performance-Gründen modifiziert, um UTF-16 bei Eingabevariablen in Unicode-Builds zu verwenden.

Geändert: PCRE auf 8.13 aktualisiert.

Behoben: Threads wurden nicht wie vorgesehen beendet, falls eine Zuweisung in einem Ausdruck fehlgeschlagen ist.

Behoben: #MaxMem verhinderte Zuweisungen auf Variablen, die keine Erweiterung benötigten.

Behoben: Try/Catch war nicht in der Lage, COM-Fehler abzufangen.

Behoben: GuiControlGet hat den 2. Parameter in einigen Fällen fälschlicherweise als ungültig angesehen.

Behoben: Eingabevariablen wurden zu früh aufgelöst, so dass sie später durch einen Ausdruck auf selber Zeile ungültig gemacht werden konnten.

Behoben: RegEx-Callouts brachen die Suche nach Übereinstimmung bei einem Ausnahmefehler nicht ab.

Behoben: DllCall setzte ErrorLevel auf -4 anstatt auf -3.

Behoben: While erschien beim ersten Durchlauf zweimal in ListLines.

Behoben: Try/Catch konnte If/Loop/For/While ohne umschließenden Block verwenden.

Behoben: Enumerator-Objekte wurden nicht freigegeben, wenn mit Until eine For-Schleife unterbrochen wurde.

1.1.04.01 - 15. September 2011

Behoben: FileRemoveDir hat den ErrorLevel nicht richtig gesetzt.

1.1.04.00 - 11. September 2011

Diese Version enthält eine Vielzahl gravierender Änderungen.

Unterstützung für Ausnahmebehandlung hinzugefügt: Try/Catch/Throw und Exception().

Hinzugefügt: Standardausgabemodus (StdOut) für #Warn.

Hinzugefügt: Option Gui +HwndVARNAME.

Hinzugefügt: Gui, New [, Optionen, Titel].

Hinzugefügt: Automatische Unterstützung für Tastaturkürzel wie CTRL+O in Gui-Menüs.

Geändert: Umgang mit #Include <Lib> wurde angepasst, wenn die Befehlszeilenoption "/iLib" vorhanden ist, um ein Problem mit Ahk2Exe zu lösen.

Geändert: GuiControl behält den aktuellen Wert vom Progress-Steuerelement beim Verändern des Styles.

Geändert: GuiControl und GuiControlGet können ein HWND im SteuerelementID-Parameter enthalten.

1GB-Einschränkung von FileRead entfernt.

Fehlererkennung verbessert:

Fehler bei rekursiven variadischen Funktionen behoben.

1.1.03.00 - 28. August 2011

Hinzugefügt: Unterstützung für GUI-Namen.

Hinzugefügt: Unterstützung für das Identifizieren eines GUI's mittels HWND.

Hinzugefügt: Gui-Option +Parent%ParentGui%.

Hinzugefügt: Gui-Fenster können mithilfe von +Owner%HWND% einem externen Fenster zugeordnet werden.

Hinzugefügt: Unterbefehl "Name" für GuiControlGet.

Hinzugefügt: Unterstützung für ActiveX-Steuerelemente mithilfe des Gui-Befehls.

Behoben: Leeres Hotkey-Steuerelement hat "vk00" zurückgegeben.

Behoben: Abstürze und Speicherlecks in Bezug auf COM-Ereignisse/ComObjConnect.

Behoben: GuiControlGet AusgabeVar, Unterbefehl, %AusgabeVar% schlug immer fehl.

Geändert: Fehlermeldungen "Missing (/[/{" auf "Unexpected )/]/}" geändert, um es verständlicher zu machen.

Geändert: ListLines zeigt nun While- und Until-Zeilen an, die bei jedem Durchlauf ausgeführt werden.

Geändert: Ausdrucksoperator ~= hat nun höhere Priorität als =/!=/</>/<=/>=, jedoch niedriger als Verkettung, außerdem wurde er zur Dokumentation hinzugefügt.

1.1.02.03 - 21. August 2011

Behoben (Debugger): Attribut "numchildren" hat nicht Objekt.Base enthalten.

1.1.02.02 - 20. August 2011

Behoben: Variablenkapazität war bei x64-Builds auf 2 GB limitiert.

Behoben: Zuletzt Gefundene Fenster wurde nicht von #if WinExist(T) gesetzt.

1.1.02.01 - 13. August 2011

Geändert: A_PriorKey ignoriert nun die Up-Ereignisse der Tasten.

Fehler beim Abruf des Prozessnamens/-pfades in bestimmten Fällen behoben:

1.1.02.00 - 6. August 2011

Hinzugefügt: TV_SetImageList().

Zeichen, die die untypischen Umschaltzustände 16 und 32 benötigen, verwenden nun eine Rückfallmethode, anstatt falsche Tastatureingaben zu erzeugen.

Umgang mit toten Tasten überarbeitet, um Probleme zu vermeiden, falls mehrere Skripte mit Hotstrings aktiv sind.

1.1.01.00 - 30. Juli 2011

Hinzugefügt: Unterstützung für Instanzvariablen in Klassendefinitionen, mit einfacher Zuweisungssyntax.

Entfernt: Schlüsselwort var, das in Klassendefinitionen verwendet wurde; benutzt stattdessen static.

Hinzugefügt: Neue Built-in-Variablen: A_ScriptHwnd und A_PriorKey.

Hinzugefügt: Neue Built-in-Funktionen: GetKeyName(), GetKeyVK(), GetKeySC() und IsByRef().

Hinzugefügt: Neuer Unterbefehl: WinGet, AusgabeVar, ProcessPath.

Hinzugefügt: Ein Fenster kann nun mithilfe des Prozessnamens oder -pfads angegeben werden: ahk_exe %Name%.exe oder ahk_exe %VollständigerPfad%.

Optimiert: ProcessName-Unterbefehl von WinGet.

Geändert: SetTimer verwendet A_ThisLabel, falls das Label weggelassen wird.

Aktualisiert: ComObjConnect() kann ein Objekt anstelle eines Funktionsnamenpräfix verwenden.

Verbessert: ComObjConnect() kann das Präfix/Objekt aktualisieren, ohne es dabei trennen zu müssen.

Verbessert: Parsing von Fortsetzungsbereiche erlauben Ausdrücke wie (x.y)[z](), ohne "(" mit einem Escapezeichen versehen zu müssen.

Methode ersetzt, die verwendet wurde, um Skript-Texte in 32-Bit-kompilierte Skripte zu speichern; sie nun mit 64-Bit kompatibel.

Behoben: Erkennen von ALTGR bei der Tastaturbelegung des aktiven Fensters (bei Unicode-Builds).

Behoben: SendInput hat ein überflüssiges LCTRL-UP-Ereignis nach einem ALTGR-UP-Ereignis durchgeführt.

1.1.00.01 - 17. Juli 2011

Behoben: Modifikatortasten wurden beim Senden von Sonderzeichen nicht automatisch losgelassen.

Behoben: Konflikte beim Neubelegen mit Scancode/Modifikatortaste wie sc1xx anstelle von ^sc0xx.

Behoben: $ und #UseHook waren unwirksam, wenn sie nur bei der zweiten oder nachfolgenden Instanzen eines Hotkeys verwendet wurden.

Behoben: Potentieller Absturz bei der Rückgabe eines Werts von einer __Delete-Meta-Funktion.

Behoben: Warnungen "Nicht initialisierte Variable" wurden vom Debugger ausgelöst.

Geändert: base.Methode() löst nun nicht mehr eine Standard-Meta-Funktion oder eine Warnung aus.

Geändert: Gui +(Ex)Style versteckt/zeigt nicht länger das GUI-Fenster.

Debugger geändert, damit er bei nicht initialisierten Variablen Typ="undefined" meldet.

Überprüfung hinzugefügt, um das Senden von falschen Zeichen zu verhindern, die die Hankaku-Taste benötigen.

Zusätzliche Unterstützung für Integer als Variablennamen von Klassen.

Das Schlüsselwort "static" für die Deklaration von Klassenvariablen hinzugefügt.

1.1.00.00 - 1. Mai 2011

Neue Features:

Einfache Syntax für Klassendefinition implementiert.

Schlüsselwort new für die Erstellung eines verzweigten Objekts.

Func() für das Abrufen einer Referenz auf einer vorhandenen Funktion hinzugefügt und IsFunc verbessert, um Funktionsverweise zu erkennen.

Zusätzliche Unterstützung für ++ und -- mit Objektfeldern, wie z. B. x.y[z]++.

Änderungen:

__Delete löst nicht mehr __Call aus.

OnClipboardChange verwendet AddClipboardFormatListener je nach Verfügbarkeit (d. h. in Windows Vista oder höher), um die Zuverlässigkeit zu verbessern.

Autoverkettung mit ( ist genauer, daher funktionieren einige ungültige Ausdrücke wie 12(34) nicht länger.

Fehlerbehebungen:

SetTimer Label, -0 führt nun dazu, dass das Label "einmal und sehr bald" ausgeführt wird.

A_MyDocuments usw. verwendet nun SHGetFolderPath anstelle eines nicht dokumentierten Registry-Keys.

Fehler mit nicht leerer Textausnahme behoben, dass Fenster ohne Text ausgeschlossen werden.

1.0.97.02 - 14. April 2011

Fehler durch Fehlinterpretation des Kommas als Argument-Trennzeichen behoben, wenn es mit {} in einem Ausdruck umschlossen wird.

For-Schleife setzt A_Index erst nach der Auswertung des Ausdruck-Arguments, damit der äußere Wert der Schleife verwendet werden kann.

Standardposition des Skripts basiert nun auf das Verzeichnis mit der EXE (wie dokumentiert) und nicht auf das Arbeitsverzeichnis.

Verbesserte Gültigkeitsprüfung während der Ladezeit, um ungültige Versuche zu erkennen, mit Goto aus einer Funktion "herauszuspringen".

1.0.97.01 - 2. April 2011

Fehler im 64-Bit-Build behoben, um HWNDs oder SendMessage/PostMessage-Parameter nicht auf 32 Bit zu verkürzen.

*/:: ist nicht länger ein ungültiger Hotkey (fehlerhaft seit L54).

Fehler bei den Symbolen behoben.

1.0.97.00 - 28. März 2011

{key: value} als vereinfachte Syntax für Object("key", value).

[x, y, z] als vereinfachte Syntax für Array(x, y, z), dass Object(1, x, 2, y, 3, z) entspricht.

Kleine Optimierung: jeder Referenz auf True, False, A_PtrSize oder A_IsUnicode wird während der Ladezeit in Ausdrücke aufgelöst.

Hotkey-Parser behandelt x & ^y nun als Fehler, anstatt ^ zu ignorieren.

1.0.96.00 - 21. März 2011

Neue Features:

ComObjQuery: Fordert ein Interface oder Service eines COM-Objekts an.

ComObjFlags: Ermittelt oder ändert Flags, die das Verhalten eines COM-Wrapper-Objekts kontrollieren.

ComObjCreate kann Non-Dispatch-Objekte erstellen, wenn eine Schnittstelle-ID (IID) gegeben ist.

COM-Arrays unterstützen For-Schleifen und die Clone()-Methode.

ListVars zeigt zusätzlich zur Adresse des Wrappers den inneren Typ und Wert einer Variante von jedem COM-Wrapper-Objekt an.

Änderungen:

Wenn ein literaler Integer oder eine Variable, die eine numerische Zeichenkette und einen zwischengespeicherten Binär-Integer enthält, einem Objekt-Feld zugewiesen wird, wird ein Integer anstelle einer Zeichenkette gespeichert. Dadurch werden insbesondere Skripte beim Aufrufen von COM-Methoden begünstigt, die Integer anstelle von Zeichenketten akzeptieren oder sich je nach Werttyp unterschiedlich verhalten.

NULL-Werte können nun mit ComObjParameter für die Typen VT_UNKNOWN und VT_DISPATCH verwendet werden.

Verbesserte Unterstützung für CLR-Objekte (Common Language Runtime [.NET]) mithilfe von COM.

FileRecycle sollte nun vorher warnen, wenn eine Datei gelöscht wird, die zu groß für den Papierkorb ist.

Wenn ein SafeArray, mit ComObjArray erstellt, einem Element eines anderen SafeArrays zugewiesen ist, dann wird eine seperate Kopie erstellt. Dadurch wird verhindert, dass das Skript aufgrund des zweiten Versuchs abstürzt, den Array zu "zerstören". Mit ComObjFlags kann dieses Verhalten verhindert werden.

Fehlerbehebungen:

Bei dem Versuch, einem COM-Array des Typs VT_DISPATCH oder VT_UNKNOWN etwas zuzuweisen, stürzte das Skript ab.

Break und Pause wurden manchmal außerhalb von Schleifen toleriert.

Ein alleinstehendes CR-Zeichen (`r) wurde nicht korrekt als Zeilenende interpretiert.

MouseMove berechnete negative Koordinaten im SendInput- und SendEvent-Modus falsch.

Das Auswählen von Edit This Script im Infobereichsmenü oder Verwenden des Edit-Befehls führte zum Absturz des Skripts (fehlerhaft seit v1.0.95).

Fehlermeldungen zeigten manchmal auf irrelevante Codezeilen.

1.0.95.00 - 12. März 2011

Alle Datei-Eingaben/Ausgaben wurden stark optimiert.

#Warn für Fehleranalyse; ursprüngliches Design von ac.

Wenn standardmäßig name_var einen Funktionsnamen enthält, dann ruft name_var.() eine Funktion auf. Dieses Verhalten kann mithilfe des Standard-base-Objekts überschrieben werden, wie es zuvor auch schon möglich war.

Run unterstützt nun Verben mit Parametern, wie z. B. Run *RunAs %A_ScriptFullPath% /Param.

Wenn ein Operator nach einer in Anführungszeichen gesetze Zeichenkette erfolgt, der entweder einen Operanden (&x) oder zwei numerische Operanden (x & y) akzeptieren kann, dann erfolgt die Auto-Verkettung und der Operator nur für den rechten Operanden. Denn in Anführungszeichen gesetzte Zeichenketten werden immer als nicht-numerisch betrachtet und sind deshalb keine gültigen Eingaben für numerische Operationen. Zum Beispiel funktionieren nun Ausdrücke wie "x" &y und "x" ++y.

Behoben:

1.0.92.02 - 19. Januar 2011

Speicherleck behoben, der auftrat, wenn der Rückgabewert eines Objektaufrufs oder einer Built-in-Funktion nicht verwendet wurde, wie z. B. file.ReadLine() oder SubStr(x,y,z) allein in einer Zeile.

Die Fehlerbehebung von v1.0.92.01 wurde mit einer besseren Fehlerbehebung ersetzt, wodurch auch der Fehler bei k::MsgBox(),x:=y behoben wird und if() nicht defekt ist.

1.0.92.01 - 18. Januar 2011

Geändert: FileCreateDir setzt nun A_LastError.

Behoben: GuiControl() oder Ähnliches wurde manchmal als Befehl fehlinterpretiert.

1.0.92.00 - 13. Januar 2011

Zusätzliche Unterstützung für Verbundzuweisungen wie x.y += z.

IniWrite in Unicode-Builds verbessert, damit die leere Zeile am Anfang jeder neuen Datei nicht mehr auftaucht.

Der Parser ist nun toleranter damit, was nach {/}/Else folgen kann, besonders wenn sie kombiniert werden.

1.0.91.05 - 1. Januar 2011

Behoben: Der Cleanup-Code in COM-Methode-Aufrufen gab die falschen Parameter frei.

Behoben (ANSI): DllCall setzte eine inkorrekte Länge für wstr-Parameter bei der Ausgabe.

Behoben: Variadische Funktionsaufrufe waren instabil, wenn ein param-Objekt leer war.

1.0.91.04 - 29. Dezember 2010

Behoben (Unicode): RegExReplace ließ den ganzen Text bis zur Startposition weg (fehlerhaft seit v1.0.90.00).

1.0.91.03 - 27. Dezember 2010

Behoben: RegEx-Callout-Teilausdruck-Variablen - fehlerhaft seit v1.0.90.00.

1.0.91.02 - 26. Dezember 2010

COM: Zusätzlicher Schutz gegen NULL-IDispatch/IUnknown-Pointer.

COM: QueryInterface für IDispatch überspringen, sobald VT_DISPATCH explizit übergeben wird.

Kleine Fehlerbehebung für die Wartbarkeit: obj.field := var ergibt nun korrekt SYM_STRING, nicht SYM_OPERAND.

1.0.91.01 - 24. Dezember 2010

Behoben: Unerwartete Ergebnisse mit File.Write(Str), nachdem der Text eingelesen wurde.

Behoben: Die Überprüfung der UTF-Stückliste verursachte unerwartete Ergebnisse in Dateien ohne Stückliste.

Behoben (ANSI): Parsende Schleifen und File.ReadLine() behandelten Chr(255) als EOF.

Behoben (Unicode): RegExReplace-Fehler, wo sich UTF-8- und UTF-16-Längen unterschieden.

Behoben: Deaktiviert den Abbruch von Input durch den letzten Hook-Hotkey.

Hinzugefügt: Einfache Optimierungen für RegExMatch/Replace.

1.0.91.00 - 21. Dezember 2010

Alle Änderungen in dieser Version beziehen sich auf COM.

Hinzugefügt: ComObjError gibt nun die vorherige Einstellung zurück.

Hinzugefügt: ComObjType(co) und ComObjValue(co).

Hinzugefügt: ComObjMissing().

Hinzugefügt: ComObjArray() und einfache SAFEARRAY-Unterstützung.

Hinzugefügt: "Übernehmen"-Parameter für ComObjParameter().

Geändert: Werte, die an COM-Funktionen mithilfe von ComObjParameter übergeben werden, werden nicht länger während dem Aufruf der Funktion freigegeben.

Geändert: ComObj.x() fällt nun auf PROPERTYGET zurück, wenn Element 'x' nicht gefunden wird. Dadurch werden Fehler in For-Schleifen für einige Objekte behoben.

Geändert: Wrappt unbehandelte Variantentypen in ein Objekt, anstatt einen Integer-Wert zurückzugeben.

Geändert: Verwaltet standardmäßig die Lebensdauer von VT_UNKNOWN / VT_ARRAY automatisch.

1.0.90.00 - 27. November 2010

Behoben: URLDownloadToFile in Unicode-Builds niedriger als Windows 7.

Behoben: Großgeschriebene ANSI-Zeichen wurden als ALT+0 im ANSI-Build gesendet.

Behoben: File.Pos wurde nach dem Versuch inkorrekt, das letzte EOF einzulesen.

Behoben: Escapesequenzen in #If-Ausdrücke und statischen Initialisierungen.

Behoben: ClipboardAll führte manchmal zum Absturz des Skripts in bestimmten Formaten.

Behoben: Transform HTML berechnete die Länge für "&#NNN;"-Entitäten falsch.

Behoben: VarSetCapacity ignoriert nun korrekterweise #MaxMem bei ByRef-Variablen.

Behoben: FileAppend,,Datei.txt setzt ErrorLevel auf 1, selbst bei Erfolg.

Behoben: Übereinstimmungslänge wurde bei RegEx-Callouts mit der P)-Option falsch berechnet.

Sean's Verbesserungen für die Zahlhandhabung in eine COM-Interoperation integriert.

RegExReplace und RegExMatch in Unicode-Builds optimiert.

Revision 61 - 3. Oktober 2010

Hinzugefügt: ObjClone(Object) wurde vergessen, als Object.Clone() implementiert wurde.

Hinzugefügt: Unterstützung für RegEx-Unicode-Eigenschaften in Unicode-Builds. Außerdem wurde PCRE auf 8.10 aktualisiert.

Hinzugefügt: Object.Remove(int, "") entfernt Object[int] ohne dabei andere Tasten zu beeinflussen.

Geändert: ComObj.xyz() wird nun immer als Methodenaufruf behandelt.

Geändert: Var := 123 bleibt nun ein Ausdruck, um Widersprüche zu vermeiden. Dadurch sind Var := 123 und Var := (123) gleichwertig, während früher dem Vorherigen nur eine Zeichenkette und dem Letzteren sowohl eine Zeichenkette als auch ein zwischengespeicherter Binär-Integer zugewiesen wurde. Insbesondere werden dadurch einige verwirrende Typenunverträglichkeiten mit COM-Objekten verhindert.

Behoben: Dynamische variadische Aufrufe von Funktionen mit Pflichtparametern.

Behoben: Der letzte Parameter einer global-behandelnden variadischen Funktion musste explizit lokal deklariert werden.

Behoben: Statische Initialisierungen interferieren mit der Einstellung der Haltemarke.

Behoben: Mehr Pointergröße-Fehler bei PCRE-Callouts in x64-Builds.

Behoben: Input mit 'M'-Option behandelte STRG+M (`r) als STRG+J (`n).

Behoben: Object.Remove(n) gab 0 zurück (nicht ""), wenn Object[n] nicht vorhanden war.

Revision 60 - 24. September 2010

Hinzugefügt: File.Encoding für das Ändern oder Abrufen des Zeichensatzes mithilfe eines File-Objekts.

Hinzugefügt: Variadische Funktionen und Funktionsaufrufe und indirekter Modus für Callbacks.

Hinzugefügt: Object.Clone()

Geändert: ByRef-Parameter benötigen nicht länger den Aufrufer, um eine Variable zu liefern.

Geändert: Obj.foo := "" gibt nun den Inhalt von foo wie vorgesehen frei (das Feld wird aber weiterhin nicht entfernt).

Geändert: OnMessage-Funktionen tolerieren nun optionale Parameter und ByRef-Parameter.

Geändert: RegisterCallback ermöglicht nun Ausführungszugriff auf Callbacks in 32-Bit-Versionen (in 64-Bit-Builds bereits möglich).

Geändert: RegisterCallback behandelt Parameteranzahl = "" eindeutig als weggelassen.

Behoben: For-Schleife behandelte Nicht-Ausdruck "0" als wahr für geskriptete Enumeratoren.

Behoben: ComEvent (ComObjConnect) funktionierte nicht im ANSI-Build.

Behoben: ComEvent (ComObjConnect) hat nicht korrekt lokale Variablen abgesichert/wiederhergestellt, wenn eine Funktion aufgerufen wurde, die bereits läuft.

Behoben: Pufferüberlauf in A_EndChar, wenn kein Endungszeichen vorhanden ist.

Behoben: Func->mNextFunc nicht auf NULL initialisiert (wird nur von systemnahen Skripten verwendet).

Debugger: Ermöglicht das Abrufen des Inhalts vom Objekt (mit einem unterstützten Debugger-Client).

Debugger: Einige Fehler behoben.

Revision 59 - 12. September 2010

Behoben: #If Ausdruck sollte nun jeden Ausdruck höchstens einmal pro Tastatureingabe in allen Fällen auswerten.

Geändert: SplashImage verwendet allgemeine Routinen zum Laden von Bildern; das heißt, dass absofort PNG und Vergleichbares unterstützt wird, aber auch, dass die Ergebnisse bei Symboldateien anders aussehen können.

Hinzugefügt: For x,y in z.

Hinzugefügt: Loop .. Until Ausdruck, mit jeder Schleife oder For-Schleife verwendbar.

Hinzugefügt: Benannte Schleifen; continue äußere_Schleife, break 2, usw.

Debugger: Kodiert stdout- und stderr-Pakete in UTF-8.

Debugger: Erlaubt das Abbrechen, Wiederholen oder Ignorieren, wenn die erste Verbindung fehlschlägt.

Debugger: Erlaubt das Anbringen eines Debugger-Clients, wenn dem Skript eine registrierte Fensternachricht gesendet wird.

Debugger: Erlaubt das Abtrennen des Debugger-Clients, wenn der Befehl für das "Abtrennen" von DBGp gesendet wird.

Revision 58 - 5. September 2010

Hinzugefügt: static Variable := Ausdruck.

Revision 57 - 4. September 2010

Fehler bei den DllCall-Rückgabetypen Str*, WStr* und AStr* auf x64 behoben.

Zusätzliche Funktionalität für InStr, um es in Einklang mit StringGetPos zubringen:

#Include <LibName> hinzugefügt, um ein Skript von einem Funktions-Library-Ordner explizit einzufügen.

Zusätzliche Funktionalität für IniRead und IniWrite, um eine ganze Sektion zu lesen oder zu schreiben.

Zusätzliche Funktionalität für IniRead, um eine Liste mit Sektionen abzurufen.

Zusätzliche Unterstützung von benutzerdefinierten Verben in Run/RunWait: Run *Verb Datei.

Verbesserungen für die Vorgehensweise von Run/RunWait, die Aktion und seine Parameter vom Ziel-Parameter zu extrahieren.

NumGet/NumPut geändert, damit Offset ganz weggelassen werden kann, da der Typ immer nicht-numerisch ist.

Einschränkung entfernt, dass Label nicht auf das Ende eines Blocks verweisen können.

Revision 56 - 29. August 2010

Zusätzliche Unterstützung für x64-kompilierte Skripte. Benötigt Ahk2Exe_L und x64 AutoHotkeySC.bin.

Behoben: Deref-Operator (*addr) hat Adressen außerhalb des 32-Bit-Bereichs abgelehnt.

Behoben: #If Ausdruck Speicherzuweisungsfehler in der x64-Version.

Behoben: Benutzerdefinierte Hotstring-Endungszeichen mit Codepunkte größer als U+00FF.

Behoben: Sonderzeichen wurden nicht in der richtigen Reihenfolge von SendInput/Play gesendet.

Behoben: */ wurde in Fortsetzungsbereichen verworfen (siehe L54).

Revision 55 - 19. August 2010

Behoben: GroupActivate setzt ErrorLevel nicht auf 1, wenn kein Label angegeben wurde.

Behoben: Tab-Steuerelemente in x64-Builds.

Behoben: Zeichenketten-kopierender Modus von StrPut, wenn Länge weggelassen wird; fehlerhaft seit L53.

Behoben: Datenabgleichprobleme in x64-Builds.

Geändert: A_LastError wird bei mehreren File*-Befehlen gesetzt, um Debuggen zu unterstützen.

Dazu zählen FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version und FileSetAttrib/Time.

Jedoch nicht FileCopyDir, FileRecycle, FileMoveDir, FileRemoveDir, FileRecycleEmpty, FileCreateDir und FileInstall, weil die APIs nicht immer ein Win32-Fehlercode setzen oder zurückgeben.

Revision 54 - 15. August 2010

Behoben: RunAs im Unicode-Build. [jackieku]

Behoben: RegisterCallback im x64-Build. [fincs]

Behoben: Ausführbare Dateien laufen nicht auf Win2k und WinXP unter SP2. Win2k benötigt SP4 und Updates (wahrscheinlich KB 816542). XP nicht getestet.

Behoben: Dialogfenster wie MsgBox reagierten nicht mehr, wenn sie von anderen Skript-Threads unterbrochen wurden. Nachrichtenfilter/Übergangslösung von L45 wurde entfernt. [Fehlerbericht]

Behoben: Multi-Byte-Zeichen im Standard-ANSI-Zeichensatz; verursachte auch ein Speicherleck. [Fehlerbericht]

Behoben: ComObject erlaubt nun reine numerische Eigenschafts-/Methodennamen. [Fehlerbericht]

Benutzerfreundlichkeit und Funktionen von FileOpen/File-Objekten verbessert.

Geändert: Der Label-Parameter von GroupAdd gilt nun für die gesamte Gruppe. [Diskussion]

Geändert: GroupActivate setzt ErrorLevel bei Erfolg/Misserfolg. (Die gleiche Diskussion wie oben)

Geändert: */ am Anfang einer Zeile wird ignoriert, wenn kein /* vorhanden ist. [Diskussion]

Die Unterbefehle ToCodePage und FromCodePage von Transform wurden entfernt.

Revision 53 - 8. August 2010

Mit AutoHotkey64 zusammengeführt - COM-Unterstützung und x64-Kompatibilität.

x64 (Änderungen seit AutoHotkey64):

COM (Änderungen seit AutoHotkey64):

Gängige Syntaxvalidierung für Enumeratoren implementiert. Enum[] und Enum.Next() werden nun mit oder ohne Parameter unterstützt. Enum[]:=Wert und ähnliche unklare Formen, die in AutoHotkey_COM/AutoHotkey64 funktionierten, sind nicht mehr erlaubt.

"Ptr"-Type ist für maximale Flexibilität und Konsistenz weiterhin signed (im Gegensatz zu AutoHotkey64).

Sonstige Änderungen:

Hinzugefügt: Objekt.HasKey(key).

Hinzugefügt: Object(obj) erhöht die Referenzzählung von obj und gibt dessen Adresse zurück.

Hinzugefügt: ObjAddRef() und ObjRelease().

Behoben: A_ThisHotkey hat jetzt den erwarteten Wert, wenn mit #If verwendet.

Behoben: RunAs im Unicode-Build (Fehler von jackieku behoben).

Geändert: Standard-Skript-Zeichensatz für ANSI-Builds ist nun CP0 (ANSI).

Geändert: x.y[] ist nun gleichwertig mit (x.y)[] anstatt mit x["y"].

Geändert: Built-in-Methoden können nun mit oder ohne Unterstrich-Präfix aufgerufen werden (z. B. obj.MaxIndex() oder obj._MaxIndex()).

Revision 52 (nochmal) - 10. Juli 2010

Zusätzliche Unterstützung für Built-in-Variablen und Umgebungsvariablen in Doppeldereferenzen.

Verbesserte Unterstützung für Multi-Byte-Zeichen in bestimmten Zeichensätzen (bisher wurden nur 932, 936, 949, 950 und 1361 unterstützt).

Behoben: StrPut schlug bei Zeichensätzen fehl, die WC_NO_BEST_FIT_CHARS wie UTF-7 nicht unterstützten.

Behoben: Doppeldereferenz als Objekt - literal%var%.literal.

Behoben: StrPut("", Codierung) 0-terminierte eine ungültige Adresse.

Revision 52 - 12. Juni 2010

Behoben: Der Key-Parameter von ObjRemove ist wie bei Object._Remove nun optional.

Behoben: Dateien wurden im Gegensatz zu älteren Versionen während des Lesens nicht ordnungsgemäß gesperrt.

Behoben: Großgeschriebenes Hex-Format verursachte negative Integer, dass unsigned zu Folge hatte.

Behoben: RegExMatch machte Ausgabe-Array-Elemente unbrauchbar, wenn bestimmte Bedingungen erfüllt wurden. Siehe Fehlerbericht.

Revision 51 - 11. April 2010

Geändert: Verwendet <EXENAME>.ahk anstelle von AutoHotkey.ini oder AutoHotkey.ahk.

Geändert: Verwendet standardmäßig UTF-8 für Skript-Dateien; mit /CPnnn überschreiben.

Behoben: Hebt die Pause auf, falls das Skript beendet wird, damit die __Delete-Metafunktion des Objekts ausgeführt werden kann.

Revision 50 - 27. März 2010

Verbesserte Flexibilität für Objekt._Insert.

Verbesserte Flexibilität für Objekt._Remove.

Freigabemodus-Flags für FileOpen hinzugefügt [von jackieku].

Behoben: Behoben: P-Option von RegExMatch gab bei Teilausdrücken fälschlicherweise 1 zurück, die mit nichts übereinstimmten.

Behoben: Objekt._SetCapacity(key,n) wurde in einigen Fällen nicht 0-terminiert.

Behoben: StatusBarGetText gab nur den halben Text in den Unicode-Builds zurück.

Revision 49 - 14. März 2010

obj._NewEnum() hinzugefügt.

ObjMethod(obj) für jede built-interne obj._Method() hinzugefügt.

Geändert: ObjSet/Get/Call kann nicht länger vom Skript aufgerufen/überschrieben werden.

Behoben: Potentieller Absturz durch die VK_PACKET-Überprüfung, die in L48 hinzugefügt wurde.

Behoben: Zeichencodes in VK_PACKET-Ereignisse wurden potenziell als Scancodes fehlinterpretiert.

Behoben: Ausnahmetext wurde nach dem ersten übereinstimmenden Steuerelement ineffektiv.

Revision 48 - 21. Februar 2010

Behoben: Alleinstehendes obj.() wurde nicht als gültiger Ausdruck erkannt.

ControlSend verwendet nun WM_CHAR, um Zeichen ohne zugehörigem Tastencode zu unterstützen. Solche Zeichen sind beispielsweise "…" (en-US), "∞" in einem Unicode-Build und {U+221e} in jedem Build.

KeyHistory zeigt nun den kompletten 16-Bit-Zeichencode von VK_PACKET-Ereignisse (VK=E7) an. Mit Send wurden sie möglicherweise für Unicode-Zeichen erzeugt.

Revision 47 - 13. Februar 2010

Behoben (Unicode): ControlGet,List mit ListView-Steuerelemente.

Revision 46 - 11. Februar 2010

A_FileEncoding hinzugefügt, um die aktuelle Standard-Dateicodierung zurück zugeben.

StrPut hinzugefügt und StrGet mit zusätzlichen Funktionen erweitert.

Revision 45 - 8. Februar 2010

_GetAddress hinzugefügt; _SetCapacity/_GetCapacity bearbeitet nun möglicherweise ein gegebenes Feld. [mehr Infos]

Übergangslösung für WM_PAINT-Endlosschleifen hinzugefügt, die häufig durch Unterklassen verursacht wurden.

Erlaubt obj.(), um die Standard-Methode eines Objekts aufzurufen; vergleichbar mit obj[""]().

Entwickler: Lösung und Projekt-Dateien für MSBuild 4.0 & VS2010 hinzugefügt. [mehr Infos]

Behoben (Unicode): 'Running'-Spalte in ListHotkeys.

Revision 44 - 7. Februar 2010

Behoben: Der Versuch "nichts" zu setzen, führte zum Absturz des Skripts. Zum Beispiel x[]:=z.

Behoben (Unicode): Nicht in der Lage, das Standard-Skript zu finden (Documents\AutoHotkey.ahk).

Behoben (Unicode): A_Desktop, A_ProgramFiles und mehrere andere Built-in-Variablen, die deren Wert aus der Registry lesen, terminierten Zeichenketten nicht richtig.

Behoben (ANSI): Zeichen im Bereich 0x80 bis 0xFF konnten nicht von InStr oder StringReplace gefunden werden.

Geändert (ANSI): Behandelt ToCodePage/FromCodePage wie andere nicht unterstützte/ungültige Unterbefehle.

Revision 43 - 29. Januar 2010

Behoben: obj.Func() gibt einen zufälligen Integer zurück, wenn es eine leere Zeichenkette sein soll.

Revision 42 - 28. Januar 2010

Mit AutoHotkeyU zusammengeführt.

Zahlreiche Fehlerbehebungen und Verbesserungen, einige im Zusammenhang mit der Zusammenführung.

Revision 41 - 20. Dezember 2009

Behoben: Gleitkommazahlen entsprachen einer leeren Zeichenkette, wenn sie als Keys in Objekten verwendet wurden. Sie werden nun wie vorgesehen in numerischen Zeichenketten umgewandelt, abhängig vom Gleitkomma-Format.

Revision 40 - 13. Dezember 2009

Das Verhalten von Meta-Funktionen und Multi-Parameter wurde geändert, um die Flexibilität zu verbessern. Meta-Funktionen werden nun aufgerufen, *bevor* nach einem geeigneten Feld in jedem base-Objekt gesucht wird; Werte in x.base werden Meta-Funktionen allerdings überschreiben, die in x.base.base definiert wurden. Die Verkettung von Meta-Funktionen (Vererbung) ist nun möglich, indem "Return" vermieden wird.

Verbesserte Standard-base-Funktionalität, um beständiger mit realen Objekten zu sein.

Geändert (Debugger): Während der Code durchlaufen wird, werden alle Klammern übersprungen, nur nicht solche, die eine Funktion beenden.

Geändert (Debugger): Das versteckte "Exit" am Ende des Skripts befindet sich nun *unter* der letzten physischen Zeile, um Verwechslungsgefahr zu vermeiden.

Revision 39 - 2. Dezember 2009

Behoben (Debugger): Fehler in der Base64-Decodierung, die von property_set verwendet wird.

Revision 38 - 17. November 2009

Hinzugefügt: #MenuMaskKey-Direktive, um die Taste zu ändern, mit der ALT/WIN-UP-Ereignisse maskiert werden sollen. Siehe diesen Thread für Hintergrundinformationen.

Geändert: Wenn x[1,2]:=3 ein Objekt für x[1] erstellt, dann wird dessen base nicht länger auf x.base gesetzt. Siehe die Dokumentation für ein Verfahren zur Steuerung dieses Verhaltens.

Revision 37 - 7. November 2009

Hinzugefügt: Unterstützung für die Objektaufrufsyntax obj[Methodenname](Parameter).

Revision 36 - 4. November 2009

Geändert: Wenn nach x.y oder Ähnliches unmittelbar eine öffnende eckige Klammer ([) erfolgt, dann wird die Kennung ganz rechts vor der Klammer als erster Parameter der Operation behandelt. Zum Beispiel ist a.b.c[d] gleichwertig mit ObjGet(a.b,"c",d) und x.y[z]:=v ist gleichwertig mit ObjSet(x,"y",z,v). Zuvor wurde jeder Unterausdruck vor einer eckigen Klammer separat ausgewertet.

Geändert: Wenn nach einem Methodenaufruf wie x.y() unmittelbar eine Zuweisung erfolgt, dann werden die Klammern als eckige Klammern behandelt. Zum Beispiel ist x.y(z):=v nun gleichwertig mit ObjSet(x,"y",z,v).

Behoben: If(Ausdruck) und While(Ausdruck) ohne trennendes Leerzeichen oder Komma.

Revision 35 - 25. Oktober 2009

Behoben: Alleinstehende Ausdrücke mit zwei oder mehr "Punkten" am Anfang, wie z. B. x.y.z(). (fehlerhaft seit L34). Beachtet, dass '(' oder '[' oder ':=' weiterhin notwendig ist.

Revision 34 - 24. Oktober 2009

Geändert: Das Setzen eines Wertes auf einer leeren Zeichenkette innerhalb eines Objekts speichert nun die leere Zeichenkette, anstatt das Key-Value-Paar vom Objekt zu entfernen. _Remove kann weiterhin verwendet werden, um Key-Value-Paare vollständig zu entfernen.

Geändert: Befehlsnamen müssen mit einem Leerzeichen, Tabulator oder Komma terminiert werden. Die folgenden Zeichen umgehen nicht länger diese Anforderung: <>:+-*/!~&|^[]. Zum Beispiel werden Syntaxfehler wie MsgBox< foo und If!foo nun bei der Ladezeit abgefangen.

Behoben: Return behandelt nun Ausdrücke korrekt, wodurch eine Variable ein Objekt enthalten kann. Zum Beispiel sollte Return x:=y, Return (x), Return x,... und ähnliches nun richtig funktionieren (Return x hat bereits funktioniert).

Behoben: Multi-Parameter get/set unterstützte Meta-Funktionen für mehrere Objekte nicht richtig (wie z. B. für x und x[y] im Ausdruck x[y,z]).

Behoben: Hintereinanderfolgende Objektzuweisungen wie z. B. x[y]:=z in r:=x[y]:=z ergaben keine Zahlen oder Objekte - fehlerhaft seit L33.

Behoben: x._Remove(y) führte zum Absturz des Skripts oder entfernte das falsche Element, wenn x nicht y enthielt.

Behoben: x.=y, if x.y=... und Ähnliches. Betrifft wahrscheinlich auch andere Ausdrücke.

Behoben: Allein stehende ternäre Ausdrücke benötigen nicht länger Leerräume. Zum Beispiel ist x? F(1) : F(2) nicht länger erlaubt.

Debugger: Beim Beenden des Skripts wird der Debugger getrennt, *nachdem* Objekte freigegeben wurden, um das Debuggen von __Delete-Handler zu ermöglichen.

Revision 33 - 3. Oktober 2009

Behoben: Lokale Variablen wurden nicht automatisch für Funktionen freigegeben, die Objekte oder reine Zahlen zurückgaben.

Behoben: Zwei separate Referenzzählungsfehler beim ternären Operator und Object().

Behoben: Wenn einer Variable eine Zeichenkette zugewiesen wurde, die von einer geskripteten Objektfunktion zurückgegeben wurde, dann wurde die Länge der Variable falsch gesetzt.

Behoben: Wenn die letzte Operation in einem Ausdruck eine Zeichenkette aus einem temporären Objekt ermittelte, dann wurde das Objekt und die Zeichenkette vorzeitig freigegeben.

Behoben: Numerische Zeichenketten mit speziellen Formatierungen wurden nicht beibehalten, wenn sie von einer Funktion mittels einer Variable zurückgegeben oder an einer rekursiven Funktion weitergegeben wurde.

Behoben: Wenn das Endergebnis eines Ausdrucks (mit Ausnahme von Return) ein Objekt ist, dann wird korrekt eine leere Zeichenkette ausgegeben, anstatt den Thread unauffällig zu abzubrechen.

Behoben: __Delete-Meta-Funktionen überschrieb manchmal temporäre Werte im Dereferenz-Zwischenspeicher.

Hinzugefügt: Eine ermittelte Adresse mittels &object kehrt möglicherweise mithilfe von Object(Adresse) als Objektreferenz zurück.

Revision 32 - 26. September 2009

Behoben: Send/PostMessage führt zum Absturz, wenn weniger als drei Parameter angegeben wurden.

Revision 31 - 26. September 2009

Hinzugefügt: Objekt/Array-Unterstützung und zahlreiche kleinere Änderungen, um das zu ermöglichen.

Hinzugefügt: Unterstützung für While(Ausdruck) ohne Leerräume.

Hinzugefügt: Trim, LTrim, RTrim.

Hinzugefügt: A ~= B; entspricht RegExMatch(A, B). Das wird möglicherweise in einer zukünftigen Version entfernt.

Behoben: Eine Inkompatibilität mit LowLevel.

Geändert: Die Zeichen [, ] und ? sind nicht länger in Variablennamen gültig. Folglich benötigt ? (ternär) nicht länger ein Leerzeichen auf jeder Seite.

Geändert: Optionale Parameter können nun überall in der Parameterliste eines nicht-dynamischen Funktionsaufrufs weggelassen werden. Da das mittels Einfügen des Parameter-Standardwerts während der Ladezeit funktioniert, wird es nicht unterstützt und ist für dynamische Funktionsaufrufe nicht erlaubt.

Debugger: Verschiedene kleinere Änderungen, um den Programmablauf zu vereinfachen, während der Code durchlaufen wird.

Optimierung: Wenn der erste Parameter von DllCall eine literale Zeichenkette ist, der einer bereits vorhandenen Funktion im Speicher entspricht, dann wird er mit der aktuellen Adresse der Funktion ersetzt.

Von v1.0.48.03 auf v1.0.48.04 aktualisiert.

Revision 30 - 31. Mai 2009

Von v1.0.48.02 auf v1.0.48.03 aktualisiert.

Revision 29 - 2. Mai 2009

Alle unterstützten Bildformate können jetzt als Menüsymbole verwendet werden. Derzeit ist es notwendig, die tatsächliche Größe anzugeben, wenn die Transparenz des Symbols in Windows Vista oder höher erhalten bleiben soll. Zum Beispiel:

Menu, Menüname, Icon, Menüpunktname, Dateiname.png,, 0

Revision 28 - 2. Mai 2009

Verbesserte durchschnittliche Performance von dynamischen Funktionsaufrufen mittels Implementierung von binärer Suche nach Funktionsnamen. Diese Änderung gilt auch für andere Bereiche, wie Auflösung von Funktionsreferenzen in Ausdrücken während der Ladezeit und Auflösung von OnMessage, RegisterCallback, etc. während der Laufzeit.

Revision 27 - 26. April 2009

Von v1.0.48.00 auf v1.0.48.02 aktualisiert.

Revision 26 - 11. April 2009

Behoben: Menüsymbole wurden nicht bei Elementen gezeichnet, die Untermenüs haben, wenn Owner-Drawing verwendet wurde.

Behoben: Menüsymbole wurden nicht freigegeben, wenn alle Menüpunkte gleichzeitig gelöscht wurden.

Geändert (Source): AutoHotkey.sln in AutoHotkey_L.sln umbenannt, damit das VS-Fenster leichter identifiziert werden kann.

Revision 25 - 30. März 2009

Behoben: Send {U+xxxx} setzt nun korrekt den Modifikatorstatus wie bei normalen Tasten.

Behoben: Send {U+..xx} löst nicht länger Hotkey SCxx aus.

Revision 24 - 30. März 2009

Hinzugefügt: Unterstützung für Send {U+xxxx}. SendInput() wird verwendet, wenn eine ordnungsgemäße Unicode-Unterstützung verfügbar ist, ansonsten wird wieder ALT+Ziffernblock benutzt.

Revision 23 - 30. März 2009

Behoben: GuiControl, Enable/Disable setzt den Fokus nur noch neu, wenn das fokussierte Steuerelement deaktiviert war.

Revision 22 - 26. März 2009

Optimiert: If var [not] in/contains Vergleichsliste, besonders für lange Listen mit kurzen Feldern.

Revision 21 - 16. März 2009

Kleinere Optimierungen für While. [Danke an Chris]

Behoben (Debugger): Revisionen 19 und 20 ließ Timer-Threads von der Aufrufliste weg.

Behoben (Debugger): XML-reservierte Zeichen wurden in den meisten Fällen nicht mit einem Escapezeichen versehen.

Behoben (Debugger): Falscher Befehl und transaction_id wurden in der letzten Antwort verwendet, bevor das Skript beendet wurde.

Revision 20 - 27. Februar 2009

Geändert: Wenn ein Symbol nicht mit einer neuen Methode geladen werden kann, dann soll die alte Methode wieder verwendet werden.

Revision 19 - 26. Februar 2009

Hinzugefügt: Neue Option Gui, Font, qN, um die Schriftartqualität zu setzen bzw. Anti-Aliasing zu kontrollieren, wobei N zwischen 0 und 5 liegt.

Behoben: IL_Add wählt nun bei mehreren Symbolgrößen eine Größe aus, die am besten geeignet ist.

Mit AutoHotkey v1.0.48 zusammengeführt, für Fehlerbehebungen, Optimierungen und anderen Änderungen von Chris. Einige AutoHotkey_L-Funktionen wurden in der Hauptversion integriert; folgende Änderungen wurden an diesen Funktionen seit den vorherigen Revisionen vorgenommen:

Revision 18 - 21. Februar 2009

Behoben: Durch die unvollständige Fehlerbehebung in der vorherigen Revision bewirkte eine Verkettung gefolgt von einer Zuweisung, dass der Rest des Ausdrucks in einigen Fällen übersprungen wurde.

Revision 17 - 20. Februar 2009

Hinzugefügt: Menüsymbole mithilfe der Unterbefehle Icon und NoIcon im Menu-Befehl.

Geändert: Negative Symbolnummern können nun verwendet werden, um eine Ressourcen-ID innerhalb einer ausführbaren Datei zu kennzeichnen.

Geändert: Standard-Style von Menüs um MNS_CHECKORBMP erweitert.

Geändert: Sowohl die kleinen als auch großen Versionen der benutzerdefinierten Infobereichssymbole werden nun geladen, um sie an den richtigen Stellen anzuzeigen.

Behoben: Das Laden von Symbolen ausführbarer Dateien, deren Größen von den Systemgrößen Klein/Groß abweichen.

Revision 16 - 4. Februar 2009

Behoben: Das Löschen eines Menüpunktes löschte teilweise auch sein zugeordnetes Untermenü.

Revision 15 - 1. Februar 2009

Behoben: Die Präsenz von SetFormat in einem *kompilierten* Skript deaktivierte nicht den Binärzahl-Schreibcache. SetFormat sollte nun ordnungsgemäß in kompilierten Skripten funktionieren.

Revision 14 - 1. Februar 2009

Zahlreiche Fehlerbehebungen und Optimierungen von Chris (pre-v1.0.48 beta).

Hinzugefügt: Unterstützung für RegEx-Callouts und die Auto-Callout-Option 'C'.

Geändert: A_AhkVersion beinhaltet nun die Revisionsnummer. Zum Beispiel 1.0.47.07.L14.

Behoben: HWND's/Fenster-ID's wurden per Vorzeichen auf 64-Bit erweitert. Zum Beispiel wurde 0xb482057e zu 0xffffffffb482057e.

Revision 13 - 29. November 2008

Behoben: Ungültige DllCall-Typen wurden als INT in einigen Build-Umgebungen behandelt.

Hinzugefügt: Übergangslösung für das GuiEscape-Problem beim Deaktivieren des fokussierten Steuerelements.

Geänderte Versionsinformation: InternalName, ProductName und FileDescription sind nun "AutoHotkey_L" anstelle von "AutoHotkey".

Revision 12 - 6. September 2008

Behoben: Mögliche Zugriffsverletzung beim Verwenden von property_get in einer Built-in-Variable. -- DBGP

Revision 11 - 5. September 2008

Behoben: Prüfsumme von AutoHotkeySC.bin mittels Post-Build-Skript entfernt (AutoHotkey muss installiert sein).

Hinzugefügt: .L-Suffix für A_AhkVersion.

Hinzugefügt: Vorläufige Unterstützung für DBGp (interaktives Debuggen).

Revision 10 - 2. August 2008

Behoben: WheelLeft/WheelRight-Unterstützung, dass seit Revision 9 fehlerhaft war.

Revision 9 - 29. Juli 2008

Behoben: Ermöglicht Break/Continue in While.

Behoben: TrayTip in Windows-Versionen außer Englisch und möglicherweise andere Nebeneffekte beim Verwenden von Vista-Versionen.

Revision 8 - 27. Juli 2008

Hinzugefügt: #IfTimeout-Direktive, um das Zeitlimit für das Auswerten von #If-Ausdrücke zu bestimmen (in Millisekunden). 1000 ist Standard.

Hinzugefügt: Statisch-behandelnder Modus für Funktionen. "Static" muss jeder lokalen/globalen Variablendeklaration vorangestellt werden.

Hinzugefügt: One-True-Brace-Unterstützung für While.

Geändert: While setzt nun A_Index, wenn der Durchlauf beginnt.

Revision 7 - 26. Juli 2008

Hinzugefügt: IsFunc(Funktionsname) - Gibt eine Zahl ungleich 0 zurück, wenn der Funktionsname im Skript oder als Built-in-Funktion existiert.

Revision 5 - 19. Juli 2008

Veraltete Referenzen auf Test-Skripte entfernt.

Einfacher Standard-Test-Skript hinzugefügt.

Revision 4 - 18. Juli 2008

Hinzugefügt: #if (Ausdruck) - Vergleichbar mit #IfWinActive, aber für beliebige Ausdrücke.

Hinzugefügt: WheelLeft, WheelRight - Unterstützung für WM_MOUSEHWHEEL, eingeführt durch Windows Vista. (Benötigt Vista).

Hinzugefügt: While, Ausdruck - Schleife, während eine Bedingung wahr ist.

Hinzugefügt: A_IsPaused - Wahr, wenn der darunterliegende Thread pausiert ist.

Hinzugefügt: A_IsCritical - Wahr, wenn der aktuelle Thread mithilfe des "Critical"-Befehls als unterbrechungsfrei markiert ist.

Geändert: Erlaubt eine beliebige Anzahl an Parametern, die an dynamischen Funktionsaufrufen übergeben werden können.

Behoben: Zugriffsverletzung, verursacht durch WinGetClass und Unterklassenfenster.

Behoben: Zugriffsverletzung, verursacht durch leere dynamische Funktionsreferenzen.