Ä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.36.02 - 7. Dezember 2022

Verbessert: ComObjConnect erkennt nun auch Trennungen via __Delete.

Behoben: Ein Leistungsproblem im Zusammenhang mit Befehlsargumenten, die größer als 4*1024*1024 Zeichen sind.

Behoben: FileCreateDir im Zusammenhang mit Netzwerkfreigaben/UNC-Pfaden.

Behoben: Undefiniertes Verhalten von File.Length/Read() bei Konsolenpuffern.

1.1.36.01 - 2. Dezember 2022

Behoben: Undefiniertes Verhalten bei numerischen Vergleichen in Switch.

1.1.36.00 - 1. Dezember 2022

Hinzugefügt: VerCompare().

Hinzugefügt: Unterstützung für Haltepunkt-Ausnahmen via DBGp.

Erweitert: #Requires unterstützt nun Operatoren für Bereichsprüfungen (< <= > >= =) und zusätzliche Schlüsselwörter: Unicode, ANSI, 32-bit, 64-bit.

Hinzugefügt: Die Versionsinformation in AutoHotkey.exe enthält nun CompanyName, was einen Fehler in Windows 10 beheben könnte, wo das Programm nicht in "Öffnen mit" erscheint.

Geändert: Switch/Case führt nun nicht-numerische Vergleiche durch, wenn der Switch- oder Case-Ausdruck eine einzelne, direkt geschriebene Zeichenkette ist, wie z. B. "00". Außerdem wurde das Vergleichsverhalten dokumentiert, das zuvor undokumentiert war.

Behoben: Inkonsistenzen mit Integer-Eigenschaftsnamen via IDispatch.

Behoben: Mögliche Abstürze beim Inspizieren eines ComObjects via DBGp nach Nutzung von ComObjConnect.

Behoben: FileAppend behandelt nun eine leere Codierung als weggelassen.

Behoben: Versionsvergleiche ignorieren nun numerische Build-Informationen, z. B. 1.1.35.00+1+abcdef (1 ist die Anzahl der Commits seit 1.1.35.00).

Behoben: FileCreateDir X\Y\ (mit einem Schrägstrich am Ende) konnte X nicht erstellen [fehlerhaft seit v1.1.35.00].

1.1.35.00 - 30. Oktober 2022

Geändert: GroupActivate und GroupClose verhalten sich nun intuitiver:

Beiträge von jeeswg (PRs #186, #235, #240, #249, #273, #274):

Fehlerbehebungen:

Behoben: Rechtschreibfehler in der "#Warn Unreachable"-Meldung.

Behoben: FileCreateDir's Behandlung von Pfaden, die ".." oder "/" enthalten.

Behoben: Einige Probleme mit dem Parameter RootVerz\DateiName von FileSelectFile:

Behoben: FileSetTime setzt nun A_LastError, wenn es keine Dateien findet.

Behoben: EnvAdd/+= verlor beim Addieren von 115.292.150.461+ Sekunden an Genauigkeit.

Behoben: Der Tastatur-Hook fügte eine unterdrückte tote Taste wieder ein, wenn die Eingabetaste gedrückt wird, z. B. in der Sequenz `o{Enter}, wenn Folgendes zutrifft:

Behoben: Die Selected-Option von ControlGet List wiederholte unter x64 die Ausgabe, wenn das Ziel 32-Bit ist.

Behoben: Stack-Corruption bei den Count-Optionen von ControlGet List.

1.1.34.04 - 23. August 2022

Behoben: Callback-Funktionen wurden nicht in den Aufrufstapel des Debuggers aufgenommen.

Behoben: MsgBox-Zeitlimit wurde als "OK" gemeldet, wenn es innerhalb von 100 ms nach dem Start angezeigt wurde.

Behoben: Edit-Steuerelement ignoriert nun +WantTab, während +ReadOnly aktiv ist.

Behoben: property_get gab eine lokale Variable zurück, obwohl -d dies verhindern sollte.

Behoben: RegRead unterstützt nun REG_MULTI_SZ-Werte, die leere Einträge enthalten.

Behoben: x[,y]:=z führte zu undefiniertem Verhalten.

1.1.34.03 - 5. Juni 2022

Behoben: Doppeltes Backspacing bei Unicode-Ergänzungszeichen in Hotstrings.

Behoben: a:: wurde nicht ausgelöst, wenn a up:: und a & b:: vorhanden sind.

Behoben: MinSize/MaxSize wurden nicht korrekt vor dem ersten Aufruf von Gui Show angewendet.

Behoben: Der Hook-Thread bleibt nicht mehr in einer Endlosschleife stecken, wenn ein gestopptes InputHook zu früh neu gestartet wird.

Behoben: Keine Abstürze oder undefiniertes Verhalten mehr, wenn ein leerer Parameter an FileCopy, FileMove, FileCopyDir, FileMoveDir oder FileRemoveDir übergeben wird.

Behoben: Tote Tasten wurden fälschlicherweise nach der Unterdrückung des letzten Zeichens eines Hotstrings (z. B. bei :?*:ò::ó) vom Tastatur-Hook neu belegt.

1.1.34.02 - 13. Mai 2022

Behoben: Bugs, welche via v1.1.34.00 entstanden sind:

1.1.34.01 - 7. Mai 2022

Behoben: Bugs, welche via v1.1.34.00 entstanden sind:

1.1.34.00 - 5. Mai 2022

Hinzugefügt: AutoHotkey.exe kann jetzt als Basis für kompilierte Skripte verwendet werden - dies ermöglicht kompilierten Skripten, externe Dateien auszuführen, wenn ihnen die Befehlszeilenoption /script übergeben wird.

Hinzufügt: Am Anfang eines Skripts kann jetzt implizit Code eingebunden werden - entweder durch Einbetten einer Ressource in AutoHotkey.exe oder durch Nutzung der Befehlszeilenoption /include.

Geändert: Menu NoMainWindow/MainWindow kann jetzt in unkompilierten Skripten verwendet werden.

Geändert: ~x & y:: hat keinen Einfluss mehr auf die Unterdrückung von x, wenn es via #If deaktiviert ist.

Verbessert: Bei FileCopyDir kann das Quellverzeichnis jetzt auch eine ZIP-Datei sein, sofern dies vom Betriebssystem unterstützt wird; in diesem Fall wird der Inhalt extrahiert.

Behoben: Ausführung mehrerer Run-Once-Timer im selben Tick [fehlerhaft seit v1.1.33.11].

Behoben: Bugs beim Positionieren oder Ändern der Größe von Tooltips.

Optimiert: ToolTip wurde für Situationen optimiert, wo sich der Text nicht ändert, um Flackern zu reduzieren und die Geschwindigkeit zu erhöhen.

Behoben: Taste-Oben-Hotkeys wurden nicht ausgeführt, wenn sie nach (aber nicht vor) dem Drücken der Taste eingeschaltet werden und wenn diese Taste zudem als benutzerdefinierte Präfixtaste mit dem Tilde-Präfix verwendet wird (z. B. interferierte die Aktivierung von ~a & b:: mit a up::).

Behoben: Benutzerdefinierte Kombinations-Hotkeys, bei denen die Präfixtaste einen Hook-Reset auslöst, wie z. B. ~RButton & WheelUp::, wenn RButton:: den einzigen Tastatur-Hook-Hotkey des Skripts aktiviert oder deaktiviert.

1.1.33.11 - 20. April 2022

Behoben: Format(n) gibt nicht länger einen leeren Wert zurück, wenn n ein rein numerischer Ausdruck ist.

Behoben: Der Debugger konnte obj.<base>.<base> nicht abfragen.

Geändert: Debugger-Schritte/Haltepunkte überspringen nun Try/Catch/Finally/Case.

Behoben: Switch { löste fälschlicherweise einen Ladezeitfehler aus.

Behoben: Debugger stack_get meldete "falsche Zeile" nach OnError.

Behoben: Debugger stack_get meldete "falsche Zeile" beim Auto-Execute-Thread.

Behoben: Auto-Env-Abruf und A_ComVar erlauben nun auch Variablen, die größer als das offizielle Limit sind [PR #259 von mikeblas].

Behoben: A_EventInfo in Verbindung mit Mausrad-Hotkeys [fehlerhaft seit v1.1.33.05].

Behoben: ControlClick wandelt die Koordinaten für Mausradmeldungen nun korrekt um.

Behoben: Die IDispatch-Implementierung für AutoHotkey-Objekte behält die Groß-/Kleinschreibung für Eigenschaftsnamen nun bei.

Behoben: #Warn StdOut verwendet nun standardmäßig Zeichensatz 0, wenn /ErrorStdOut nicht verwendet wird.

Behoben: Es kommt nicht mehr zu Abstürzen, wenn die __delete()-Metafunktion eines Timers den nächsten Timer löscht.

1.1.33.10 - 29. August 2021

Behoben: Laden von JPG/GIF-Dateien, die bereits zum Lesen geöffnet sind.

Behoben: if-var-is hatte digits/xdigits falsch identifiziert.

Hinzugefügt: Sicherheitsüberprüfung für "ControlGet Selected", falls es mit einem Nicht-Edit-Steuerelement verwendet wird.

Behoben: Variablen wurden in bestimmten seltenen Fällen auf NULL gesetzt, was zu Abstürzen führte. Dies trat auf (der einzige bestätigte Fall), wenn eine Zeichenkette länger als 63 Zeichen von einer Funktion zurückgegeben und einer Variable zugewiesen wurde, während AutoHotkey als Windows-Store-App ausgeführt wurde.

Behoben: InputHook-Callbacks schlugen fehl, nachdem die Eingabeerfassung gestoppt und neu gestartet wurde.

1.1.33.09 - 8. Mai 2021

Behoben: Absturz beim Laden, wenn eine AltTab-Aktion in einem Tasten-Oben/Unten-Paar verwendet wird.

Behoben: Undefinierter Fehlertext, wenn die Hauptskriptdatei nicht geöffnet werden kann.

Entfernt: "Error at line 0" aus Fehlermeldungen entfernt, was vor dem Lesen der ersten Zeile erschienen ist.

Behoben: Der Fokus wurde beim Wiederherstellen einer minimierten GUI zurückgesetzt.

Behoben: Der Fokus wurde nicht gespeichert, wenn eine GUI mit Gui Show minimiert wurde.

1.1.33.08 - 23. April 2021

Behoben: SendLevel-Ereignisse ungleich Null wurden fälschlicherweise in Fällen unterdrückt, die nicht von dem v1.1.33.07-Fix abgedeckt wurden:

1.1.33.07 - 21. April 2021

Behoben: Das Tray-Symbol wird nicht mehr einfrieren und unscharf werden, wenn sich die DPI des Bildschirms ändert.

Behoben: Hotkeys, die via #InputLevel deaktiviert sind, werden nicht mehr fälschlicherweise unterdrückt.

1.1.33.06 - 14. März 2021

Behoben: Ein mit v1.1.33.05 entstandener Bug führte dazu, dass bestimmte Hotkeys ignoriert wurden. Dazu gehören Joystick-Hotkeys und alle Hotkeys, auf die #MaxThreadsBuffer oder die B-Option angewendet wird.

1.1.33.05 - 10. März 2021

Behoben: Bugs bei Hotkey-Varianten mit unterschiedlichen #InputLevels.

Behoben: Ctrl/Shift/Alt (ohne L/R) als Hook-Hotkeys.

1.1.33.04 - 2. März 2021

Entfernt: Abhängigkeit von der POPCNT-Instruktion entfernt, da diese von alten CPUs (z. B. Core 2) nicht unterstützt wird.

1.1.33.03 - 1. März 2021

Behoben: Das Programm stürzte ab, wenn ein leeres SafeArray enumeriert wurde.

Behoben: Die Höhe hat sich bei einem Button/CheckBox/Radio-Steuerelement mit -Wrap nicht automatisch erweitert.

Behoben: WM_DESTROY umging das Freigeben von Objekten in globalen/statischen Variablen.

Behoben: Der zweite Versuch von WinMenuSelectItem, eine Übereinstimmung zu finden, wird nun korrekt mit dem &-Zeichen umgehen. Insbesondere werden Menüpunkte mit tatsächlichem Text wie "a && b", die als "a & b" erscheinen, nun mit "a & b" statt mit "a  b" übereinstimmen.

Behoben: Ein Haltepunkt auf einer Case/Default-Zeile führt dazu, dass am Ende des vorherigen Case angehalten wurde.

Behoben: SoundBeep ignoriert nun die Dauer, wenn sie negativ ist, anstatt wegen Überlauf auf einen großen positiven Wert zu wechseln.

Behoben: Maus-Hotkeys mit "!" maskieren nun Alt-Oben nach Tastenwiederholung, wenn möglich.

Behoben: Mehrere Probleme mit überlappenden Hotkeys.

1.1.33.02 - 17. Juli 2020

Behoben: InputHook.EndKey wird nun jedes vk gegenüber sc000 bevorzugen.

Behoben: InputHook.KeyOpt("{sc000}", Flags).

Behoben: #Warn Unreachable kennzeichnete Case/Default als unerreichbar.

1.1.33.01 - 13. Juli 2020

Behoben: Modifikator-Taste-Oben-Hotkeys wie LShift up:: unterdrücken das Taste-Oben nicht länger, es sei denn, ein entsprechender Taste-Unten-Hotkey ist definiert.

Behoben: Ein Symbol, das aus einer DLL/EXE geladen wurde, verwendet nicht länger die am ehesten passende Größe, wenn sie die erste in der Symbolgruppe ist [fehlerhaft seit v1.1.33.00].

Behoben: a up:: hatte fälschlicherweise Vorrang vor b & a up::, wenn a:: definiert ist, aber nicht b & a::.

Behoben: b & a up:: wird a nicht länger unterdrücken, wenn a:: definiert, aber via #If deaktiviert ist und b & a:: nicht definiert ist.

1.1.33.00 - 30. Juni 2020

Hinzugefügt: Codierung-Parameter für #ErrorStdOut.

Hinzugefügt: Befehlszeilenparameter /ErrorStdOut=Codierung.

Hinzugefügt: #Warn Unreachable (Warnungsmodus).

Hinzugefügt: #Requires AutoHotkey vVersion (Direktive).

Hinzugefügt: Erkennung von programmterminierenden SEH-Ausnahmen - es wird ein Fehlerdialogfenster angezeigt.

Implementiert: Zahlreiche Verbesserungen für Ahk2Exe, die von fincs, TAC109, Joe DF und Ben Allred entwickelt wurden.

Behoben: Send verursachte unerwünschte Hotkey-Pufferung.

Behoben: Ein Bug konnte dazu führen, dass Input sich undefiniert verhielt. [PR #159 von Helgef]

Behoben: WinKill kann nun mehr als WinClose.

Behoben: A_WinDir gibt nun immer das Windows-Verzeichnis des Systems zurück.

Behoben: FileGetShortcut/FileCreateShortcut erhöhen/verringern nicht länger negative Symbolindexnummern (Ressourcen-IDs).

Behoben: Die Locale-Option von InputBox bewirkt nicht länger, dass die Abbrechen-Schaltfläche fokussiert wird.

Behoben: Die Tastaturkurzbefehle einer Menüleiste funktionierten nicht, wenn die GUI keine Steuerelemente hatte.

Behoben: LoadPicture verwendet nun 256x256-Grafiken, wenn sie in einer DLL/EXE vorhanden sind.

Behoben: Der DBGp-stderr-Kopiermodus unterdrückt nicht länger Fehlerdialogfenster.

Behoben: ControlGet Line setzt ErrorLevel nun auf 1, wenn die Zeile gerade leer ist.

1.1.32.00 - 24. November 2019

Geändert: Befehle und Funktionen mit einem FensterTitel-Parameter behandeln getarnte Fenster nun als versteckt.

Hinzugefügt: Die Suchrichtung von PixelSearch kann im Fast-Modus nun umgekehrt werden. [PR #156 von changyuheng]

Hinzugefügt: OnKeyUp-Callback für InputHook.

Behoben: GroupDeactivate wird in Windows 10 (und vermutlich auch in Windows 8) den Desktop ab sofort ignorieren.

Behoben: Switch hatte Zeichenketten immer als True behandelt.

Behoben: A_PriorKey war leer, nachdem Unicode-Zeichen gesendet wurden.

Behoben: WinActivate geht nicht mehr davon aus, dass NULL-Vordergrundfenster == Taskleiste.

Behoben: Send {Del} hat AltGr nach dem Loslassen nicht mehr wiederhergestellt.

Behoben: vk13 und sc045 als Neubelegungszieltasten.

Geändert: Unnötige Überprüfungen für Control und Sleep in einzeiligen Hotkeys entfernt.

Geändert: Veralteter Windows 9x/NT4-Support-Code entfernt und andere Wartungsarbeiten durchgeführt.

1.1.31.01 - 14. Oktober 2019

Behoben: Switch %v%, Case %v% und Throw %v%.

Behoben: Case 2,,: zeigt nun eine Fehlermeldung an, statt einen Programmabsturz zu verursachen.

Behoben: AltTab-Hotkeys [fehlerhaft seit v1.1.31.00].

Behoben: Die X-Option von Hotstring erlaubt nun Leerraumzeichen nach ::.

Behoben: Einzeilige Hotkeys verbieten nun mehrzeilige Anweisungen wie IF.

1.1.31.00 - 28. September 2019

Hinzugefügt: Switch.

Hinzugefügt: InputHook.

Hinzugefügt: Locale-Option für InputBox, um die Namen der Schaltflächen in der Sprache des aktuellen Benutzers darzustellen. [PR #143 von Ragnar-F]

Geändert: Unterstützung für lange Pfade verbessert.

Allgemeine Hotkey-Verbesserungen:

AltGr-Fehlerbehebungen:

Umschalt-Ziffernblock-Fehlerbehebungen:

Behoben: Die Slider-Option +TickInterval funktioniert nun auch, wenn Range nicht gesetzt ist.

Behoben: Die Slider-Option +TickInterval0 setzt das Intervall nun auf 0 zum Deaktivieren der Teilstriche.

Behoben: Menü- und GUI-Ereignisse haben in einigen Fällen Schleifen verursacht, die die CPU voll ausgelastet haben. Insbesondere wenn eine modale Meldungsschleife läuft und das Skript unterbrechungsfrei ist, wurden Menü- und GUI-Ereignismeldungen wiederholt neu gesendet. Diese werden nun verworfen, da sie nicht behandelt oder in der Warteschlange gehalten werden können. Dies ist konsistent mit Hotkeys, etc.

Behoben: Kritische DllCall-Fehler werden nun immer beendet und das OnExit-Ergebnis ignoriert.

Behoben: ExitApp 2 hat Objektfreigaben in globalen/statischen Variablen umgangen.

Geändert: ComObjCreate verwendet nun CLSIDFromProgID für GUID-fremde Zeichenketten. Dies behebt ComObjCreate("Microsoft.Windows.ActCtx") und möglicherweise auch andere, die nicht in der Registry zu finden sind, aber mit VBScript und JScript funktionieren.

1.1.30.03 - 4. April 2019

Behoben: Debugger context_get kann #Warn UseUnset nicht mehr auslösen.

Behoben: Direkte Modifikator-Hotkeys wie Shift:: funktionieren wieder (fehlerhaft seit v1.1.30.02).

1.1.30.02 - 1. April 2019

Behoben: Menu Rename erlaubt nun Duplikate und nicht-operative bzw. Groß-/Kleinschreibung-bezogene Umbenennungen.

Behoben: X-Option von Hotstring(). [PR #132 von Helgef]

Behoben: __init/__delete verursachte irreführende Fehlerzeile/Stacktrace.

Behoben: #If-Ausdrücke blieben im Sleep-Modus stecken und Ähnliches.

Behoben: Benutzerdefinierte Tastenkombos wurden falsch ausgelöst, nachdem eine benutzerdefinierte Tastenkombo sich selbst suspendiert hatte.

1.1.30.01 - 11. November 2018

Geändert: TV_Add/TV_Modify erlauben nun Angaben wie "Bold1" und "Bold0".

Behoben: Hotkey-Paare mit einem #InputLevel ungleich 0 blockierten gesendete Ereignisse.

Behoben: Control Choose sendet nun auch WM_COMMAND, wenn die ID des Steuerelements 0 ist.

Behoben: Heap Corruption in Skripten mit Tastatur-Hook aber ohne Hotkeys.

Behoben: Escapesequenzen in einzeiligen Hotstrings mit der X-Option.

Behoben: ``-Escapesequenz, die vor einer ;-Kommentarmarkierung steht.

Behoben: finally korrumpierte den Wert von einem ausstehenden return.

Behoben: MsgBox erkennt Timeouts auch dann, wenn der Thread unterbrochen ist.

Behoben: Ahk2Exe unterstützt nun mehr interne Variablen in #Include.

1.1.30.00 - 22. August 2018

Behoben: SendInput/SendPlay stellt DownR/neubelegte Modifikatoren wieder her.

Geändert: Die Anzahl der Hotkeys pro Skript wurde von 1000 auf 32762 erhöht.

Geändert: Befehle, die On/Off/Toggle akzeptieren, akzeptieren auch 1/0/-1 (wo dokumentiert).

Verbesserungen bei der Debugger-Unterstützung (DBGp):

1.1.29.01 - 2. Juni 2018

Behoben: WinMove verursacht in einigen Fällen einen Programmabsturz [fehlerhaft seit v1.1.29.00].

Behoben: Gui x:Default funktionierte nicht, wenn keine Gui erstellt wurde [fehlerhaft seit v1.1.29.00].

1.1.29.00 - 25. Mai 2018

Hinzugefügt: Objekt.Count() und ObjCount(Objekt).

Hinzugefügt: ObjGetBase(Objekt) und ObjSetBase(Objekt, Basis).

Hinzugefügt: ObjRawGet(Objekt, Schlüssel).

Hinzugefügt: OnError(Func [, HinzufügenEntfernen]).

Ausnahmebehandlung überarbeitet:

Entfernt: Die maximale Anzahl benutzerdefinierter Modifikatoren für jede Taste.

Geändert: Send {Text} wird nicht mehr die Feststelltaste umschalten oder auf Win+L warten.

Behoben: #Warn ClassOverwrite gibt keine Warnung mehr für A_Args aus.

Verbessert: Der DBGp-Befehl source wandelt nun korrekt zwischen dem Zeichensatz der Datei und UTF-8 um, und reduziert die Codegröße.

Sonstige Optimierungen der Codegröße und triviale Anpassung des Codes.

1.1.28.02 - 7. April 2018

Behoben: Control ChooseString und ControlGet FindString ignorierten die ersten zwei Listeneinträge.

Behoben: Control ChooseString senden nun auch WM_COMMAND, wenn das Steuerelement eine ID von 0 hat.

Behoben: WinActivate stellt nun das aktive Fenster wieder her, wie ursprünglich für [v1.1.20.00] vorgesehen.

1.1.28.01 - 31. März 2018

Behoben: Thread behandelte weggelassene Parameter als 0.

Behoben: Text via FileAppend zur Standardfehlerausgabe (stderr; **) senden.

Behoben: break Label war in der Lage, zu einer fremden Schleife zu springen.

Das Hotstring-Reset-Verhalten wurde auf den Zustand vor v1.1.28.00 zurückgesetzt.

Hinzugefügt: Hotstring("Reset") zum manuellen Zurücksetzen des Hotstring-Erkenners.

1.1.28.00 - 11. Februar 2018

Änderungen:

Neue Features:

Fehlerbehebungen:

1.1.27.07 - 21. Januar 2018

Behoben: Die Standardgröße von Gui in Verbindung mit +Parent ist nicht mehr durch das übergeordnete Fenster eingeschränkt [fehlerhaft seit v1.1.27.05].

Behoben: Steuerelemente wurden nicht neu gezeichnet, wenn ein separates Tab-Steuerelement sichtbar/unsichtbar gemacht wurde, nachdem das Tab-Steuerelement für ungültig erklärt worden ist (z. B. wenn man mehrere Steuerelemente gleichzeitig sichtbar/unsichtbar macht).

1.1.27.06 - 16. Januar 2018

Behoben: Hotstrings/Input bewirkten, dass tote Tasten hängen blieben (fehlerhaft seit v1.1.27.05).

1.1.27.05 - 16. Januar 2018

Behoben: Sichtbare Input-Endungstasten bewirkten, dass eine bevorstehende tote Taste zweimal losgelassen wurde.

Behoben: Die Auswirkung von Hotstrings/Input darüber, wie Tab/Esc in einer toten Tastenfolge agieren sollen.

Behoben: A_IconFile gab einen falschen Pfad zurück, wenn eine DLL genutzt wurde.

Behoben: Gui in Verbindung mit +Parent wird nun innerhalb der übergeordneten GUI in Bezug auf dem Bildschirm korrekt zentriert.

Behoben: Input/Hotstring-Erkennung von toten Tastenfolgen in UWP-Anwendungen (Universal Windows Platform).

Behoben: < & v und > & v wurden als Duplikate angesehen, und andere ähnliche Fälle. Dies betrifft benutzerdefinierte Kombinationen, wo die Präfixtaste auch ein Modifikatorsymbol ist. Zudem werden Hotkeys, die nur aus Modifikatorsymbolen und einem Leerzeichen am Ende bestehen, wie z. B. + ::, ab sofort als Fehler behandelt, anstatt das Leerzeichen zu ignorieren (Hotkeys erlauben kein Leerzeichen am Ende).

1.1.27.04 - 10. Januar 2018

Behoben: #Warn ClassOverwrite gab fehlerhafte Warnungen aus.

1.1.27.03 - 6. Januar 2018

Verbessert: Menu x, NoStandard und Menu x, DeleteAll funktionieren nun, ohne dass der Versuch unternommen wird, das darunterliegende Win32-Menü zu zerstören. Dies macht sie funktionsfähig, sobald x eine Menüleiste oder ein Untermenü einer Menüleiste ist.

Der Umgang mit vkXXscYYY wurde überarbeitet:

Behoben: Numerische Schlüssel außerhalb des 32-Bit-Bereichs (aber innerhalb des 64-Bit-Bereichs) bei einigen selten auftretenden Fällen in 64-Bit-Versionen werden nun korrekt behandelt. Dies betrifft nur Klassen, die solche Nummern als Namen verwenden (aus mehreren Gründen nicht empfohlen), und einem Array-Zugriff via IDispatch mit solchen Nummern als Schlüssel-/Elementnamen.

1.1.27.02 - 1. Januar 2018

Behoben: Das Laden von .bmp-Dateien als Symbole in Originalgröße.

Behoben: Verbundzuweisungen wie Test.Eigenschaft[1] += 1 (fehlerhaft seit v1.1.27.01).

1.1.27.01 - 31. Dezember 2017

Behoben: ++X oder --X verursachten in Skripten ohne #NoEnv einen Programmabsturz (fehlerhaft seit v1.1.27.00).

Behoben: #Warn ClassOverwrite gab fälschlicherweise eine Warnung für ++MeineKlasse.X aus.

Behoben: Neubelegung erlaubt nun benutzerdefinierte Tastenkombinationen wie a & b::c.

Behoben: Send/Hotstrings/Input passen sich nun an das Tastaturlayout des fokussierten Steuerelements an und nicht nur an das aktive Fenster. Dies betrifft insbesondere UWP-Anwendungen wie Microsoft Edge.

Behoben: Hook-Hotkeys unterdrücken nun die Aktivierung des Startmenüs, die auftritt, wenn ein isoliertes "Ctrl/Shift Up" erfolgt. "Ctrl Up" kann erzeugt werden, wenn eine Umschaltung von einem Tastaturlayout mit AltGr zu einem Tastaturlayout ohne AltGr erfolgt (z. B. von UK zu US) und Ctrl währenddessen nicht gedrückt gehalten wird. Dies behebt Hotkeys wie z. B. $#z::WinActivate x, wenn die entsprechende Änderung solche Bedingungen verursacht.

Behoben: Input sammelte keine Zeichen, wenn beide UMSCHALT-Tasten unten sind.

Behoben: Input nutzt nun "sc" und "vk" statt "Sc" und "Vk" für Endungstasten in ErrorLevel (verursacht durch v1.1.20).

Behoben: GetKeyName/VK/SC("vkXXscYYY"), wobei YYY mit A-F beginnt (fehlerhaft seit v1.1.26).

1.1.27.00 - 25. Dezember 2017

Änderungen:

AU3_Spy.exe wurde durch WindowSpy.ahk ersetzt.

Geändert: a-z bedeutet nun vk41-vk5A, wenn sie im Tastaturlayout fehlen, außer im Raw-Modus oder beim Senden einzelner unveränderter Zeichen. Dadurch können Hotkeys und gesendete Tastaturkurzbefehle intuitiver mit bestimmten nicht-englischen Tastaturlayouts umgehen.

Geändert: Send nutzt in den ANSI-Versionen nun SendInput() anstelle von Alt+nnnnn, um spezielle Zeichen zu senden.

Geändert: Es gelten nun andere Regeln zum Maskieren von ALT/WIN nach dem Drücken eines Hook-Hotkeys:

Die Hotkeys ~LWin:: und ~RWin:: unterdrücken das Startmenü nicht mehr. Weitere Informationen und ein Workaround finden Sie unter #MenuMaskKey.

Hinzugefügt: VK- oder SC-Tastennamen werden nun korrekt validiert, damit Namen wie "sc01ungültig" nicht mehr als Tasten erkannt werden.

Skripte, die Hotkeys im Format VKnnSCnnn:: enthalten, müssen korrigiert werden, indem man SCnnn entfernt, das zuvor ignoriert wurde.

Hilfedatei: Die Seitenleiste des HTML Help Viewer wurde durch die neue HTML5-Seitenleiste ersetzt, die von Ragnar-F entwickelt wurde.

Neue Features:

Fehlerbehebungen:

1.1.26.01 - 16. Juli 2017

Behoben: RegDelete (ohne Parameter) schlug fehl, wenn A_LoopRegSubKey leer ist, z. B. beim Enumerieren von Schlüsseln direkt unter dem Root-Schlüssel.

Behoben: RAlt/LAlt:: konnte manchmal die Aktivierung des Menüs nicht verhindern, nachdem der Benutzer mit Alt-Tab das Fenster verließ und es reaktivierte.

Behoben: Die SC-zu-VK-Konvertierung für Multimediatasten, PrintScreen, Pause, LWin und RWin funktioniert nun korrekt, mit der Ausnahme, dass Multimediatasten, PrintScreen und CtrlBreak unter Windows 2000 und XP immer noch fehlerhaft konvertiert werden.

Behoben: Die VK-zu-SC-Konvertierung für Multimediatasten, CtrlBreak und Pause funktioniert nun korrekt.

Behoben: Wartende Befehle wie RunWait protokollieren nur noch Zeilen für ListLines, wenn gezeigt werden muss, dass sie noch immer warten; also wenn sie nach einer Unterbrechung fortgesetzt werden, die andere Zeilen protokolliert hat.

1.1.26.00 - 10. Juni 2017

Geändert: ListVars zeigt Variablen, die Objekte enthalten, ab sofort in einem anderen Format an. Der Klassenname des Objekts wird nicht angezeigt.

Hinzugefügt: "Class" und "CLSID" Modi für ComObjType().

Geändert: Die vom Debugger angezeigten Klassennamen überarbeitet und deutlich die Codegröße im Prozess reduziert.

Geändert: FileSetAttrib, FileSetTime und FileDelete überarbeitet, um die Codegröße zu reduzieren. Deren Funktionsweise sollte sich nicht geändert haben.

Andere kleinere Optimierungen an der Codegröße gemacht.

Behoben: GetKeySC() funktioniert nun korrekt mit den Tastennamen Esc, Escape, ScrollLock und PrintScreen.

Behoben: Die Hotstring-Worterkennung funktioniert nun korrekt mit Wörtern, die Nonspacing Marks enthalten, wie z. B. arabische diakritische Zeichen.

1.1.25.02 - 13. Mai 2017

Behoben: GUI-Optionszeichenketten waren nach einer Fehlermeldung permanent gekürzt.

Behoben: Namen von Eigenschaften und Klassenuntervariablen können nun ASCII-fremde Zeichen enthalten.

Behoben: Der Operator new wurde behoben, so dass __New als Ausnahme ausgelöst oder via Exit beendet werden kann.

1.1.25.01 - 5. März 2017

Behoben: Send ermöglicht es nun anderen Skripten, auf Änderungen des Modifikatorzustands zu reagieren, die direkt danach ein Sonderzeichen haben, wie z. B. beim Loslassen von UMSCHALT in Send Mört.

1.1.25.00 - 4. März 2017

Hinzugefügt: Hotkey, If, % FunktionObjekt.

Behoben: Website-Adresse im Help-Menü.

1.1.24.05 - 3. Februar 2017

Behoben: WinSet AlwaysOnTop/Trans/TransColor funktioniert nun bei Fenstern mit einem erweiterten Style von 0.

1.1.24.04 - 17. Dezember 2016

Behoben: File.ReadNum() hat wiederholt alte Daten gelesen, wenn ein vorheriges File.Read() am Ende des Pufferspeichers aufgehört hat zu lesen.

Geändert: Bessere Pufferspeichernutzung, wenn File.Read() das Ende der gepufferten Daten erreicht hat.

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

Behoben: GuiControl +/-Password wird das Steuerelement nun sofort neu zeichnen.

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 eine Basis hat, die keinen Wert für die Eigenschaft definiert. Eigenschaften in basislosen Klassen verhielten sich bereits korrekt.

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

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

Behoben: Der Debugger erkennt eine Verbindungstrennung nun sofort (also wenn ein Client terminiert, ohne Stop/Detach aufzurufen).

Behoben: Der Debugger behandelt property_get -m 0 nun 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 die 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-Fenster und -Steuerelemente konnten nicht mit negativen HWND-Nummern identifiziert werden.

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

Behoben: Gui Show hat das Fenster veranlasst, kleiner zu werden, wenn es eine mehrzeilige Menüleiste hat.

Behoben: LV_InsertCol(n, Breite) hat nicht dazu geführt, dass der ListView-Scrollbalken auf einigen OS-Versionen aktualisieren wurde.

Geändert: Codegröße von FileRecycleEmpty optimiert.

1.1.24.01 - 2. August 2016

Geändert: Hotkey, If, Ausdruck löst nun einen Fehler aus, wenn der ungenutzte dritte Parameter nicht leer ist.

Behoben: &&, || und der ternäre Operator werden nun jedes als Bedingung verwendete Objekt freigeben, wie in if (a.Unterobjekt && b).

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

Behoben: Ab sofort sind in Windows 10 relative Pfade für den Verknüpfung-Parameter von FileCreateShortcut möglich.

Behoben: Ein Tab3-Steuerelement im aktuellen Windows-Design wird die benutzerdefinierte Textfarbe aller untergeordneten Steuerelemente nicht mehr überschreiben.

Behoben: Der Debugger hat Fortsetzungsbefehle in bestimmten Fällen nicht korrekt behandelt.

1.1.24.00 - 22. Mai 2016

Gravierende Änderungen:

Der Versuch, eine leere Variable oder einen Ausdruck, der einen leeren Wert ergibt, an den Label-Parameter von SetTimer zu übergeben, wird ab sofort als Fehler eingestuft. Der Parameter muss entweder einen nicht-leeren Wert enthalten oder komplett weggelassen werden.

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 Referenz ü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 der Label-Parameter von SetTimer weggelassen wird und A_ThisLabel leer ist, wird der aktuelle Timer (sofern vorhanden) verwendet.

Neue Features:

Tab3-Steuerelement hinzugefügt, das eine Reihe von Problemen mit Tab-Steuerelementen behebt.

Fehlerbehebungen:

GuiControl wird Steuerelemente nun beim Hinzufügen/Löschen von Tabs aktualisieren. Konkret heißt das:

+Disabled/+Hidden werden ihren Effekt auf die Steuerelemente innerhalb eines Tabs nicht mehr verlieren.

Deaktivierte Tab-Steuerelemente werden STRG+TAB nun ignorieren.

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 wird das Objekt nun verwenden statt 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 hat das Programm zum Absturz gebracht, wenn es direkt in dessen Zielschleife verschachtelt war.

1.1.23.05 - 27. März 2016

Behoben: InputBox, MsgBox, FileSelectFile und FileSelectFolder haben ein ungewolltes ALT-Up gesendet, wenn ALT unten ist. Schuld daran war der in v1.1.22.01 hinzugefügte STRG/UMSCHALT-Workaround.

Geändert: Der STRG/UMSCHALT-Workaround wurde verbessert, um zu verhindern, dass die WIN-Taste unnötig "maskiert" wird, wenn gleichzeitig auch STRG, UMSCHALT oder ALT unten ist.

1.1.23.04 - 26. März 2016

Behoben: Bei LV_Modify können die Optionen nun weggelassen werden, wie in LV_Modify(r,, Spalte1).

1.1.23.03 - 12. März 2016

Behoben: __Delete Meta-Funktionen haben Ausnahmen fehlerhaft unterdrückt oder vorzeitig erneut ausgelöst, wenn sie während der Ausnahmepropagierung aufgerufen wurden.

Behoben: Erkennung von Funktionsaufrufen mit einem leeren Pflichtparameter beim Laden des Skripts, z. B. fn(x,,y).

1.1.23.02 - 12. März 2016

Behoben: RegDelete hat den kompletten Schlüssel anstelle des Standardwerts gelöscht.

Codepflege; kleine Verbesserung an der Codegröße.

1.1.23.01 - 24. Januar 2016

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

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

1.1.23.00 - 16. Januar 2016

Hinzugefügt: Unterbefehl Menu Insert.

Hinzugefügt: MenuGetHandle().

Hinzugefügt: MenuGetName().

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

Geändert: Der Menu-Befehl wurde verbessert, um Menüpunkte anhand ihrer Position zu identifizieren: 1&

Hinzugefügt: LoadPicture().

Hinzugefügt: hicon/hbitmap: Syntax, mit der Handles an Befehlen übergeben werden können, die normalerweise Bilder aus einer Datei laden.

Hinzugefügt: Neue interne 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: Hotkey-Option I zum Setzen einer Eingabestufe für die Hotkey-Variante.

Geändert: Das Picture-Steuerelement wurde verbessert, um BackgroundTrans in Verbindung mit Symbolen zu unterstützen.

Geändert: Das Picture-Steuerelement wurde verbessert, um das Flackern beim Laden von großen Bildern zu reduzieren.

Kleine Optimierungen am Menu-Code und beim Nachschlagen von internen Variablen.

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

Behoben: A_ThisMenuItemPos unterstützt nun doppelt vorhandene Menüpunktnamen.

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

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

1.1.22.09 - 11. November 2015

Einige Probleme mit SetTimer Delete behoben.

1.1.22.08 - 11. November 2015

Behoben: Die For-Schleife wird die Kontrolle nun korrekt übergeben, wenn _NewEnum/Next eine Ausnahme auslöst.

Behoben: Finally wird die bevorstehende Ausnahme nun hinauszuzögern, bis dessen Block ausgewertet wurde, nicht nur bis zum Aufruf der ersten internen Funktion.

Behoben: Erkennung von ungültigen Sprüngen aus Finally-Blöcken beim Laden des Skripts (fehlerhaft seit v1.1.20).

1.1.22.07 - 27. September 2015

Behoben: Die GUI-Steuerelement-Optionen w-1 und h-1 schlugen fehl, wenn DPI größer gleich 150 % ist und die GUI kein -DPIScale aufweist.

Behoben: ~Taste up-Hotkeys werden ab sofort 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 Ereignisse mit Zeichen, die vom Typ Unicode oder keine Tasten sind.

Behoben: Die automatische Größenanpassung von Edit-Steuerelementen wird die letzte Zeile nun mit einbeziehen, wenn sie leer ist.

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

Behoben: ComObjArray wird überschüssige Parameter nun ignorieren, statt das Programm zum Absturz zu bringen (gilt nur für dynamische Aufrufe).

Behoben: GuiControl wird Tabs nun wie vorgesehen anfügen statt davorsetzen.

Behoben: XP64-Unterstützung.

1.1.22.05 - 10. September 2015

Behoben: Symbole mit nicht-numerischen IDs wurden mit suboptimaler Qualität geladen.

Behoben: Gui Destroy hat keine Funktionsobjekte freigegeben, die mit der +g-Option gesetzt wurden.

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

Behoben: Der Feststell-/Num-/Rollen-Status wurde gesetzt, während die Taste unten war.

Behoben: Gui Color hat eine falsche Textfarbe verursacht (üblicherweise schwarz).

Geändert: Gui Show wurde geändert, um die Chancen zu verbessern, dass GuiSize sofort ausgeführt wird.

Für Entwickler:

1.1.22.04 - 19. August 2015

Behoben: ObjRawSet() kann ab sofort nichts zurückgeben.

Hinzugefügt: Win10-supportedOS-Tag zum EXE-Manifest hinzugefügt (verhindert einige Probleme mit dem Programmkompatibilitätsassistenten und ähnlichem).

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 Implementierungsänderungen:

1.1.22.02 - 27. Mai 2015

Behoben: TreeView wird nicht länger *-Ereignisse bei unbekannten Benachrichtigungen auslösen.

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

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

1.1.22.01 - 24. Mai 2015

Behoben: Größenanpassungen von Text/Edit/Button-Steuerelemente kompensieren nun hinausragende Zeichen.

Behoben: Registry-Befehle erlauben nun ein : in UnterSchlüssel, wenn in Kombination mit RootSchlüssel.

Behoben: Hotkey-Priorisierung berücksichtigt nun Modifikatoren.

Geändert: Else/Try/Catch/Finally-Handhabung wurde umgestaltet, um so etwas wie hotkey::try cmd zu unterstützen.

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: Ab sofort wird SetErrorMode(SEM_FAILCRITICALERRORS) beim Starten des Programms aufgerufen, um Fehlermeldungen auf Systemebene wie "Es befindet sich kein Datenträger im Laufwerk" zu unterdrücken. Der Aufruf 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.

Geändert: ComObjConnect wurde verbessert und verwendet nun IProvideClassInfo, sofern verfügbar.

Behoben: Einige Probleme mit Methoden-/Eigenschaftsdefinitionen nach einer geschweiften Endklammer auf selber Zeile behoben.

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

Behoben: Break N funktioniert nun korrekt, wenn Loop direkt unter einer If/Else/Try/Catch-Anweisung 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(meld, fnobj, 0) wird nichts mehr tun, wenn fnobj noch nicht registriert ist.

1.1.21.01 - 3. April 2015

Behoben: Bei StrReplace() kann ErsatzText nun weggelassen werden.

Behoben: Die Namen der Klassenvariablen können nun ASCII-fremde Zeichen enthalten.

1.1.21.00 - 28. März 2015

Hinzugefügt: Loop, Reg, RootSchlüssel[\Schlüssel, Modus].

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

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

Objektmethoden überarbeitet:

Hinzugefügt: Ord(); außerdem unterstützt Chr() nun Ergänzungszeichen (>0xFFFF).

Hinzugefügt: StrReplace().

Entfernt: Der veraltete und undokumentierte 5-Parameter-Modus von RegRead, der exklusiv für die AutoIt-v2-Kompatibilität bestimmt war (der zusätzliche Parameter wurde nicht verwendet).

Geändert: Die Parameter RootSchlüssel und UnterSchlüssel von RegRead, RegWrite und RegDelete können nun kombiniert werden.

1.1.20.03 - 21. März 2015

Behoben: MouseGetPos (AusgabeVarSteuerelement), 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-Versionen.

Behoben: ExitApp wird den pausierten Zustand des Skripts nun aufheben, bevor Objekte freigegeben werden, falls eine __Delete-Metafunktion aufgerufen wird.

Geändert: Triviale Optimierungen und Codeanpassung.

1.1.20.01 - 10. März 2015

Die in v1.1.20.00 vorgenommenen Änderungen bzgl. der Speicherung und Wiederherstellung von ErrorLevel bei Thread-Unterbrechung wurden rückgängig gemacht, um unbeabsichtigte Folgen entgegenzuwirken.

Behoben (erneut): Timer haben manchmal bewirkt, dass ErrorLevel als hexadezimal formatiert wurde.

Behoben: Klassenmethoden behalten eine gezählte Referenz zur Klasse.

1.1.20.00 - 8. März 2015

Neue Features:

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

Hotkey, Menu, SetTimer, Gui und Gui-Steuerelement-Ereignisse akzeptieren nun ein Funktionsobjekt. Delete-Unterbefehl für SetTimer hinzugefügt, um die Freigabe des Objekts zu ermöglichen.

OnMessage() verbessert, um einer beliebigen Anzahl von Funktionen oder Funktionsobjekten die Überwachung einer einzigen Meldung zu ermöglichen.

OnExit() und OnClipboardChange() hinzugefügt, die einen Funktionsnamen oder ein Funktionsobjekt akzeptieren.

Möglichkeit hinzugefügt, Hotkey-Label auf eine Funktionsdefinition zu verweisen.

U/L/T-Modifikatoren hinzugefügt, um Groß-/Kleinschreibung-Umwandlungen mit Format() durchzuführen.

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

** (stderr) für FileAppend hinzugefügt.

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

Änderungen:

Standardverhalten hinsichtlich dessen geändert, was passiert, wenn das Hauptskript nicht gefunden wird:

WinActivate wird das Fenster nun wiederherstellen, wenn es bereits aktiv, aber minimiert ist.

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

A_CaretX/A_CaretY verwendet nun eine andere Methode zum Abrufen der Position der Texteinfügemarke.

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

A_OSVersion gibt nun eine Versionsnummer im Format "Haupt.Neben.Build" zurück, wenn kein vordefinierter Name für das Betriebssystem vorliegt.

Objekte unterstützen nun x[,y], x.y[,z] und x[](y).

Änderungen, die Fehler beheben, Codegröße reduzieren oder die Leistung verbessern, einschließlich:

Fehlerbehebungen:

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

Beim Senden von Text zur Standardausgabe via FileAppend (*) wird nun der Codierung-Parameter berücksichtigt, anstatt immer einen ANSI-Text auszugeben.

Die automatische Größenanpassung von GUI-Fenstern mit nur einem Scrollbalken wird nun korrekt durchgeführt.

Exception(m, n) wird nicht mehr abstürzen, wenn n zu weit außerhalb der Grenzen liegt.

GuiContextMenu setzt A_GuiEvent nun korrekt in x64.

FileGetSize hat manchmal ein unklares Ergebnis geliefert, wenn die Datei nicht vorhanden ist oder nicht geöffnet werden kann.

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

ControlClick-Pos-Modus ignoriert nun deaktivierte Steuerelemente.

Gui +MaxSize kleiner als +MinSize verhält sich nicht mehr merkwürdig.

GuiControl/Get benötigen nicht mehr einen Gui-Namen, wenn eine Steuerelement-HWND-Nummer angegeben wurde.

Metafunktionen beeinflussen nicht mehr die von Exception() gemeldete Zeilennummer.

1.1.19.03 - 11. Februar 2015

Geändert: Die Neubelegung wurde verbessert, um scXXX::Y zu erlauben, wenn das aktuelle Tastaturlayout das ScXXX keinem 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 terminieren.

Behoben: ControlGetFocus hat die Möglichkeit des Benutzers gestört, einen Doppelklick durchzuführen (Danke an HotKeyIt).

Behoben: ListView wurde korrigiert, um zu verhindern, dass das g-Label des Steuerelements bei nicht-unterstützten (und bisher unbekannten) Benachrichtigungen wie z. B. LVN_GETEMPTYMARKUP aufgerufen wird.

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

Behoben: for Var in Ausdruck hat das Programm manchmal zum Absturz gebracht, wenn Ausdruck eine via Skript definierte Funktion aufruft.

1.1.19.02 - 25. Januar 2015

Entfernt: Die für Win9x/Win2k genutzten Symbole mit einer Farbtiefe von 16 Bit.

Entfernt: Die separaten Tray-Symbol-Ressourcen.

Geändert: Verbesserungen am Auswahlverfahren von Symbolgrößen beim Laden von Symbolen aus DLL/EXE-Dateien.

Behoben: Einige Probleme im Zusammenhang mit der Hotkey-Validierung beim Laden des Skripts.

Behoben: /iLib schreibt die Datei nun auch bei einem Syntaxfehler.

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

1.1.19.01 - 5. Januar 2015

Behoben: Der Hotkey-Befehl hat das Programm zum Absturz gebracht bei dem Versuch, neuen Varianten bereits vorhandener Hotkeys zu erstellen (fehlerhaft seit v1.1.19.00).

Geändert: Kleine Optimierungen am Hotkey-Befehl und an A_TimeIdle im Zusammenhang mit dem Wegfall der Win9x-Unterstützung vorgenommen.

1.1.19.00 - 4. Januar 2015

Hinzugefügt: Ein Name für Func.Call(). Func.() funktioniert immer noch, aber veraltet.

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

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

Behoben: Der Hotkey-Befehl hat das Dollar-Präfix ($; Hook nutzen) ignoriert, wenn die Hotkey-Variante bereits ohne Dollar-Präfix vorhanden war.

Behoben: Die Syntax %Fn%() funktioniert ab sofort auch mit JavaScript-Funktionsobjekten.

Behoben: Das EXE-Manifest wurde geändert, um UAC-Erkennungsheuristiken beim Installer zu umgehen (fehlerhaft seit v1.1.17).

Geändert: Die Art und Weise, wie Threads auf dem Aufrufstapel des Debuggers dargestellt werden, wurde verbessert.

1.1.18.00 - 30. Dezember 2014

Geändert: IDispatch-Implementierung für AutoHotkey-Objekte verbessert:

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

Behoben: FileAppend, %VarMitClipboardAll%, Datei führte zum Absturz des Programms.

1.1.17.01 - 28. Dezember 2014

Behoben: COM-Ereignishandler haben den letzten Objekt-Parameter nicht erhalten.

1.1.17.00 - 27. Dezember 2014

Neue Features:

Format() hinzugefügt.

FileOpen() kann nun genutzt werden, um Daten aus stdin zu lesen oder Daten in stdout oder stderr zu schreiben, indem man "*" oder "**" als Dateiname übergibt. AutoHotkey.exe * kann genutzt werden, um Skriptcode auszuführen, der via Piping von einem anderen Prozess übergeben wurde. Ein Beispiel dazu finden Sie unter ExecScript().

Unterstützung hinzugefügt, dass AutoHotkey-Objekte an COM-APIs als IDispatch übergeben werden können.

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

Fehlerbehebungen:

Kompletter Systemabsturz in Win XP SP2 behoben.

Im Besitz befindliche ComObjArrays werden nicht via Pointer, sondern via Wert zurückgegeben. Das heißt, dass eine Kopie des Arrays, nicht ein Pointer, der auf ein Array verweist, das bald gelöscht werden soll, zurückgegeben wird.

Im Skript, das automatisch bei erstmaliger Ausführung von AutoHotkey erstellt wird, wurde die URL geändert.

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

Edit-Steuerelemente behandeln ALTGR+A nicht mehr als STRG+A.

Statische Klassenvariablen dienen nicht mehr als Ziel für Label, die unmittelbar vor der Klasse stehen.

1.1.16.05 - 28. September 2014

Behoben: x.y/[]/{} wurde manchmal inkorrekt als variadisch gekennzeichnet.

1.1.16.04 - 16. September 2014

Behoben: Das Programm stürzte ab, wenn der Versuch unternommen wurde, eine schreibgeschützte Eigenschaft zu überschreiben.

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

1.1.16.03 - 11. September 2014

Behoben: Einige schlechte Verhaltensweisen in Abs() und Mod(), die durch eine fehlerhafte Fehlerbehebung in v1.1.16.01 verursacht wurden.

1.1.16.02 - 11. September 2014

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

Behoben: Clipboard gab binäre CF_HDROP-Daten in einigen Fällen zurück.

Geändert: Genauigkeit von FileGetSize im Zusammenhang mit noch offenen Dateien verbessert.

Geändert: For-Loop-Kompatibilität im Zusammenhang mit COM-Objekten verbessert.

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 in ListHotkeys angezeigt (wenn ungleich 0).

Geändert: RegExMatch wurde im Zusammenhang mit O-Option (Objekt) optimiert; das Erfassen von Bereichen einer langen Zeichenkette erfolgt nun in einigen Fällen wesentlich schneller als zuvor.

Behoben: Objekte überprüfen nun, ob nach einem abgeschlossenen __Call neue Methoden verfügbar sind (um mit __Set und __Get gleichzuziehen).

Behoben: Es wurden einige undefinierte Verhaltensweisen behoben, die nach einem gescheiterten VarSetCapacity auftraten.

Behoben: FileRead meldet bei Dateien über 4 GB nun einen Fehler, anstatt die gelesenen Daten ungewollt zu kürzen.

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

Behoben: Einige ClipboardAll-Probleme inklusive Verhaltensänderungen:

Behoben: A_EventInfo bei TreeView-Elementen mit negativen Bildschirmkoordinaten.

Behoben: Ein mögliches Problem im Zusammenhang mit dem Filtern von ListView/TreeView-Meldungen.

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

Behoben: #If fügt sich nun selbst zu ListLines hinzu (aber als "If").

Behoben: Abs(["-"]*) und ähnliches führte zum Absturz des Programms.

Behoben: } funcdef(){, das global verwendet wird, und }}, das eine Methode/Eigenschaft/Klasse beendet.

1.1.15.04 - 12. August 2014

Behoben: Leistungsproblem im Zusammenhang mit &var_mit_langer_zkette_von_ziffern.

Behoben: Interne Variablen korrumpierten den Speicher, wenn ihnen ein Objekt zugewiesen wurde.

Behoben: Der Parser kann continue gegebenenfalls verbieten, selbst wenn die aktuelle Funktion innerhalb einer Schleife definiert ist.

Behoben: File.Encoding := x "-RAW" führte dazu, dass die Codierung/Decodierung von ASCII-fremden Zeichen nicht mehr korrekt war. Das Suffix -RAW wird ab sofort ignoriert.

1.1.15.03 - 2. August 2014

Behoben: Metafunktionen beenden den Thread nach einem Exit oder Throw nun korrekt.

Behoben: FileInstall verwendet nun A_WorkingDir, wenn Ziel in einem unkompilierten Skript relativ ist.

1.1.15.02 - 7. Juli 2014

Behoben: Debuggen von negativen Integer-Schlüsseln in Objekten.

1.1.15.01 - 30. Juni 2014

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

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

1.1.15.00 - 4. Mai 2014

Hinzugefügt: WIN_8.1 als möglicher Wert für A_OSVersion.

Geändert: Der Hotkey-Befehl wird das Durchreicheverhalten bei vorhandenen Hotkey-Varianten nun anwenden/entfernen, je nachdem, ob das Tilde-Präfix (~) vorhanden ist.

Geändert: Das EXE-Manifest wurde geändert, damit GetVersion/GetVersionEx die Windows-Version 8.1 erkennen kann.

1.1.14.04 - 25. April 2014

Behoben: DllCall() wird das Skript nicht mehr zum Absturz bringen, wenn für Funktion eine reine 0 angegeben ist.

Behoben: IsFunc("ComObj(") wird 0 (false) zurückgeben, anstatt eine Ausnahme auszulösen.

Behoben: ControlClick kann nun korrekt XButton1/XButton2 senden.

1.1.14.03 - 14. Februar 2014

Behoben: Ein Speicherleck in new X, wenn X.__Init den Thread abbricht.

Behoben: Haltepunkte werden nicht länger auf Klassenvariableninitialisierer verschoben, wenn sie mit Methodendefinitionen durchsetzt sind.

1.1.14.02 - 30. Januar 2014

Behoben: x:: und x up:: wurden beide beim Loslassen ausgelöst, wenn der Zustand der Modifikatortasten das Auslösen von x beim Drücken verhindert hat. Seit v1.1.14 ist es eigentlich beabsichtigt, dass beide Hotkeys beim Loslassen ausgelöst werden, wenn x zudem in einer benutzerdefinierten Tastenkombination wie x & y:: verwendet wird.

1.1.14.01 - 15. Januar 2014

Behoben: Try hat ohne Catch/Finally das Programm zum Absturz gebracht, 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 Verhalten des Tilde-Präfixes (~) im Zusammenhang mit benutzerdefinierten Tastenkombos wurde geändert, um es intuitiver zu machen.

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 statt 0, wenn ein GDI-Aufruf fehlschlägt.

Behoben: EnvGet hat das Programm zum Absturz gebracht, wenn die Variable länger als 32767 Zeichen ist.

Behoben: Ein kleiner fehlerbehandlungsbezogener Bug in Zusammenhang mit ErrorLevel von StatusBarWait.

Behoben: Potenzielle Heap-Corruption in Zusammenhang mit FileRead *c in ANSI-Versionen.

Behoben: Die Übergabe von lokalen Variablen an variadischen Funktionen bei rekursiven Aufrufen.

Behoben: Skripte konnten nicht geladen werden, wenn die erste Zeile ein in Klammern gesetzter Ausdruck ist.

Behoben: Der Fast-Modus von PixelSearch wird AusgabeX/Y nur noch bei Erfolg setzen.

1.1.13.01 - 11. Oktober 2013

Behoben: Variadische Funktionsaufrufe im Zusammenhang mit benannten Werten als Pflichtparameter.

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 nun durch Angabe von zwei aufeinanderfolgenden Kommas weggelassen werden, wie z. B. in InStr(a, b,, 2). Im Gegensatz zu früheren Versionen funktioniert diese Vorgehensweise auch für Objekte (inklusive COM-Objekte) und interne Funktionen. [a,,b] kann genutzt werden, um ein lückenhaftes Array zu erzeugen.

Hinzugefügt: Objekteigenschaften können nun mithilfe der variadischen Syntax gesetzt werden, wie z. B. in x[y*]:=z, wo y ein Array mit Schlüsseln/Indizes oder Parametern enthält.

1.1.11.02 - 28. Juli 2013

Behoben: GuiControl/Get akzeptiert nun die ClassNN-Bezeichnung des untergeordneten Eingabefeldes einer ComboBox. Zur Identifizierung der ComboBox konnte man bereits die HWND-Nummer des entsprechenden Eingabefeldes angeben.

1.1.11.01 - 25. Juni 2013

Behoben: Vordefinierte Breite und Höhe der InputBox wiederhergestellt (fehlerhaft seit v1.1.11.00 - Commit 7373cc6443).

Behoben: Die DllCall-Argumenttypenvalidierung 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 nicht-initialisierten Variablen warnen.

1.1.11.00 - 21. Juni 2013

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

Geändert: Die Dateigröße von AutoHotkeySC.bin wurde durch Verringern der Auflösung des (selten verwendeten) Dateitypsymbols reduziert.

Behoben: class X extends Y wurde behoben, damit Y nach X definiert werden kann.

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

Geändert: RegRead wurde verbessert, um REG_BINARY-Werte größer als 64 KB zu unterstützen.

Geändert: RegWrite wurde verbessert, um REG_BINARY/REG_MULTI_SZ-Werte größer als 64 KB zu unterstützen.

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

1.1.10.00 - 11. Mai 2013

Hinzugefügt: Grundlegende Unterstützung für Custom-Steuerelemente.

Geändert: SoundSet, SoundGet und ...WaveVolume-Befehle wurden überarbeitet, um eine bessere Unterstützung für Windows Vista und höher zu gewährleisten.

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-Menü-Accelerator-Keys funktionierten nicht, wenn die GUI selbst (nicht ein Steuerelement) den Fokus hatte.

1.1.09.03 - 9. Februar 2013

Behoben: Zwei Bugs, die sich auf Zuweisungen auswirkten, deren Zielvariable eine nicht geflushte Binärzahl enthält, aber eine Kapazität von 0 hat.

Behoben: GuiControl und GuiControlGet haben mit dem falschen Steuerelement agiert, wenn eine HWND-Nummer angegeben wurde, die nicht zur aktuellen GUI gehört. Stattdessen wird der Zustand als Fehler behandelt.

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

1.1.09.02 - 24. Dezember 2012

Behoben: MsgBox wird nun eine Fehlermeldung anzeigen, wenn ungültige Optionen angegeben sind, anstatt den kompletten Thread stillschweigend zu beenden.

Behoben: Syntaxfehler in Klassenvariableninitialisierern haben dazu geführt, dass das Programm ohne korrekte Fehlermeldung abstürzte.

1.1.09.01 - 15. Dezember 2012

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

Behoben: RegExReplace kann nun korrekt mit doppelt vorhandenen Teilsuchmusternamen umgehen.

Behoben: Objekt.Remove() hat Zeichenketten-Schlüssel nicht freigegeben.

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

1.1.09.00 - 7. November 2012

Gravierende Änderungen:

.aut-Datei-Kompatibilität und #AllowSameLineComments entfernt.

Undokumentierte AutoIt-v2-Befehle entfernt.

Abwärtskompatible Änderungen:

Optionale Parameter können nun mit := statt = deklariert werden, um mit Variablendeklarationen und Ausdrücken gleichzuziehen.

ASCII-fremde Zeichen sind in anführungszeichenlosen Schlüsseln ({Schlüssel: x} und obj.Schlüssel) nun erlaubt.

"AutoHotkey_L" in der Versionsinfo zu "AutoHotkey" geändert.

Fehlerbehebungen:

Fehler behoben, dass Warndialogfenster, die während der Evaluation von Befehlsparametern erschienen, zur Instabilität des Programms führten.

Fehler behoben, dass der Fast-Modus von PixelSearch "nicht gefunden" als Fehler behandelt hat.

ahk_exe erlaubt nun nachfolgende ahk_-Kriterien.

Fehler behoben, dass else continue 2 und ähnliches geschweifte Klammern um die Schleife herum erforderten.

Fehler behoben, dass RegRead Misserfolg nach erfolgreichem Einlesen von Binärdaten gemeldet hat.

File.Length wird nun alle gepufferten Daten kompensieren oder flushen.

Die automatische Größenanpassung einer GUI berücksichtigt nun Scrollbalken, sofern vorhanden.

Debugger:

Unterstützung für asynchrone Befehle hinzugefügt.

Handhabung von Haltepunkten auf Zeilen wie else foo() oder { bar() verbessert, so dass der Debugger dort halten kann.

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 nur halb oder überhaupt nicht limitiert war.

1.1.08.00 - 14. Juli 2012

Gravierende Änderungen:

Der Standardzeichensatz des Skripts ist nun ANSI, da das vorherige Verhalten ein häufiger Anlass zu Verwirrung war. UTF-8-Dateien müssen nun über eine Byte-Order-Markierung (BOM) verfügen, um korrekt erkannt zu werden. Der Windows-Editor fügt eine BOM zu jeder Datei hinzu, die als UTF-8 gespeichert wird.

return x wurde geändert, um die Formatierung von numerischen Zeichenketten beizubehalten; es ist nun äquivalent zu return (x).

Gui, Name: New wurde geändert, um die neue GUI als Standard-GUI-Fenster zu setzen.

Sonstige Änderungen:

ClipboardAll wurde geändert, um CF_UNICODETEXT gegenüber anderen Textformaten zu bevorzugen.

Gui Show wurde geändert, um Floating-Point-Zahlen zu erlauben.

A_OSVersion wird in Windows 8 nun WIN_8 zurückgeben.

Die Dateibeschreibung von AutoHotkey.exe lautet nun "ANSI/Unicode 32/64-bit".

Der Parser wurde geändert, um Zeilen wie new MeinObjekt() ohne Zuweisung zu erlauben.

PCRE wurde auf 8.30 aktualisiert.

Die Formulierungen einiger Warnungen wurden verbessert; der untere Bereich des Warndialogfensters verweist nun auf die Dokumentation.

Verbesserungen am Debugger:

Neue Features:

Unterstützung für das PCRE-Konstrukt (*MARK:NAME) via RegExMatchObject.Mark hinzugefügt.

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

A_Is64bitOS hinzugefügt.

SetRegView und A_RegView hinzugefügt.

Fehlerbehebungen:

Func.() wird nun den Funktionsaufruf überspringen, wenn Pflichtparameter weggelassen werden, anstatt den kompletten Thread stillschweigend zu beenden.

Fehler behoben, dass Objekt.Remove() die Objekt-Schlüssel nicht freigegeben hat.

Taste-Unten/Oben-Hotkey-Paare unterdrücken die Eingabe nun korrekt, wenn nur ein Hotkey des Paares aktiviert ist.

#Include <Bibl> beeinflusst nicht mehr das von nachfolgenden #Include-Direktiven verwendete Arbeitsverzeichnis.

objaddref() agiert nicht mehr wie ObjRelease(), wenn diese Funktion mit einem kleingeschriebenen 'a' aufgerufen wird.

A_AhkPath in 32-Bit-kompilierten Skripten erkennt nun 64-Bit-AutoHotkey-Installationen und umgekehrt.

Fehler behoben, dass TreeView-Steuerelemente mit der -Background-Option in älteren Betriebssystemen falsch gerendert wurden.

Fehlermeldungen, die bei der Ausführung von While/Until angezeigt werden, identifizieren nun korrekt die fehlerhafte Zeile.

1.1.07.03 - 25. März 2012

Behoben: STRG/ALT/UMSCHALT-Taste-Unten-Hotkeys führen nicht mehr dazu, dass zuvor definierte Taste-Oben-Hotkeys desselben Modifikators unwirksam gemacht werden.

Behoben: Taste-Unten-Hotkeys verwenden nun immer den Hook, wenn sie nach einem Taste-Oben-Hotkey derselben Taste definiert werden. Wenn der Taste-Unten-Hotkey die Methode "reg" verwendet, wird der Hook das Taste-Unten-Ereignis blockieren und nur den Taste-Oben-Hotkey auslösen.

Behoben: Ladezeitüberprüfungen werden Ausdrücke ohne Derefenzierungen nicht mehr als rohen Text interpretieren. Zum Beispiel wurde Gosub % "foo" beim Laden des Skripts in "foo": aufgelöst. Ebenso wurde % "" in verschiedenen Fällen als ungültig angesehen, selbst wenn laut Definition eine leere Zeichenkette möglich war.

1.1.07.02 - 22. März 2012

Behoben: Ein seltener Absturz, der auftreten konnte, wenn GetClipboardData() fehlschlug.

Behoben: ComObjArray() wird bei Misserfolg nun eine leere Zeichenkette anstelle eines willkürlichen Integers zurückgeben.

Behoben: Objekt.Remove(i, "") hatte Auswirkung auf Integer-Schlüssel, wenn !Objekt.HasKey(i).

1.1.07.01 - 2. März 2012

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

Behoben: Dynamische Funktionsaufrufe funktionieren nun mit internen Variablen wie z. B. %A_ThisLabel%().

1.1.07.00 - 27. Februar 2012

Geändert: %var%() wurde verbessert, um Funktionsobjekte und die Standard-__Call-Metafunktion zu unterstützen.

Behoben: ControlGet List funktioniert nun mit einer ListView in Fällen, wo das Skript im 32-Bit-Format und der Zielprozess im 64-Bit-Format sind und umgekehrt.

Behoben: SendEvent funktioniert nun mit einer Tastenverzögerung von 0; eine mit v1.1.05.04 eingeführte Änderung führte dazu, dass SendEvent langsamer als gedacht war.

Behoben: Objekt.Remove(i) hat die Schlüssel nicht angepasst, wenn Objekt[i] nicht existierte.

Behoben: ComObjType() verhält sich nun wie vorgesehen, wenn diese Funktion über einen alternativen Namen aufgerufen wird.

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

Behoben: Ein Funktionsaufruf über ein Objekt verhindert nicht länger, dass der Thread beendet werden kann. Dies hat zur Folge, dass wenn innerhalb einer Klassenmethode Exit verwendet wird oder ein Laufzeitfehler auftritt, nicht nur die Funktion, sondern der komplette Thread beendet wird.

Behoben: Der Aufruf einer Basisklassenmethode über base.Methode() oder ähnlichem innerhalb einer Klassendefinition bewirkt nicht länger, dass eine UseUnset-Warnung angezeigt wird, wenn die Methode nicht existiert. Folglich bewirkt die Instanziierung eines Objekts mit Instanzvariablen nicht länger, dass eine Warnung bezüglich der internen Methode base.__Init angezeigt wird, wenn die Basisklasse keine Instanzvariablen hat.

1.1.06.02 - 13. Februar 2012

Behoben: IniRead wird nicht mehr abstürzen, wenn der Schlüssel-Parameter verwendet und der Sektion-Parameter weggelassen wird.

Behoben: Genauigkeit von FileGetSize im Zusammenhang mit Dateien korrigiert, die 4 GB oder größer sind.

1.1.06.01 - 12. Februar 2012

Behoben: Die intelligente Kommahandhabung des MsgBox-Befehls benötigt einen numerischen Optionen-Parameter, nicht den Titel-Parameter.

1.1.06.00 - 12. Februar 2012

Neue Features:

#InputLevel-Direktive und SendLevel-Befehl integriert (entwickelt von Russell Davis).

Unterstützung für Link-Steuerelemente integriert (entwickelt von ChrisS85).

Gravierende Änderungen:

Der Befehlsparser wurde geändert, um zu verhindern, dass escapezeichenversehene Zeichen wie `t oder am Anfang oder Ende eines Parameters entfernt werden.

Die intelligente Kommahandhabung des MsgBox-Befehls wurde geändert, um ihn flexibler und konsistenter mit anderen Befehlen zu machen.

A_IsUnicode und A_IsCompiled sind in ANSI-Versionen bzw. unkompilierten Skripten nicht mehr undefiniert, sondern enthalten eine leere Zeichenkette. Dadurch können sie ohne Auslösen von #Warn-Warnungen geprüft werden. Nebeneffekte sind:

Send und verwandte Befehle respektieren nun #MenuMaskKey beim Ändern von Modifikatortastenzuständen.

Sonstige Änderungen:

GuiControl Choose wird nun alle ausgewählten Listeneinträge einer ListBox/ComboBox/DDL abwählen, wenn N=0.

RegisterCallback kann nun anstelle eines Namens ein Func-Objekt verwenden.

ListLines zeigt nun Dateinamen an (nur bei einem unkompilierten Skript).

Run wurde verbessert, um im Zusammenhang mit ShellExecuteEx eine Prozess-ID zurückzugeben, wenn möglich.

Fehlerbehebungen:

Handle-Leaks in RegRead behoben.

x.y++ und ähnliches weist nun eine leere Zeichenkette zu, wenn x.y nicht-numerisch ist.

Fehler behoben, dass die WIN+L-Übergangslösung von SendInput dazu führte, dass die WIN-Taste im gedrückten Zustand "hängen blieb".

Fehler behoben, dass Ahk2Exe automatisch die falsche Datei eingebunden hat, wenn eine automatische Einbindung über #Include <Bibl> erfolgte.

1.1.05.06 - 31. Dezember 2011

Behoben: Inkrement (++) und Dekrement (--) haben keinen Effekt, wenn sie mit Objektelementen verwendet werden, die Zeichenketten enthalten.

Behoben: Inkrement (++) und Dekrement (--) zeigen eine Warnmeldung an, wenn sie mit nicht-initialisierten Variablen verwendet werden.

1.1.05.05 - 17. Dezember 2011

Behoben: continue n verhält sich nun korrekt, wenn eine innere Schleife keine geschweiften Klammern nutzt.

Behoben: RegExMatchObject[Name] funktioniert nun korrekt mit doppelt vorhandenen Namen.

1.1.05.04 - 5. Dezember 2011

Behoben: Der Selected-Unterbefehl von ControlGet war in der x64-Version unzuverlässig.

Behoben: CPU wird nicht mehr voll ausgelastet, wenn ein darunterliegender Thread ein modales Dialogfenster anzeigt (und wahrscheinlich auch in anderen Fällen).

1.1.05.03 - 30. November 2011

Behoben: Loop ... Until VarMitObjekt.

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 beim Senden von Sonderzeichen oder {U+xxxx} automatisch loslassen (fehlerhaft seit v1.1.00.01).

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

Behoben: new %VarMitKlasseName%().

1.1.05.01 - 16. Oktober 2011

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

1.1.05.00 - 8. Oktober 2011

Hinzugefügt: Neuer Koordinatenmodus Client.

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

Hinzugefügt: Superglobale Deklarationen, um zu verhindern, dass globale Deklarationen wiederholt durchgeführt werden müssen.

Gravierende Änderung: Klassendeklarationen wie class c erzeugen nun eine superglobale anstelle einer gewöhnlichen globalen Variable.

Hinzugefügt: Es werden mehr Details im Fehlerdialogfenster bezüglich unbehandelter Ausnahmen angezeigt.

Geändert: Gui +Owner wurde angepasst, damit es auch nach Erstellung der GUI funktioniert.

Geändert: Instanzvariablendeklarationen in Klassendefinitionen wurden angepasst, um zu vermeiden, dass leere Schlüssel-Wert-Paare im Klassenobjekt verbleiben.

Geändert: Bei Misserfolg verwendet #Include nun das Standardfehlermeldungsformat (mehr Details; berücksichtigt auch ErrorStdOut).

Geändert: Throw ohne Parameter löst nun standardmäßig ein Exception-Objekt aus.

Geändert: Format von Laufzeitfehlermeldungen wurde etwas angepasst, um die Konsistenz zu erhöhen und Codegröße zu verringern.

Geändert: PCRE verwendet in Unicode-Versionen nun UTF-16 für eingehende Zeichenketten, um die Leistung zu erhöhen.

Geändert: PCRE auf 8.13 aktualisiert.

Behoben: Threads wurden nicht wie vorgesehen beendet, wenn eine Zuweisung in einem Ausdruck fehlschlug.

Behoben: #MaxMem hat verhindert, dass man Variablen, die keine Erweiterung erfordern, etwas zuweisen kann.

Behoben: Try/Catch konnte keine COM-Fehler abfangen.

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

Behoben: Eingabevariablen wurden zu früh aufgelöst, was dazu führte, dass sie später von einem anderen Ausdruck auf derselben Zeile ungültig gemacht wurden.

Behoben: RegEx-Callouts führten dazu, dass die Übereinstimmungssuche abgebrochen wurde, wenn eine Ausnahme ausgelöst wurde.

Behoben: DllCall hat ErrorLevel auf -4 statt -3 gesetzt.

Behoben: While erschien beim ersten Durchlauf zweimal in ListLines.

Behoben: Bei Try/Catch kann nun If/Loop/For/While ohne umschließenden Block verwendet werden.

Behoben: Enumerator-Objekte wurden nicht freigegeben, wenn Until zum Unterbrechen einer For-Schleife verwendet wurde.

1.1.04.01 - 15. September 2011

Behoben: FileRemoveDir hat ErrorLevel nicht korrekt gesetzt.

1.1.04.00 - 11. September 2011

Warnung: Diese Version enthält eine Vielzahl von Änderungen, die die Funktionsweise eines Skripts unerwartet ändern können.

Hinzugefügt: Ausnahmebehandlung via Try/Catch/Throw und Exception().

Hinzugefügt: StdOut-Modus für #Warn.

Hinzugefügt: Option Gui +HwndVARNAME.

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

Hinzugefügt: Automatische Unterstützung für Keyboard Accelerators (z. B. CTRL+O) in Gui-Menüs.

Geändert: Die Handhabung von #Include <Bibl> im Zusammenhang mit der Befehlszeilenoption "/iLib", um ein Problem bei Ahk2Exe zu lösen.

Geändert: GuiControl wird den aktuellen Wert des Progress-Steuerelements nun beibehalten, wenn dessen Style geändert wird.

Geändert: GuiControl und GuiControlGet erlauben eine HWND-Nummer im SteuerelementID-Parameter.

Geändert: Die 1GB-Einschränkung von FileRead wurde entfernt.

Fehlererkennung verbessert:

Behoben: Es wurde ein Bug im Zusammenhang mit rekursiven variadischen Funktionen behoben.

1.1.03.00 - 28. August 2011

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

Hinzugefügt: GUI-Fenster können nun via HWND-Nummer identifiziert werden.

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: Fehlermeldung "Missing (/[/{" zu "Unexpected )/]/}" geändert, um Missverständnissen vorzubeugen.

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

Geändert: Der Operator ~= hat nun eine höhere Priorität als =/!=/</>/<=/>=, aber eine niedrigere als Verkettung, außerdem wurde er zur Dokumentation hinzugefügt.

1.1.02.03 - 21. August 2011

Behoben (Debugger): Das numChildren-Attribut hat Objekt.Base nicht mit einbezogen.

1.1.02.02 - 20. August 2011

Behoben: Die Kapazität von Variablen wurde bei x64-Versionen auf 2 GB begrenzt.

Behoben: Das 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.

Behoben: Abrufen von Prozessnamen und -pfaden in bestimmten Fällen, einschließlich:

1.1.02.00 - 6. August 2011

Hinzugefügt: TV_SetImageList().

Geändert: Zeichen, die die exotischen Umschaltzustände 16 und 32 erfordern, verwenden nun eine Fallback-Methode, anstatt die falschen Tastendrücke zu erzeugen.

Geändert: Die Handhabung von toten Tasten wurde überarbeitet, um Probleme zu lösen, die auftreten, wenn mehrere Skripte mit Hotstrings aktiv sind.

1.1.01.00 - 30. Juli 2011

Hinzugefügt: Unterstützung für Instanzvariablen in Klassendefinitionen unter Verwendung einer einfachen Zuweisungssyntax.

Entfernt: Das in Klassendefinitionen verwendete Schlüsselwort var; nutzen Sie stattdessen static.

Hinzugefügt: Neue interne Variablen: A_ScriptHwnd und A_PriorKey.

Hinzugefügt: Neue interne Funktionen: GetKeyName(), GetKeyVK(), GetKeySC() und IsByRef().

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

Hinzugefügt: Ein Fenster kann nun über dessen Prozessnamen oder -pfad identifiziert werden: ahk_exe %Name%.exe oder ahk_exe %VollständigerPfad%.

Geändert: ProcessName-Unterbefehl von WinGet wurde optimiert.

Geändert: SetTimer wird A_ThisLabel verwenden, wenn das Label weggelassen wird.

Geändert: ComObjConnect() wurde aktualisiert, um die Verwendung eines Objekts anstelle eines Funktionsnamenspräfixes zu unterstützen.

Geändert: ComObjConnect() wurde verbessert, so dass das Präfix/Objekt ohne Unterbrechung der Verbindung aktualisiert werden kann.

Geändert: Das Parsen von Fortsetzungsbereichen wurde verbessert, um Ausdrücke wie (x.y)[z]() zu ermöglichen, ohne dass "(" mit einem Escapezeichen versehen werden muss.

Geändert: Die Methode zum Speichern von Skripttext in 32-Bit kompilierten Skripten wurde ersetzt; jetzt konsistent mit 64-Bit.

Behoben: Die Erkennung von ALTGR im Tastaturlayout des aktiven Fensters (bei Unicode-Versionen).

Behoben: SendInput hat irgendwann ein überflüssiges LCTRL-UP nach einem ALTGR-UP 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 Instanz(en) eines Hotkeys verwendet wurden.

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

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

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

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

Geändert: Der Debugger meldet nun type="undefined" für nicht-initialisierte Variablen.

Hinzugefügt: Ab sofort erfolgt eine Überprüfung, um zu verhindern, dass für Zeichen, die die Hankaku-Taste benötigen, die falschen Tastendrücke gesendet werden.

Hinzugefügt: Ab sofort werden Integer als Klassenvariablennamen unterstützt.

Hinzugefügt: Ab sofort können Klassenvariablen mit dem Schlüsselwort "static" deklariert werden.

1.1.00.00 - 1. Mai 2011

Neue Features:

Einfache Syntax zum Definieren von Klassen implementiert.

Schlüsselwort new zum Erstellen eines abgeleiteten Objekts implementiert.

Func() zum Abrufen einer Referenz auf eine existierende Funktion hinzugefügt und IsFunc zur Erkennung von Funktionsreferenzen verbessert.

++ und -- können nun mit Objektelementen verwendet werden, wie z. B. x.y[z]++.

Änderungen:

__Delete löst nicht mehr __Call aus.

OnClipboardChange wird AddClipboardFormatListener verwenden, falls verfügbar (also in Windows Vista oder höher), um die Zuverlässigkeit zu verbessern.

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

Fehlerbehebungen:

SetTimer Label, -0 wird nun als "einmal ausführen, so früh wie möglich" behandelt.

A_MyDocuments usw. verwendet nun SHGetFolderPath anstelle eines nicht dokumentierten Registry-Schlüssels.

Fehler behoben, dass ein nicht-leerer IgnoriereText-Parameter textlose Fenster ausgeschlossen hat.

1.0.97.02 - 14. April 2011

Behoben: Ein Komma, das mit {} in einem Ausdruck umschlossen ist, wurde fälschlicherweise als Argument-Trennzeichen interpretiert.

Behoben: Die For-Schleife wird A_Index erst setzen, wenn das Ausdruck-Argument ausgewertet wurde, so dass der Wert der äußeren Schleife verwendet werden kann.

Behoben: Der Standort des Standardskripts basiert nun auf das Verzeichnis der aktuell verwendeten EXE-Datei (wie dokumentiert) und nicht auf das Arbeitsverzeichnis.

Geändert: Die Ladezeitvalidierung wurde verbessert, um ungültige Versuche zu erkennen, mit Goto aus einer Funktion "herauszuspringen".

1.0.97.01 - 2. April 2011

Behoben: 64-Bit-Versionen werden HWND-Nummern oder SendMessage/PostMessage-Parameter nicht länger auf 32-Bit-Größe kürzen.

Behoben: */:: wurde als ungültiger Hotkey behandelt (fehlerhaft seit L54).

Behoben: Symbole.

1.0.97.00 - 28. März 2011

Hinzugefügt: {Schlüssel: Wert} als alternative Schreibweise für Object("Schlüssel", Wert).

Hinzugefügt: [x, y, z] als alternative Schreibweise für Array(x, y, z) (eine neue Funktion äquivalent zu Object(1, x, 2, y, 3, z)).

Hinzugefügt: Geringfügige Optimierung: Referenzen auf True, False, A_PtrSize oder A_IsUnicode innerhalb von Ausdrücken werden beim Laden des Skripts aufgelöst.

Behoben: 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 ermöglicht das Erstellen von Non-Dispatch-Objekten, wenn ein Interface-Identifikator (IID) angegeben ist.

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

ListVars zeigt neben der Wrapper-Adresse den inneren Variantentyp und Wert von jedem COM-Wrapper-Objekt an.

Änderungen:

Wenn ein direkt geschriebener Integer oder eine Variable, die eine numerische Zeichenkette und einen zwischengespeicherten binären Integer enthält, einem Objektelement zugewiesen wird, wird ein Integer anstelle einer Zeichenkette gespeichert. Dies kommt insbesondere einem Skript zugute, das COM-Methoden aufruft, die nur Integer als Parameter akzeptieren oder je nach Typ des Wertes ein anderes Verhalten aufweisen.

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

Verbesserte Unterstützung Common Language Runtime (.NET) Objekte via COM.

FileRecycle zeigt nun eine Warnmeldung an, wenn eine Datei gelöscht wird, die zu groß für den Papierkorb ist.

Wenn ein via ComObjArray erstelltes SafeArray einem Element eines anderen SafeArrays zugewiesen wird, wird eine separate Kopie erstellt. Dadurch wird verhindert, dass das Skript beim zweiten Versuch, das Array zu "zerstören", abstürzt. 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 hat im SendInput- und SendEvent-Modus falsche negative Koordinaten berechnet.

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

Fehlerdialogfenster verwiesen manchmal auf irrelevante Codezeilen.

1.0.95.00 - 12. März 2011

Alle Datei-Eingaben/Ausgaben wurden stark optimiert.

#Warn als zusätzliche Möglichkeit zum Debuggen des Skripts hinzugefügt; ursprüngliches Design von ac.

Standardmäßig wird name_var.(), wenn name_var einen Funktionsnamen enthält, die Funktion aufrufen. Dies kann wie gewohnt mithilfe des Standardbasisobjekts überschrieben werden.

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

Wenn nach einer direkt geschriebenen, in Anführungszeichen gesetzte Zeichenkette ein Operator erfolgt, der entweder einen Operanden (&x) oder zwei numerische Operanden (x & y) akzeptieren kann, wird eine Auto-Verkettung durchgeführt und der Operator nur für den rechten Operanden angewendet. Der Grund dafür ist, dass direkt geschriebene, in Anführungszeichen gesetzte Zeichenketten immer als nicht-numerisch angesehen werden und deshalb keine gültigen Eingabewerte für numerische Operatoren sind. Zum Beispiel funktionieren nun Ausdrücke wie "x" &y und "x" ++y.

Behoben:

1.0.92.02 - 19. Januar 2011

Behoben: Es trat ein Speicherleck auf, wenn der Rückgabewert eines Objektaufrufs oder einer internen Funktion nicht verwendet wurde, also Zeilen wie file.ReadLine() oder SubStr(x,y,z).

Behoben: Die Fehlerbehebung von v1.0.92.01 wurde verbessert, um zudem k::MsgBox(),x:=y zu beheben und if() wieder funktionsfähig zu machen.

1.0.92.01 - 18. Januar 2011

Geändert: FileCreateDir setzt nun A_LastError.

Behoben: GuiControl() oder Ähnliches wurde manchmal fälschlicherweise als Befehl interpretiert.

1.0.92.00 - 13. Januar 2011

Hinzugefügt: Verbundzuweisungen können nun mit Objekten verwendet werden, wie z. B. x.y += z.

Geändert: IniWrite wurde in Unicode-Versionen verbessert, um zu verhindern, dass eine leere Zeile am Anfang einer neuen Datei erscheint.

Geändert: Der Parser wurde verbessert, um toleranter hinsichtlich dessen zu sein, was nach {/}/Else erfolgt, besonders wenn diese kombiniert verwendet 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 das Parameterobjekt leer war.

1.0.91.04 - 29. Dezember 2010

Behoben (Unicode): RegExReplace hat den gesamten Text bis zu StartPos weggelassen (fehlerhaft seit v1.0.90.00).

1.0.91.03 - 27. Dezember 2010

Behoben: RegEx-Callout-Teilsuchmustervariablen - fehlerhaft seit v1.0.90.00.

1.0.91.02 - 26. Dezember 2010

COM: Schutz gegen NULL-IDispatch/IUnknown-Pointer hinzugefügt.

COM: QueryInterface für IDispatch wird übersprungen, wenn VT_DISPATCH explizit übergeben wird.

Kleine Fehlerbehebung bezüglich der Wartbarkeit: obj.field := var liefert nun korrekt SYM_STRING, nicht SYM_OPERAND.

1.0.91.01 - 24. Dezember 2010

Behoben: Unerwartete Ergebnisse mit File.Write(Str) nach Einlesen des Textes.

Behoben: Eine UTF-BOM-Überprüfung führte zu unerwarteten Ergebnissen bei Dateien ohne BOM.

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

Behoben (Unicode): RegExReplace-Fehler, bei denen die UTF-8- und UTF-16-Längen unterschiedlich waren.

Behoben: Die Deaktivierung des letzten Hook-Hotkeys störte Input.

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: "Besitz ergreifen"-Parameter für ComObjParameter().

Geändert: Werte, die via ComObjParameter an COM-Funktionen übergeben werden, werden nicht länger beim Aufruf der Funktion freigegeben.

Geändert: ComObj.x() greift nun auf PROPERTYGET zurück, wenn das Objektelement 'x' nicht gefunden wird. Dies behebt For-Schleifen-Fehler in Bezug auf einige Objekte.

Geändert: Unbehandelte Variantentypen werden in ein verwendbares Objekt umgewandelt, anstatt einen Integer-Wert zurückzugeben.

Geändert: Standardmäßig wird die Lebensdauer von VT_UNKNOWN / VT_ARRAY automatisch verwaltet.

1.0.90.00 - 27. November 2010

Behoben: URLDownloadToFile funktioniert nun korrekt in Unicode-Versionen unter Windows < 7.

Behoben: ANSI-Großbuchstaben wurden in der ANSI-Version als ALT+0 gesendet.

Behoben: File.Pos war inkorrekt, nachdem versucht wurde, über EOF hinaus zu lesen.

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

Behoben: ClipboardAll hat bei bestimmten Formaten das Skript manchmal zum Absturz gebracht.

Behoben: Transform HTML hat die Länge von &#NNN;-Entitäten falsch berechnet.

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

Behoben: FileAppend,,Datei.txt setzte ErrorLevel auf 1, auch bei Erfolg.

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

Geändert: Seans Verbesserungen bzgl. der Handhabung von Zahlen in die COM-Interoperabilität integriert.

Geändert: RegExReplace und RegExMatch in Unicode-Versionen optimiert.

Revision 61 - 3. Oktober 2010

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

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

Hinzugefügt: Objekt.Remove(int, "") entfernt Objekt[int], ohne andere Schlüssel zu beeinflussen.

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

Geändert: Var := 123 bleibt nun ein Ausdruck, um die Konsistenz zu bewahren. Dadurch wird sichergestellt, dass Var := 123 und Var := (123) äquivalent sind. Vorher wurde mit der ersten Zuweisung nur eine Zeichenkette zugewiesen und mit der zweiten Zuweisung sowohl eine Zeichenkette als auch ein zwischengespeicherter binärer Integer zugewiesen. Insbesondere werden dadurch einige verwirrende Fehler durch Nichtübereinstimmung von Typen bei COM-Objekten verhindert.

Behoben: Dynamische variadische Aufrufe von Funktionen mit Pflichtparametern.

Behoben: Der letzte Parameter einer variadischen Assume-Global-Funktion musste explizit als lokal deklariert werden.

Behoben: Statische Initialisierungen störten das Setzen von Haltepunkten.

Behoben: Pointergrößen-bezogene Fehler bei PCRE-Callouts in x64-Versionen.

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

Behoben: Objekt.Remove(n) gab 0 zurück (nicht ""), wenn Objekt[n] nicht existierte.

Revision 60 - 24. September 2010

Hinzugefügt: File.Encoding zum Ändern oder Abrufen des Zeichensatzes eines File-Objekts.

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

Hinzugefügt: Objekt.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 (aber das Objektelement selbst kann damit nicht entfernt werden).

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

Geändert: RegisterCallback ermöglicht nun den Zugriff auf Callbacks in 32-Bit-Versionen (was in 64-Bit-Versionen bereits möglich war).

Geändert: RegisterCallback behandelt nun ein explizites ParamAnzahl="" als weggelassen.

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

Behoben: ComEvent (ComObjConnect) funktionierte nicht in der ANSI-Version.

Behoben: ComEvent (ComObjConnect) konnte lokale Variablen nicht korrekt zwischenspeichern/wiederherstellen, wenn eine bereits laufende Funktion erneut aufgerufen wurde.

Behoben: Ein Pufferspeicherüberlauf in A_EndChar, der auftrat, wenn kein Endungszeichen vorhanden ist.

Behoben: Func->mNextFunc wurde nicht mit NULL initialisiert (wird nur von LowLevel-Skripten verwendet).

Debugger: Es wurde die Möglichkeit hinzugefügt, den Inhalt des Objekts abzurufen (mit einem Debugger-Client, der dies unterstützt).

Debugger: Es wurden einige Fehler behoben.

Revision 59 - 12. September 2010

Behoben: #If Ausdruck sollte nun jeden Ausdruck höchstens einmal pro Tastendruck auswerten.

Geändert: SplashImage verwendet gängige Routinen zum Laden von Bildern; es unterstützt nun PNG und ähnliches, aber die Ergebnisse können bei Symboldateien anders ausfallen als zuvor.

Hinzugefügt: For x,y in z.

Hinzugefügt: Loop .. Until Ausdruck, das bei jeder Art von Schleife genutzt werden kann.

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

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

Debugger: Der Benutzer kann Abbrechen, Wiederholen oder Ignorieren, wenn die erste Verbindung fehlschlägt.

Debugger: Erlaubt das Verbinden eines Debugger-Clients mit dem Skript durch Senden einer registrierten Fenstermeldung.

Debugger: Die Verbindung zum Debugger-Client kann durch Senden des DBGp-Befehls "detach" getrennt werden.

Revision 58 - 5. September 2010

Hinzugefügt: static Var := Ausdruck.

Revision 57 - 4. September 2010

Behoben: DllCall-Rückgabetypen Str*, WStr* und AStr* funktionieren nun wie vorgesehen in x64.

Hinzugefügt: InStr wurde auf denselben Stand wie StringGetPos gebracht:

Hinzugefügt: #Include <BiblName> zum expliziten Einbinden eines Skripts aus einem Funktionsbibliotheksordner.

Hinzugefügt: IniRead und IniWrite können jetzt eine komplette Sektion lesen bzw. schreiben.

Hinzugefügt: IniRead kann jetzt eine Liste mit Sektionsnamen abrufen.

Hinzugefügt: Ab sofort werden benutzerdefinierte Verben in Run/RunWait unterstützt: Run *Verb Datei.

Geändert: Es wurden Verbesserungen hinsichtlich dessen gemacht, wie Run/RunWait die Aktion und ihre Parameter aus dem Ziel-Parameter extrahiert.

Geändert: Der Offset-Parameter von NumGet/NumPut kann weggelassen werden, da der Typ-Parameter immer nicht-numerisch sein muss.

Geändert: Ein Label kann nun auf das Ende eines Blocks zeigen.

Revision 56 - 29. August 2010

Hinzugefügt: Ab sofort werden x64-kompilierte Skripte unterstützt. Benötigt Ahk2Exe_L und x64 AutoHotkeySC.bin.

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

Behoben: Ein Speicherreservierungsfehler bei #If Ausdruck in x64.

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

Behoben: SendInput/Play hat Sonderzeichen in falscher Reihenfolge gesendet.

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

Revision 55 - 19. August 2010

Behoben: GroupActivate setzte ErrorLevel nicht auf 1, wenn kein Label angegeben war.

Behoben: Tab-Steuerelemente in der x64-Version.

Behoben: Zeichenkettenkopiermodus von StrPut, wenn Länge weggelassen wird; fehlerhaft seit L53.

Behoben: Datenabgleichprobleme in x64-Versionen.

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

Dies gilt für FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version und FileSetAttrib/Time.

Aber nicht für FileCopyDir, FileRecycle, FileMoveDir, FileRemoveDir, FileRecycleEmpty, FileCreateDir und FileInstall, weil die dafür verwendeten APIs nicht immer einen Win32-Fehlercode setzen oder zurückgeben.

Revision 54 - 15. August 2010

Behoben: RunAs in der Unicode-Version. [jackieku]

Behoben: RegisterCallback in der x64-Version. [fincs]

Behoben: EXE-Dateien können nun in Windows 2000 und Windows XP vor SP2 ausgeführt werden. Windows 2000 benötigt SP4 und Updates (wahrscheinlich KB 816542). XP wurde nicht getestet.

Behoben: Dialogfenster wie MsgBox reagierten nicht mehr, wenn sie von anderen Skript-Threads unterbrochen wurden. Der in L45 hinzugefügte Meldungsfilter/Übergangslösung musste entfernt werden.

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

Behoben: ComObject erlaubt nun rein numerische Namen für Eigenschaften/Methoden.

Geändert: Benutzerfreundlichkeit und Leistungsfähigkeit 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. (Der gleiche Thread wie oben)

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

Entfernt: Die Unterbefehle ToCodePage und FromCodePage von Transform.

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() können nun mit oder ohne Parameter verwendet werden. Enum[]:=Wert und ähnliche obskure Formen, die in AutoHotkey_COM/AutoHotkey64 funktionierten, sind nicht mehr erlaubt.

Ptr-Typ bleibt vorzeichenfähig (im Gegensatz zu AutoHotkey64), für maximale Flexibilität und Konsistenz.

Sonstige Änderungen:

Hinzugefügt: Objekt.HasKey(Schlüssel).

Hinzugefügt: Object(obj) erhöht die Referenzanzahl von obj um 1 und gibt dessen Adresse zurück.

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

Behoben: A_ThisHotkey enthält nun den erwarteten Wert, wenn es mit #If verwendet wird.

Behoben: RunAs in der Unicode-Version (von jackieku behoben).

Geändert: Standardzeichensatz des Skripts ist in ANSI-Versionen nun CP0 (ANSI).

Geändert: x.y[] ist nun äquivalent zu (x.y)[], anstatt zu x["y"].

Geändert: Interne 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

Hinzugefügt: Interne Variablen und Umgebungsvariablen können nun als Doppeldereferenzen verwendet werden.

Geändert: 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 nicht unterstützten, wie z. B. UTF-7.

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

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

Revision 52 - 12. Juni 2010

Behoben: Der Schlüssel-Parameter von ObjRemove ist nun optional, wie es bereits bei Objekt._Remove der Fall ist.

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

Behoben: Die Großschreibung von hexadezimalen Formaten führte dazu, dass negative Integer vorzeichenlos wurden.

Behoben: RegExMatch machte Ausgabe-Array-Elemente unbrauchbar, wenn bestimmte Bedingungen erfüllt waren. Siehe Bug Report.

Revision 51 - 11. April 2010

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

Geändert: Standardmäßig UTF-8 für Skript-Dateien verwenden; kann mit /CPnnn überschrieben werden.

Behoben: Pausiertes Skript bei Beendigung fortsetzen, damit die __Delete-Metafunktion des Objekts ausgeführt werden kann.

Revision 50 - 27. März 2010

Verbessert: Mehr Flexibilität für Objekt._Insert.

Verbessert: Mehr Flexibilität für Objekt._Remove.

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

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

Behoben: Objekt._SetCapacity(Schlüssel,n) null-terminierte in einigen Fällen nicht.

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

Revision 49 - 14. März 2010

Hinzugefügt: obj._NewEnum().

Hinzugefügt: ObjMethod(obj) für jede interne obj._Methode().

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

Behoben: Die in L48 hinzugefügte VK_PACKET-Überprüfung konnte das Skript zum Absturz bringen.

Behoben: Zeichencodes in VK_PACKET-Ereignissen wurden manchmal fälschlicherweise als Scancodes interpretiert.

Behoben: Der Ausnahmetext-Parameter wurde nach dem ersten gefundenen Steuerelement unwirksam.

Revision 48 - 21. Februar 2010

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

Geändert: ControlSend verwendet nun WM_CHAR, um Zeichen zu unterstützen, die keinen zugehörigen Tastencode haben. Dies gilt zum Beispiel für "…" (en-US), "∞" in einer Unicode-Version und {U+221e} in allen Versionen.

Geändert: KeyHistory zeigt nun den kompletten 16-Bit-Zeichencode für VK_PACKET-Ereignisse (VK=E7) an. Send kann indirekt dazu führen, dass diese für Unicode-Zeichen erzeugt werden.

Revision 47 - 13. Februar 2010

Behoben (Unicode): ControlGet List in Verbindung mit ListView-Steuerelementen.

Revision 46 - 11. Februar 2010

Hinzugefügt: A_FileEncoding zum Abrufen der aktuellen Standardcodierung einer Datei.

Hinzugefügt: StrPut (zusätzlich wurde StrGet um einige Features erweitert).

Revision 45 - 8. Februar 2010

Hinzugefügt: _GetAddress; _SetCapacity/_GetCapacity kann nun auf ein bestimmtes Objektelement angewendet werden. [mehr Infos]

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

Geändert: obj.() kann genutzt werden, um die Standardmethode eines Objekts aufzurufen; äquivalent zu obj[""]().

Entwickler: Solution- und Project-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): Standardskript konnte nicht gefunden werden (Documents\AutoHotkey.ahk).

Behoben (Unicode): A_Desktop, A_ProgramFiles und mehrere andere interne Variablen, die ihren Wert aus der Registry lesen, führten zu einer fehlerhaften Terminierung von Zeichenketten.

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

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

Revision 43 - 29. Januar 2010

Behoben: obj.Func() gab nicht wie eigentlich vorgesehen eine leere Zeichenkette, sondern einen zufälligen Integer zurück.

Revision 42 - 28. Januar 2010

Mit AutoHotkeyU zusammengeführt.

Zahlreiche Bugfixes und Verbesserungen, teilweise bezogen auf die Zusammenführung.

Revision 41 - 20. Dezember 2009

Behoben: Floating-Point-Zahlen entsprachen einer leeren Zeichenkette, wenn sie als Schlüssel in Objekten verwendet wurden. Sie werden nun wie vorgesehen in numerischen Zeichenketten umgewandelt, abhängig vom Float-Format.

Revision 40 - 13. Dezember 2009

Geändert: Erhöhte Flexibilität für Metafunktionen und Multi-Parameter-Verhalten. Metafunktionen werden nun aufgerufen, *bevor* nach einem geeigneten Objektelement in jedem Basisobjekt gesucht wird; Werte in x.base werden allerdings die in x.base.base definierten Metafunktionen überschreiben. Metafunktionen können nun durch Vermeidung von "Return" verketten werden (Vererbung).

Geändert: Standard-Base-Funktionalität wurde verbessert, um eine höhere Konsistenz mit realen Objekten zu gewährleisten.

Geändert (Debugger): Während der Code schrittweise durchlaufen wird, werden alle geschweiften Klammern, außer solche, die eine Funktion beenden, übersprungen.

Geändert (Debugger): Wenn das versteckte "Exit" am Ende des Skripts erreicht wird, sollte es so behandelt werden, dass es *unterhalb* der letzten physischen Zeile ist, um Verwirrung zu vermeiden.

Revision 39 - 2. Dezember 2009

Behoben (Debugger): Fehler in der von property_set verwendeten Base64-Decodierung.

Revision 38 - 17. November 2009

Hinzugefügt: #MenuMaskKey-Direktive zum Ändern der Taste, mit der KeyUp-Ereignisse von WIN oder ALT maskiert werden. Weitere Hintergrundinformationen finden Sie in diesem Thread.

Geändert: Wenn x[1,2]:=3 ein Objekt für x[1] erstellt, wird dessen Basis nicht länger automatisch auf x.base gesetzt. In der Dokumentation finden Sie eine Methode, wie dieses Verhalten kontrolliert werden kann.

Revision 37 - 7. November 2009

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

Revision 36 - 4. November 2009

Geändert: Wenn unmittelbar nach x.y oder Ähnliches eine eckige Startklammer ([) erfolgt, wird der Identifikator ganz rechts vor der Klammer als erster Parameter der Operation behandelt. Zum Beispiel ist a.b.c[d] äquivalent zu ObjGet(a.b,"c",d) und x.y[z]:=v äquivalent zu ObjSet(x,"y",z,v). Bisher wurde jeder Teilausdruck vor einer eckigen Klammer separat ausgewertet.

Geändert: Wenn unmittelbar nach einem Methodenaufruf wie x.y() eine Zuweisung erfolgt, werden die runden Klammern als eckige Klammern behandelt. Zum Beispiel ist x.y(z):=v nun äquivalent zu 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, die mit zwei oder mehr "Punkten" beginnen, wie z. B. x.y.z(). (fehlerhaft seit L34). Beachten Sie, dass '(' oder '[' oder ':=' noch erforderlich ist.

Revision 34 - 24. Oktober 2009

Geändert: Das Setzen einer leeren Zeichenkette innerhalb eines Objekts speichert nun die leere Zeichenkette, anstatt das Schlüssel-Wert-Paar vom Objekt zu entfernen. Verwenden Sie stattdessen _Remove zur vollständigen Entfernung von Schlüssel-Wert-Paaren.

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 nun Syntaxfehler wie MsgBox< foo und If!foo beim Laden des Skripts abgefangen.

Behoben: Return kann nun korrekt mit Ausdrücken umgehen, die zu einer Variable, in der sich ein Objekt befindet, ausgewertet werden. Zum Beispiel sollten Return x:=y, Return (x), Return x,... und ähnliches nun wie vorgesehen funktionieren (Return x hat bereits funktioniert).

Behoben: Multiparameter get/set unterstützte nicht korrekt Metafunktionen für mehrere Objekte (wie z. B. für x und x[y] im Ausdruck x[y,z]).

Behoben: Verkettende Objektzuweisungen, wie z. B. das x[y]:=z in r:=x[y]:=z, konnten keine Zahlen oder Objekte als Ergebnis liefern - 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: Alleinstehende ternäre Ausdrücke benötigen keine Leerzeichen mehr. Zum Beispiel ist jetzt x? F(1) : F(2) möglich.

Debugger: Beim Beenden des Skripts wird die Verbindung zum Debugger erst getrennt, *nachdem* Objekte freigegeben wurden, damit die __Delete-Handler debuggt werden können.

Revision 33 - 3. Oktober 2009

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

Behoben: Zwei separate Referenzzählungsfehler in Bezug auf dem ternären Operator und Object().

Behoben: Die Länge einer Variable wird nicht mehr falsch gesetzt, wenn ihr eine Zeichenkette zugewiesen wird, die von einer geskripteten Objektfunktion zurückgegeben wurde.

Behoben: Objekte und Zeichenkette werden nicht länger vorzeitig freigegeben, wenn die letzte Operation in einem Ausdruck eine Zeichenkette aus einem temporären Objekt abruft.

Behoben: Numerische Zeichenketten mit spezieller Formatierung wurden nicht beibehalten, wenn sie von einer Funktion via Variable zurückgegeben oder an einer rekursiven Funktion weitergegeben wurden.

Behoben: Wenn das Endergebnis eines Ausdrucks (außer bei Return) ein Objekt ist, wird nun korrekt eine leere Zeichenkette zurückgegeben, anstatt den Thread stillschweigend abzubrechen.

Behoben: __Delete-Metafunktionen überschrieben manchmal temporäre Werte im Deref-Pufferspeicher.

Hinzugefügt: Eine via &Objekt abgerufene Adresse kann mithilfe von Object(Adresse) in eine Objektreferenz zurückverwandelt werden.

Revision 32 - 26. September 2009

Behoben: Send/PostMessage-Absturz, wenn weniger als drei Parameter angegeben wurden.

Revision 31 - 26. September 2009

Hinzugefügt: Objekt/Array-Unterstützung und darauf bezogene zahlreiche kleinere Änderungen.

Hinzugefügt: While(Ausdruck) kann ohne trennendes Leerzeichen verwendet werden.

Hinzugefügt: Trim, LTrim, RTrim.

Hinzugefügt: A ~= B; äquivalent zu RegExMatch(A, B). Wird eventuell 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) auf beiden Seiten kein Leerzeichen mehr.

Geändert: Optionale Parameter können nun an beliebiger Position in der Parameterliste eines nicht-dynamischen Funktionsaufrufs weggelassen werden. Um das zu realisieren, wird der Standardwert eines Parameters bereits beim Laden des Skripts automatisch eingefügt, infolgedessen ist diese Vorgehensweise für dynamische Funktionsaufrufe nicht erlaubt bzw. möglich.

Debugger: Verschiedene kleinere Änderungen, um den Programmablauf einfacher nachzuvollziehen, während der Code schrittweise durchlaufen wird.

Optimierung: Wenn der erste Parameter von DllCall eine direkt geschriebene Zeichenkette ist, die eine bereits im Speicher vorhandene Funktion identifiziert, wird sie 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

Jedes unterstützte Bildformat kann jetzt als Menüsymbol 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, Icon, MenüpunktName, Dateiname.png,, 0

Revision 28 - 2. Mai 2009

Die Average-Case-Performance von dynamischen Funktionsaufrufen wurde mittels Implementierung einer binären Suche nach Funktionsnamen verbessert. Diese Änderung betrifft auch andere Bereiche, wie z. B. die Ladezeitauflösung von Funktionsreferenzen in Ausdrücken und die Laufzeitauflösung über OnMessage, RegisterCallback, etc.

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 auf Menüpunkten mit Untermenüs gezeichnet, wenn Owner-Drawing verwendet wurde.

Behoben: Menüsymbole wurden nicht freigegeben, wenn alle Menüpunkte auf einmal 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 einer normalen Taste.

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

Revision 24 - 30. März 2009

Hinzugefügt: Unterstützung für Send {U+xxxx}. Für eine ordnungsgemäße Unicode-Unterstützung wird SendInput() verwendet, sofern möglich, ansonsten wird auf die ALT+Ziffernblock-Methode zurückgegriffen.

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

Geändert: If var [not] in/contains VergleichListe wurde optimiert, insbesondere für lange Listen mit kürzeren Feldern.

Revision 21 - 16. März 2009

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

Behoben (Debugger): Revisionen 19 und 20 hatten Timer-Threads in der Aufrufliste weggelassen.

Behoben (Debugger): XML-reservierte Zeichen wurden so gut wie nie 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 der neuen Methode geladen werden kann, wird auf die alte Methode zurückgegriffen.

Revision 19 - 26. Februar 2009

Hinzugefügt: Neue Option "Gui, Font, qN" (hierbei ist N eine Zahl im Bereich von 0 bis 5) zum Ändern der Schriftqualität bzw. Einstellen der Kantenglättung.

Behoben: IL_Add lädt nun Symbole in der am besten geeigneten Größe, wenn mehrere Größen vorhanden sind.

Mit AutoHotkey v1.0.48 zusammengeführt, die Fehlerbehebungen, Optimierungen und andere Änderungen von Chris umfasst. Einige AutoHotkey_L-Features wurden in die Hauptversion integriert; folgende Änderungen wurden seit den vorherigen Revisionen an diesen Features 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 können jetzt mit dem Icon- oder NoIcon-Unterbefehl des Menu-Befehls hinzugefügt bzw. entfernt werden.

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

Geändert: MNS_CHECKORBMP als Standard-Style für Menüs hinzugefügt.

Geändert: Es wird nun die kleine als auch große Version eines benutzerdefinierten Tray-Symbols geladen, damit das richtige Symbol an den entsprechenden Stellen angezeigt werden kann.

Behoben: Symbole, die eine andere Größe als die üblichen Systemgrößen Klein/Groß haben, werden nun korrekt aus EXE-Dateien geladen.

Revision 16 - 4. Februar 2009

Behoben: Beim Löschen eines Menüpunktes wurde teilweise auch das zugehörige Untermenü gelöscht.

Revision 15 - 1. Februar 2009

Behoben: Wenn man SetFormat in einem *kompilierten* Skript verwendet, wurde der Binärzahl-Schreibcache nicht deaktiviert. 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: HWNDs/Fenster-IDs wurden via Vorzeichenerweiterung 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" statt "AutoHotkey".

Revision 12 - 6. September 2008

Behoben: Mögliche Zugriffsverletzung, wenn property_get auf eine interne Variable angewendet wird. -- DBGP

Revision 11 - 5. September 2008

Behoben: Prüfsumme wird nach Erstellen der Datei AutoHotkeySC.bin via Skript entfernt (AutoHotkey muss installiert sein).

Hinzugefügt: .L-Suffix in A_AhkVersion.

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

Revision 10 - 2. August 2008

Behoben: Die seit Revision 9 fehlerhafte Unterstützung von WheelLeft/WheelRight wurde wiederhergestellt.

Revision 9 - 29. Juli 2008

Behoben: Break/Continue kann nun in While verwendet werden.

Behoben: TrayTip in nicht-englischen Windows-Versionen und möglicherweise andere Nebeneffekte der Verwendung von Vista-Headern.

Revision 8 - 27. Juli 2008

Hinzugefügt: #IfTimeout-Direktive zum Limitieren der Auswertungszeit von #If-Ausdrücken (in Millisekunden). 1000 ist Standard.

Hinzugefügt: Assume-Static-Modus für Funktionen. "Static" muss vor jeder lokalen/globalen Variablendeklaration erfolgen.

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

Geändert: While setzt nun A_Index auf den gleich zu startenden Durchlauf.

Revision 7 - 26. Juli 2008

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

Revision 5 - 19. Juli 2008

Veraltete Referenzen zu Test-Skripten entfernt.

Einfaches 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, die mit Windows Vista eingeführt wurde. (Benötigt Vista).

Hinzugefügt: While, Ausdruck - Anweisungen wiederholen, 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: Es können beliebig viele Parameter bei dynamischen Funktionsaufrufen übergeben werden.

Behoben: Eine Zugriffsverletzung, die von WinGetClass und unterklassierten Fenstern hervorgerufen wurde.

Behoben: Eine Zugriffsverletzung, die von leeren dynamischen Funktionsreferenzen hervorgerufen wurde.