Archivierte Änderungen

Dieses Dokument enthält einen Verlauf der Änderungen, die Chris Mallett im ursprünglichen Entwicklungszweig von AutoHotkey vorgenommen hat.

Neuere Änderungen finden Sie unter Änderungen & Neue Features.

1.0.48.05 - 25. September 2009

Behoben: SendMessage und PostMessage brachten das Skript zum Absturz, wenn wParam oder lParam weggelassen wird (fehlerhaft seit 1.0.48.04). [Danke an Lexikos]

1.0.48.04 - 25. September 2009

Behoben: StringSplit funktioniert nun korrekt in Funktionen innerhalb von kompilierten Skripten (fehlerhaft seit 1.0.35.01). [Danke an engunneer & Lexikos]

Behoben: SendPlay wartet nicht mehr auf das Loslassen der WIN-Taste, bevor es einen "L"-Tastendruck sendet (fehlerhaft seit 1.0.48.01). [Danke an Lexikos]

Behoben: A_EndChar ist nun gültig, wenn die B0-Option vorhanden ist, und leer, wenn kein Endungszeichen verfügbar ist (fehlerhaft seit 1.0.44.09). [Danke an Al2000]

Behoben: FormatTime gibt nun eine gültige Tageszeit zurück, wenn der angegebene Monat außerhalb des Bereichs liegt (fehlerhaft seit 1.0.48.00). [Danke an silveredge78]

Behoben: FileCreateDir unterstützt nun einen umgekehrten Schrägstrich am Anfang eines Pfades, wenn es nur der einzige umgekehrte Schrägstrich ist; z.B. \Verz. [Danke an jaco0646]

Behoben: GuiControl/GuiControlGet/Gui/SendMessage funktionieren nun zuverlässig, wenn sie eine Rückruffunktion von RegisterCallback() oder OnMessage auslösen. [Danke an Lexikos]

Behoben: RegExMatch() erzeugte zu wenige Ersetzungen, wenn nach einer Übereinstimmung mit einer leeren Zeichenkette eine Übereinstimmung mit einer nicht-leeren Zeichenkette erfolgte.

Geändert: While() wird nicht mehr als Funktion, sondern als Schleife erkannt. [Danke an Crash&Burn]

Verbessert: URLDownloadToFile unterstützt nun FTP und Gopher. [Danke an Lexikos]

Verbessert: stdout/Sternchen-Modus von FileAppend schreibt nun sofort in die Standardausgabe. [Danke an Lexikos]

Hinzugefügt: Volle Unterstützung für if % Ausdruck. [Danke an kenomby]

1.0.48.03 - 3. Mai 2009

Behoben: ListLines On löscht nicht mehr den letzten Log-Eintrag im Zeilenverlauf. [Danke an Lexikos]

Behoben: ListView reagiert nun ordnungsgemäß auf das Ziehen des Mauszeigers, während ein Timer läuft. [Danke an Solar]

Behoben: Wenn ein Taste-Oben-Hotkey erstellt wird, während seine Taste nach unten gedrückt wird, wird beim Loslassen der Taste nicht mehr der falsche Hotkey ausgelöst. [Danke an Peter & engunneer]

1.0.48.02 - 19. April 2009

Behoben: Gosub und GroupActivate wurden so geändert, dass, wenn eine Funktion eine externe/öffentliche Subroutine aufruft, diese Subroutine alle dynamischen Variablen als globale Variablen behandelt und das Außerhalb-einer-Funktion-GUI-Verhalten hat. [Danke an kenomby & Lexikos]

Verbessert: True/False/A_EventInfo sind in Ausdrücken nun performanter, weil sie nicht mehr als Zeichenketten, sondern als Integer behandelt werden.

1.0.48.01 - 15. April 2009

Geändert: In Windows Vista und höher werden Hotkeys, die Win enthalten (z.B. #a), nun darauf warten, bis LWin und RWin losgelassen werden, bevor sie einen Text senden, der einen "L"-Tastendruck enthält. Dadurch wird verhindert, dass so ein Hotkey den PC unbeabsichtigt sperrt. Dieses Verhalten gilt für alle Send-Modi, außer SendPlay (weil es das nicht braucht) und Blind-Modus.

Behoben: A_LoopFileExt ist nun leer für alle Dateinamen, die keine Dateiendung haben, aber einen Punkt im Pfadnamen enthalten. [Danke an Yek-Toho-Tua].

Behoben: Zuweisungen von Integern, die 19 oder 20 Zeichen lang sind, funktionieren nun wie vor v1.0.48. [Danke an Laszlo & Lexikos]

Behoben: Funktionsdefinitionen funktionieren nun ordnungsgemäß in einem Block. [Danke an rmarko]

Verbessert: A_Index ist in Ausdrücken nun performanter, weil es nicht mehr als Zeichenkette, sondern als Integer behandelt wird.

Verbessert: if var [not] in/contains ist nun performanter. [entwickelt von Lexikos]

Verbessert: ListLines hat nun eine Option zum Ein- und Ausschalten der Zeilenprotokollierung. [Danke an kenomby & ruespe]

1.0.48 - 25. Februar 2009

Kompatibilität: In Variablen gespeicherte Floating-Point-Zahlen haben jetzt eine höhere Genauigkeit, was sich auf die Abwärtskompatibilität auswirken kann. Skripte, die auf winzige Unterschiede in der Genauigkeit angewiesen sind, müssen entweder überprüft und aktualisiert werden, oder können durch Nutzung von SetFormat Float (z.B. SetFormat, Float, 0.6) an beliebiger Stelle im Skript performanter gemacht werden. SetFormat Float deaktiviert die höhere Genauigkeit, verzichtet aber teilweise auf die neue, schnellere Floating-Point-Performanz.

Performanz: Das Hauptziel dieser Version ist Performanzerhöhung. Fast alle Skripte sollten schneller laufen, besonders solche, die häufig Ausdrücke verwenden und Integerberechnungen/-vergleiche durchführen (bis zu dreimal so schnell). Damit ein Skript den vollen Nutzen daraus ziehen kann, sollte es auf SetFormat verzichten oder den Fast-Modus von SetFormat verwenden.

Performanzverbesserungen

Ausdrücke und Funktionsaufrufe werden stärker kompiliert, um sie deutlich schneller zu machen (insbesondere komplexe Integer-Ausdrücke, einschließlich solcher mit Kommas).

Binärzahlen werden bei Variablen zwischengespeichert, um Umwandlungen von/in Zeichenketten zu verhindern. Dies macht numerische Operationen mit Variablen deutlich schneller.

Direkt geschriebene Integer in Ausdrücken und Mathematik-/Vergleichsbefehlen werden mit Binärzahlen ersetzt, um sie schneller zu machen; z.B. X+5 und if x > 5.

LOOPs, IFs und ELSEs mit Blöcken (geschweifte Klammern) sind schneller, weil sie die öffnende '{' überspringen. Dies hat den Nebeneffekt, dass '{' in ListLines weggelassen wird.

Die Performanz beim Erstellen eines Threads wurde verbessert, um schnell ausführende Threads in OnMessage(), RegisterCallback() und GUI-Ereignissen zu unterstützen.

Änderungen mit möglichem Einfluss auf bestehende Skripte (abgesehen vom oben genannten höherpräzisen Floating-Point)

Wenn SetFormat, Integer, Hex aktiviert ist, wird ein direkt geschriebener dezimaler Integer, der per Zuweisung an eine Variable übergeben wird, ab sofort auch in Hexadezimal umgewandelt. Normalerweise ist das nur ein Anzeigeproblem.

Um die Performanz von OnMessage() zu verbessern, treffen die Meldungsnummer und HWND-Nummer als Standardnummern ein, anstatt bedingungslos in Hexadezimal angezeigt zu werden. Normalerweise ist das nur ein Anzeigeproblem.

Aus Performanzgründen verbrauchen Skripte nun etwas mehr Speicher (im Verhältnis zur Anzahl der Variablen und Ausdrücke).

Geändert und behoben: if Var is time und andere Verwendungen von YYYYMMDDHHMISS-Zeitstempeln behandeln nun Monate außerhalb des Bereichs von 1 bis 12 als ungültig. [Danke an Nick]

Geändert und verbessert: Ein dynamischer Funktionsaufruf ermöglicht nun die Übergabe von mehr Parametern als von einer Funktion definiert - in diesem Fall werden die Parameter zwar ausgewertet, aber verworfen. [entwickelt von Lexikos]

Sonstige Verbesserungen

Hinzugefügt: Die IsFunc()-Funktion kennzeichnet, ob eine Funktion dynamisch aufgerufen wurde. [entwickelt von Lexikos]

Hinzugefügt: Die While-Schleife führt ihre Befehle wiederholt aus, bis die Auswertung ihres Ausdrucks False ergibt. [entwickelt von Lexikos]

Hinzugefügt: Assume-Static-Modus für Funktionen. [entwickelt von Lexikos]

Hinzugefügt: Interne Variablen A_IsPaused und A_IsCritical. [entwickelt von Lexikos]

Verbessert: NumPut() unterstützt wie DllCall() ab sofort UInt64. [Danke an Sean]

Verbessert: Mausradunterstützung. WheelLeft und WheelRight können nun als Hotkeys oder in Send, Click etc. verwendet werden. WheelLeft und WheelRight funktionieren aber nicht in Betriebssystemen älter als Windows Vista. [entwickelt von Lexikos]

Der Kompressor zum Kompilieren eines Skripts wurde von UPX 3.00 auf 3.03 aktualisiert.

Fehlerbehebungen

Behoben: Der Zeitlimit-Parameter von MsgBox kann nun auch verwendet werden, wenn der Text-Parameter einen Ausdruck mit Kommas enthält.

Behoben: Menu, Delete, Menüpunkt-als-Untermenü stört nicht mehr das zugeordnete Untermenü. [Danke an animeaime & Lexikos]

Behoben: Das GUI-Hotkey-Steuerelement gibt nun auch bei toten Tasten einen verwendbaren Hotkey-Namen zurück (z.B. "^" statt Zirkumflex). [Danke an DerRaphael]

Behoben: RegDelete löscht nicht mehr den kompletten RootSchlüssel, wenn UnterSchlüssel leer ist. [Danke an Icarus]

Behoben: Registry-Schleifen unterstützen nun Unterschlüsselnamen länger als 259 (selten). In früheren Versionen wurden solche Unterschlüssel übersprungen oder brachten das Skript zum Absturz. [Danke an Krzysztof Sliwinski & Eggi]

Behoben: FileSelectFolder hat nun eine Option, um es kompatibel mit BartPE/WinPE zu machen. [Danke an markreflex]

Behoben: Fenster-/Steuerelement-IDs (HWNDs) starteten in seltenen Fällen fälschlicherweise mit 0xFFFFFFFF statt mit 0x. [Danke an Micahs]

Behoben: Send-Befehle können nun die Down/Up-Modifikatoren mit dem "}"-Zeichen kombinieren. [Danke an neovars]

1.0.47.06 - 9. März 2008

Behoben: Es kommt nicht mehr zu Abstürzen, wenn eine Funktion simultan mit einem optionalen ByRef-Parameter aufgerufen wird, der von einem Thread weggelassen wird und vom anderen nicht. [Danke an DeathByNukes]

Behoben: Menu, Tray, MainWindow aktiviert nun die Menüpunkte im View-Menü des versteckten Hauptfensters des Skripts. [Danke an Lexikos]

Hinzugefügt: Dynamischer Funktionsaufruf. [entwickelt von Lexikos]

1.0.47.05 - 21. November 2007

Fehlerbehebungen für den Sort-Befehl: 1) Die F-Option funktioniert nun korrekt, wenn sie die letzte Option in der Liste ist; 2) Wenn das Trennzeichen CRLF ist, erkennt die U-Option nun das letzte Element als Duplikat, selbst wenn es nicht mit CRLF endet; 3) Die U-Option setzt kein Trennzeichen mehr an das Ende, wenn das letzte Element ein Duplikat ist. [Danke an Roland]

Behoben: RegExMatch() und RegExReplace() geben nun korrekte Werte zurück, wenn Heuhaufen und AusgabeVar dieselben Variablen sind. [Danke an Superfraggle]

Behoben: Es kann nun eine Variable als Parameter übergeben werden, der ClipboardAll zugewiesen wurde. [Danke an Joy2DWorld & Lexikos]

Aktualisiert: RegEx/PCRE von 7.0 auf 7.4. Eine Zusammenfassung der wichtigsten Änderungen finden Sie unter www.pcre.org/news.txt. Alle Details zu den Änderungen und Fehlerbehebungen finden Sie unter www.pcre.org/changelog.txt.

Hinzugefügt: Das Tab2-GUI-Steuerelement behebt seltene Neuzeichnungsprobleme im originalen Tab-Steuerelement (z.B. beim Aktivieren eines GUI-Fensters durch Anklicken des Scrollbalkens eines Steuerelements). Das originale Tab-Steuerelement bleibt aus Gründen der Abwärtskompatibilität erhalten, weil "Tab2" sein Tab-Steuerelement hinsichtlich der Tabulatornavigation hinter den darin befindlichen Steuerelementen einordnet. [Danke an Xander]

1.0.47.04 - 28. August 2007

Behoben: Taste-Oben-Hotkeys wie a up:: blockieren nicht mehr das Drücken der A-Taste, es sei denn, die #IfWin-Kriterien des Hotkeys sind erfüllt. [Danke an Roland]

Behoben: Round(Var, NegativeZahl) wurde in seltenen Fällen um 1 verringert. [Danke an Icarus]

Behoben: Es kommt nicht mehr zu Abstürzen, wenn Skripte mit einem Syntaxfehler enden, der eine verwaiste IF-Anweisung enthält (fehlerhaft seit 1.0.47.00). [Danke an msgbox vom deutschen Forum]

Entfernt: Fehlerdialogfenster "GetClipboardData". Stattdessen wird eine leere Zeichenkette abgerufen, wenn die Daten innerhalb der #ClipboardTimeout-Periode nicht zugreifbar sind. [Danke an ManaUser & Sean]

Geändert: CheckBox- und Radio-Steuerelemente verwenden nun standardmäßig "kein automatischer Zeilenumbruch", wenn keine Breite, Höhe oder CR/LF-Zeichen angegeben sind. Dies behebt Anzeigeprobleme bei ungewöhnlichen DPI-Einstellungen. [Danke an Boskoop]

1.0.47.03 - 1. August 2007

Behoben: Ausdrücke können nun direkt geschriebene, negative Hexadezimalzahlen enthalten, die mit einem "E" enden; z.B. fn(-0xe). [Danke an Laszlo]

Behoben: Die Blocksyntax erlaubt nun einen Funktionsaufruf direkt rechts von "}". [Danke an Roland]

1.0.47.02 - 19. Juli 2007

Behoben: Die Number-Option des Edit-Steuerelements zeigt nun ordnungsgemäß eine Sprechblase an, wenn der Benutzer etwas anderes als eine Zahl eingibt. [Danke an tfcahm]

Behoben: WM_TIMER wird nicht mehr blockiert, es sei denn, es wird an das versteckte Hauptfenster des Skripts gesendet. [Danke an tfcahm]

Behoben: Platzhalter-Hotkeys erhalten nicht mehr das Tilde-Verhalten, wenn der gleiche Hotkey mit einem Tilde-Zeichen im Skript vorkommt. [Danke an Lexikos]

Behoben: Deklarationsinitialisierungen behalten keine Leerraumzeichen mehr am Ende von direkt geschriebenen Zahlen. Zudem ermöglichen sie ab sofort Leerzeichen zwischen einem schließenden Anführungszeichen und dem nächsten Komma. [Danke an Hardeep]

1.0.47.01 - 8. Juli 2007

Behoben: RunAs verursachte einen Absturz oder verhielt sich falsch, wenn eine Domäne angegeben ist. [Danke an Markus Frohnmaier]

Geändert: Vergleichsoperatoren geben nun einen Integer zurück, selbst wenn die Eingabewerte im Floating-Point-Format sind; z.B. würde 1.0 < 2.0 nicht 1.0, sondern 1 zurückgeben. [Danke an Lexikos]

1.0.47 - 19. Juni 2007

Hinzugefügt: Funktionsbibliotheken werden ab sofort unterstützt, mit denen ein Skript eine Funktion aus einer externen Datei aufrufen kann, ohne #Include verwenden zu müssen.

Hinzugefügt: RegisterCallback() erstellt eine Maschinencode-Adresse, die, wenn aufgerufen, den Aufruf an eine Funktion im Skript weiterleitet. [entwickelt von Jonathan Rennison (JGR)]

Hinzugefügt: NumGet() und NumPut() können Binärzahlen viel schneller abrufen/speichern als Extract/InsertInteger.

Verbessert: Sort hat nun eine Option, um benutzerdefiniertes Sortieren nach den Kriterien in einer Rückruffunktion durchzuführen. [Danke an Laszlo]

Verbessert: OnMessage() hat nun eine Option, um mehr als einen Thread gleichzeitig zu erlauben. [Danke an JGR]

Verbessert: Critical hat nun eine Option, um das Meldungsüberprüfintervall zu ändern, was die Zuverlässigkeit in einigen Fällen verbessern könnte. [Danke an Majkinetor und JGR]

Geändert: Critical setzt nun SetBatchLines -1 in Kraft.

Geändert: Fehlermeldungen von #ErrorStdOut enthalten nun ein Leerzeichen vor dem Doppelpunkt. [Danke an Toralf]

Behoben: OnMessage()-Funktionen, die eine eigene lokale Variable zurückgeben, geben nun die Zahl in dieser Variable zurück, nicht 0.

Behoben: Interne Variablen, die auf die Registry zugreifen (z.B. A_AppData, A_Desktop, A_MyDocuments, A_ProgramFiles), verursachen keinen Absturz mehr. [Danke an tekl]

1.0.46.17 - 31. Mai 2007

Behoben: A_UserName (fehlerhaft seit 1.0.46.16).

1.0.46.16 - 30. Mai 2007

Behoben: Gui, Tab, TabName nach vorherigem Gui Tab. [Danke an Toralf]

Verbessert: SetTimer behandelt negative Perioden ab sofort als "nur einmal ausführen". [Danke an Majkinetor]

Hinzugefügt: GuiControlGet Hwnd ist eine modulare/dynamische Methode, um die HWND-Nummer eines Steuerelements abzurufen. [Danke an Majkinetor]

Hinzugefügt: Die internen Variablen A_ThisLabel und A_ThisFunc enthalten die Namen des/der aktuell ausgeführten Labels/Funktion. [Danke an Titan & Majkinetor]

1.0.46.15 - 9. Mai 2007

Behoben: GuiControl, GuiControlGet und Gui ListView/TreeView unterstützen nun statische Variablen und ByRefs, die auf globale/statische Variablen verweisen. [Danke an Peter]

Behoben: FileInstall bewirkt nicht länger, dass der Random-Befehl seine Zufallsgenerierung in kompilierten Skripten verliert. [Danke an Velocity]

Verbessert: Die Größe von kompilierten Skripten wurde aufgrund von UPX 3.0 auf etwa 16 KB reduziert. [Danke an atnbueno für die Entdeckung der optimalen Befehlszeilenoptionen]

1.0.46.14 - 2. Mai 2007

Hinzugefügt: Der Installer hat nun das requireAdministrator-Flag, um ein Warndialogfenster in Windows Vista zu verhindern. [Danke an Roussi Nikolov]

1.0.46.13 - 1. Mai 2007

Behoben: Hotkeys wie *x werden nun auch ausgelöst, wenn x ein Hotkey ist, dessen Auslösung via #IfWin unterdrückt wurde. [Danke an Joy2DWorld & Engunneer]

Verbessert: Optionale Parameter akzeptieren nun direkt geschriebene bzw. in Anführungszeichen gesetzte Zeichenketten als Standardwerte.

Verbessert: ByRef-Parameter können nun optional sein (d.h. sie können Standardwerte akzeptieren). [Danke an Corrupt]

1.0.46.12 - 24. April 2007

Behoben: In der wissenschaftlichen Schreibweise werden nun auch direkt geschriebene Zahlen erkannt, die mit einer 0 beginnen (z.B. 0.15e+1). [Danke an Laszlo]

1.0.46.11 - 23. April 2007

Behoben: Funktionsaufrufe können nun das erste Element in bestimmten kommagetrennten Ausdrücken sein. [Danke an Majkinetor]

Behoben: FensterTitel wie ahk_id %StrlmntHwnd% in ControlGet FindString/Choice/List, und Control Add/Delete/Choose. [Danke an Freighter & PhiLho]

Verbessert: Die wissenschaftliche Schreibweise unterstützt nun Floating-Point-Zahlen; z.B. 1.2e-5 (der Dezimalpunkt ist zwingend erforderlich). Zudem hat "SetFormat Float" nun eine Option, um die Ausgabe in wissenschaftlicher Schreibweise darzustellen. [Danke an Laszlo]

1.0.46.10 - 22. März 2007

Behoben: StringSplit erstellt nun innerhalb von Assume-Local-Funktionen ein lokales Array, selbst wenn AusgabeArray0 global statt lokal vorhanden ist. [Danke an KZ]

Verbessert: Die Elementänderungsbenachrichtigung ("I") von ListView zeigt nun via ErrorLevel an, ob das Element aus-/abgewählt, fokussiert/unfokussiert und/oder ein-/ausgeschaltet ist. [Danke an foom]

Hinzugefügt: Eine zusätzliche Sicherheitsstufe für kompilierte Skripte. Es wird empfohlen, Skripte mit sensiblen Daten oder Quellcode via /NoDecompile-Option neu zu kompilieren.

1.0.46.09 - 4. März 2007

Behoben: Tief in Ausdrücken befindliches :=, das verwendet wird, um einer lokalen Variable das Ergebnis einer rekursiven Funktion zuzuweisen (fehlerhaft seit 1.0.46.06). [Danke an Laszlo]

Behoben: Bestimmte ternäre Ausdrücke können nun an ByRef-Parameter übergeben werden. [Danke an Titan]

Behoben: GuiControlGet, AusgabeVar, Pos macht AusgabeVar nicht mehr leer. [Danke an PhiLho]

Geändert und behoben: Die Fortsetzungsbereichsoption Comments erzwingt nicht mehr das automatische Inkrafttreten der LTrim-Option. [Danke an Titan]

Geändert: Terminal-Server-Awareness-Flag wurde bei AutoHotkey.exe und kompilierten Skripten wieder "deaktiviert". Diese Änderung verbessert die Flexibilität und Abwärtskompatibilität (siehe Diskussion im Forum).

1.0.46.08 - 7. Februar 2007

Behoben: ComSpec und Umgebungsvariablen funktionieren nun zuverlässiger in Windows 9x (fehlerhaft seit v1.0.46.07). [Danke an Loriss]

Geändert: Wenn AutoHotkey.exe gestartet wird, ohne dass ein Skript angegeben wurde, wird nun AutoHotkey.ahk im Dokumente-Ordner ausgeführt (oder bei Nachfrage erstellt). Die einzige Ausnahme ist, wenn AutoHotkey.ini im Arbeitsverzeichnis vorhanden ist, dann wird das alte Verhalten zum Ausführen dieser Datei verwendet.

Verbessert: DllCall unterstützt nun einen Integer anstelle des Funktionsnamens, der als Adresse einer Funktion zum Aufrufen interpretiert wird. [Danke an Sean]

1.0.46.07 - 23. Januar 2007

Behoben: Falsch benannte dynamische Variablen auf der linken Seite einer Gleichheitszeichen-Zuweisung verursachen keinen Absturz mehr (fehlerhaft seit v1.0.45). [Danke an PhiLho]

Behoben: Die "Option 2" von FileMoveDir funktioniert nun wie vorgesehen, wenn das Verzeichnis sowohl umbenannt als auch verschoben wurde. [Danke an bugmenot]

Behoben: Eine Variable kann nun per Referenz (ByRef) übergeben werden, wenn derselbe Ausdruck von leer auf nicht-leer geändert wurde (in Abwesenheit von #NoEnv). [Danke an Joy2DWorld]

Geändert: A_LastError von DllCall spiegelt nun nur noch die vom Skript durchgeführten Änderungen wider, nicht mehr die von AutoHotkey selbst. [Danke an Azerty]

1.0.46.06 - 16. Januar 2007

Aktualisiert: PCRE von 6.7 auf 7.0, das kleine Fehlerbehebungen und Verbesserungen für reguläre Ausdrücke beinhaltet. Eine der wichtigsten Verbesserungen ist die "`a"-Option, mit der alle Zeilenumbruchsvarianten erkannt werden können (nämlich `r, `n oder `r`n). Entsprechend bedeutet die \R-Escapesequenz "ein einzelnes Zeilenumbruchszeichen beliebiger Art". Siehe auch: Ausführliches PCRE-Changelog

Geändert und behoben: Alle Steuerelement-Befehle und StatusBarWait berücksichtigen nun SetTitleMatchMode RegEx wie dokumentiert.

Geändert: RegExReplace() gibt bei Misserfolg nun die originale/unveränderte Zeichenkette statt "" zurück.

Geändert: Terminal-Server-Awareness-Flag bei AutoHotkey.exe und kompilierten Skripten aktiviert.

Verbessert: Höhere Performanz beim Zuweisen von langen Zeichenketten, die von benutzerdefinierten Funktionen zurückgegeben werden. [Danke an Laszlo]

1.0.46.05 - 4. Januar 2007

Behoben: Der Input-Befehl verhindert nicht länger, dass benannte Endungstasten wie {F9} beim Gedrückthalten der UMSCHALT-Taste funktionieren (fehlerhaft seit v1.0.45). [Danke an Halweg]

Behoben: "Gui Show" kann nun das GUI-Fenster fokussieren, wenn das Tray-Menü sowohl zum Neuladen des Skripts als auch zum Anzeigen des GUI-Fensters verwendet wird. [Danke an Rnon]

Behoben: Einige Typen von Zuweisungen (:=) konnten nicht an einen ByRef-Parameter übergeben werden. [Danke an Laszlo]

1.0.46.04 - 2. Januar 2007

Behoben: Das Ergebnis einer Zuweisung (:=) konnte nicht an einen ByRef-Parameter übergeben werden. [Danke an Titan]

1.0.46.03 - 18. Dezember 2006

Behoben: Die Floating-Point-Sortierung von ListView erzeugt nun die korrekte Reihenfolge. [Danke an oldbrother/Goyyah/Laszlo]

1.0.46.02 - 17. Dezember 2006

Behoben: Umgebungsvariablen funktionieren nun korrekt als Eingabevariablen bei verschiedenen Befehlen wie StringLen und StringReplace (fehlerhaft seit 1.0.44.14). [Danke an Camarade_Tux]

1.0.46.01 - 15. Dezember 2006

HINWEIS: Obwohl diese Version ausgiebig getestet wurde, wurden mehrere Low-Level-Verbesserungen vorgenommen. Wenn Sie unternehmenskritische Skripte haben, ist es ratsam, diese erneut zu testen und/oder einige Wochen zu warten, bis eventuelle Bugs behoben sind.

Behoben: Kommagetrennte Deklarationsinitialisierungen wie local x = 1, y = 2 funktionieren nun auch, wenn sie direkt unter einer If/Else/Loop-Anweisung sind.

Behoben: Wenn bei kommagetrennten Ausdrücken das ganz linke Element eine Zuweisung ist, erfolgt es nicht nach, sondern vor den anderen. [Danke an Laszlo]

Geändert und behoben: Alle von Funktionsaufrufen vorgenommenen Änderungen an dynamischen Variablennamen, Umgebungsvariablen und internen Variablen (z.B. Clipboard) sind nun immer sichtbar für nachfolgende Teile des Ausdrucks, der diese aufgerufen hat.

Geändert: Wenn direkt nach einem Mehrfachanweisungskomma eine Variable und ein Gleichheitszeichen erfolgt, wird das Gleichheitszeichen automatisch als Doppelpunkt-Gleich-Zuweisung (:=) behandelt. Zum Beispiel enthält Folgendes nur Zuweisungen: x:=1, y=2, a=b=c.

Geändert: Kommagetrennte Ausdrücke haben nun folgende Auswirkungen: 1) Der "/="-Operator ganz links ist nun eine echte Division, nicht mehr EnvDiv; 2) Leere Werte werden in mathematischen Ausdrücken nicht mehr als 0 behandelt (d.h. sie liefern leere Ergebnisse).

Verbessert: Ausdrücke sind um 5 bis 20 % performanter (abhängig vom Typ).

Verbessert: Neue Zuweisungsoperatoren wie .= unterstützen nun die Clipboard-Variable (auch in kommagetrennten Ausdrücken).

Verbessert: Der ".="-Operator benötigt kein Leerzeichen mehr auf der linken Seite.

Verbessert: GUI-Steuerelemente akzeptieren nun statische Variablen als ihre zugeordneten Variablen (vorher waren nur globale Variablen möglich).

Hinzugefügt: HwndAusgabeVar-Option für Gui Add, die die HWND-Nummer eines Steuerelements in AusgabeVar speichert. [Danke an Corrupt & Toralf]

1.0.46 - 29. November 2006

HINWEIS: Obwohl diese Version ausgiebig getestet wurde und voraussichtlich keine bestehenden Skripte unbrauchbar machen wird, wurden mehrere Low-Level-Verbesserungen vorgenommen. Wenn Sie unternehmenskritische Skripte haben, ist es ratsam, diese erneut zu testen und/oder einige Wochen zu warten, bis eventuelle Bugs behoben sind.

Hinzugefügt: SubStr(), das eine bestimmte Anzahl von Zeichen an einer bestimmten Position in der Zeichenkette abrufen kann.

Hinzugefügt: Neue Zuweisungsoperatoren //=, .=, |=, &=, ^=, >>= und <<=, die überall in Ausdrücken verwendet werden können. Zum Beispiel fügt Var .= "abc" die Zeichenkette "abc" an den aktuellen Inhalt der Variable an.

Hinzugefügt: Die Operatoren :=, ++, --, +=, -=, *= und /= werden nun vollständig in Ausdrücken unterstützt (vorher konnten sie nur als Operator ganz links in der Zeile verwendet werden). Alle Zuweisungsoperatoren (insbesondere ++ und --) verhalten sich wie in C, wenn ihr Ergebnis von einem anderen Operator verwendet wird.

Hinzugefügt: Ternärer Operator (?:) als Kurzschreibweise für eine if-else-Anweisung. Zum Beispiel würde var := x>y ? 2 : 3 den Wert 2 zuweisen, wenn x größer als y ist; andernfalls würde es den Wert 3 zuweisen.

Hinzugefügt: Ab sofort werden kommagetrennte Ausdrücke unterstützt, die eine einzelne Zeile mit mehreren Zuweisungen, Funktionsaufrufen und sonstige Ausdrücken ermöglichen. [Danke an PhiLho & Titan]

Verbessert: Variablendeklarationen unterstützen nun Initialisierungen auf derselben Zeile. Hinweis: Die Initialisierung einer statischen Variable erfolgt nur einmal vor Beginn der Skriptausführung.

Verbessert: Zeilenfortsetzung unterstützt nun alle Ausdrucksoperatoren. Zum Beispiel würde eine Zeile, die mit "?" oder "+" beginnt, automatisch mit der darüber liegenden Zeile verbunden.

Verbessert: Die Operatoren "." und ".=" sind nun performanter, so dass sie genauso schnell sind wie die Prozentzeichen-Methode zum Anfügen einer Zeichenkette.

Verbessert: Ausdrücke unterstützen nun mehr Typen von aufeinanderfolgenden unären Operatoren wie !!Var. [Danke an Laszlo]

Geändert: Critical überprüft Meldungen nicht mehr so oft (20 ms statt 10 ms), was die Zuverlässigkeit von häufig aufgerufenen OnMessage-Funktionen verbessert. [Danke an Majkinetor]

Geändert: Eine Variable mit dem Namen "?" ist aufgrund des neuen ternären Operators in Ausdrücken nicht mehr gültig.

Behoben: Hotkeys unterstützen nun ::: (einen Doppelpunkt als Hotkey) und : & x (einen Doppelpunkt als Hotkey-Präfix).

Behoben: Der Installer entfernt nun psapi.dll aus dem AutoHotkey-Ordner (außer in Windows NT4). Diese Änderung verhindert einen Konflikt mit dem Internet Explorer 7. [Danke an alle, die das gemeldet haben]

1.0.45.04 - 15. November 2006

Behoben: In Windows 9x kommt es nicht länger zum Absturz, wenn ein Skript gerade nicht läuft (z.B. wegen eines Syntaxfehlers) (fehlerhaft seit v1.0.45). [Danke an rogerg]

Geändert: Control Style|ExStyle meldet nun ErrorLevel 0 statt 1, wenn die angeforderte Style-Änderung bereits durchgeführt wurde.

Verbessert: #Include unterstützt nun %A_AppData% und %A_AppDataCommon%. [Danke an tekl]

1.0.45.03 - 12. November 2006

Behoben: Datei-Schleifen verursachen keinen Absturz mehr, wenn sie beim rekursiven Durchwandern auf einen Pfad stoßen, der länger als 259 Zeichen ist. Darüber hinaus werden solche Pfade und Dateien nun von Datei-Schleifen, FileSetAttrib und FileSetTime ignoriert (übersprungen). [Danke an PhilR]

Behoben: Funktionen können sich nun selbst aufrufen und das Ergebnis einer ihrer lokalen Variablen zuweisen (fehlerhaft seit v1.0.45). [Danke an bjennings]

Behoben: Es kommt nicht mehr zu Abstürzen, wenn Skripte reguläre Ausdrücke mit Kompilierungsfehlern enthalten. [Danke an PhiLho]

Behoben: GuiControl konvertiert CheckBoxen nicht mehr unaufgefordert in den dritten Zustand. [Danke an JBensimon]

Geändert: UrlDownloadToFile sendet nun "AutoHotkey" statt einer leeren Zeichenkette als User-Agent an den Server. [Danke an jaco0646]

Verbessert: Fortsetzungsbereiche unterstützen nun Semikolon-Kommentare innerhalb des Bereichs mithilfe des Optionswortes Comments.

1.0.45.02 - 8. November 2006

Behoben: StringUpper und StringLower funktionieren nun auch, wenn AusgabeVar die Zwischenablage (Clipboard) ist (fehlerhaft seit v1.0.45). [Danke an songsoverruins]

Behoben: Die Hotkeys ~Alt, ~Control und ~Shift werden nun beim Drücken und nicht mehr beim Loslassen ausgelöst (fehlerhaft seit v1.0.44).
Hintergrund: Wenn das Tilde-Zeichen nicht angegeben ist, werden ALT/STRG/UMSCHALT beim Loslassen ausgelöst, um die Übernahme der linken und rechten Taste zu verhindern. Aber ein bestimmter linker/rechter Hotkey wie LAlt oder RShift wird beim Drücken ausgelöst.

1.0.45.01 - 7. November 2006

Behoben: FileReadLine und FileSelectFile verursachten einen Absturz oder verhielten sich falsch, wenn sie von anderen Threads unterbrochen werden (fehlerhaft seit v1.0.45). [Danke an Toralf]

Behoben: RegExMatch() setzt nun bei Nichtübereinstimmung benannte Teilsuchmuster korrekt auf "" im Ausgabe-Array. [Danke an PhiLho]

Behoben: Die "J"-Option von RegExMatch() schreibt nun doppelte benannte Teilsuchmuster korrekt in das Ausgabe-Array. [Danke an PhiLho]

Geändert: SetWorkingDir und #Include VerzName funktionieren nun auch mit Stammverzeichnissen wie C: ohne umgekehrten Schrägstrich.

Verbessert: DllCall() zeigt nun ein Warndialogfenster an, wenn die aufgerufene Funktion etwas in eine Variable mit 0 Kapazität schreibt.

1.0.45 - 4. November 2006

HINWEIS: Obwohl diese Version ausgiebig getestet wurde und voraussichtlich keine bestehenden Skripte unbrauchbar machen wird, wurden mehrere performanzbezogene Low-Level-Verbesserungen vorgenommen. Wenn Sie unternehmenskritische Skripte haben, ist es ratsam, diese erneut zu testen und/oder einige Wochen zu warten, bis eventuelle Bugs behoben sind.

Hinzugefügt: Reguläre Ausdrücke werden nun via RegExMatch(), RegExReplace() und SetTitleMatchMode RegEx unterstützt. [Danke an Philip Hazel & PhiLho]

Verbessert: StringReplace ist nun performanter und speichersparender.

Verbessert: Bei Ausdrücken und Funktionen, die eine lange Zeichenkette enthalten, ist der Doppelpunkt-Gleich-Operator (:=) nun performanter.

Verbessert: ControlClick hat nun eine neue Option "NA", die das Aktivieren des Zielfensters verhindert (dieser Modus verbessert in einigen Fällen auch die Zuverlässigkeit). Darüber hinaus ist nun dokumentiert, dass SetControlDelay -1 die Zuverlässigkeit von ControlClick in einigen Fällen verbessern kann. [Danke an nnesori]

Geändert: GUI-Schaltflächen verwenden nun standardmäßig "keinen Zeilenumbruch", wenn keine Breite, Höhe oder CR/LF-Zeichen angegeben sind. Dies kann Probleme bei der Darstellung von Schaltflächen in bestimmten Desktop-Themen beheben.

Behoben: "Transform HTML" bei folgenden Zeichen: &`n><

Behoben: Zeilen, die mit "if not is" beginnen (z.B. "if not IstFertig"), werden nicht mehr fehlinterpretiert.

Behoben: "Gui Show" kann ein Fenster nun vertikal nach unten verschieben, und zwar dorthin, wo sich aktuell dessen unterste Pixelreihe befindet.

Behoben: GroupActivate kann nun als einzige Zeile unterhalb von IF oder ELSE verwendet werden.

Behoben: Der Input-Befehl kann nun zwischen Endungstasten, die von geschweiften Klammern umschlossen sind, und ihren via Umschalt modifizierten (oder unmodifizierten) Gegenstücken unterscheiden; z.B. '{' vs. '['. [Danke an Laszlo]

Ältere Änderungen

Ältere Änderungen finden Sie auf www.autohotkey.com/changelog/.