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 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 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 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 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 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 jaco0646]

Behoben: GuiControl/GuiControlGet/Gui/SendMessage funktionieren nun zuverlässig, wenn sie eine Rückruffunktion von RegisterCallback() oder OnMessage auslösen. [danke 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 Crash&Burn]

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

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

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

1.0.48.03 - 3. Mai 2009

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

Behoben: ListView reagiert nun ordnungsgemäß auf das Ziehen des Mauszeigers, während ein Timer läuft. [danke 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 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 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 Yek-Toho-Tua].

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

Behoben: Funktionsdefinitionen funktionieren nun ordnungsgemäß in einem Block. [danke 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 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 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 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 animeaime & Lexikos]

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

Behoben: RegDelete löscht nicht mehr den kompletten RootSchlüssel, wenn UnterSchlüssel leer ist. [danke 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 Krzysztof Sliwinski & Eggi]

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

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

Behoben: Send-Befehle können nun die Down/Up-Modifikatoren mit dem "}"-Zeichen kombinieren. [danke 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 DeathByNukes]

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

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

1.0.47.05 - 21. November 2007

Behoben: 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 Roland]

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

Behoben: Es kann nun eine Variable als Parameter übergeben werden, der ClipboardAll zugewiesen wurde. [danke 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 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 Roland]

Behoben: Round(Var, NegativeZahl) wurde in seltenen Fällen um 1 verringert. [danke 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 msgbox vom deutschen Forum]

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

Geändert: CheckBox- und Radio-Steuerelemente verwenden nun standardmäßig "kein automatischer Zeilenumbruch", wenn keine Breite, Höhe oder Zeilenumbruchzeichen angegeben sind. Dies behebt Anzeigeprobleme bei ungewöhnlichen DPI-Einstellungen. [danke 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 Laszlo]

Behoben: Die Blocksyntax erlaubt nun einen Funktionsaufruf direkt rechts von "}". [danke 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 tfcahm]

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

Behoben: Platzhalter-Hotkeys erhalten nicht mehr das Tilde-Verhalten, wenn der gleiche Hotkey mit einem Tilde-Zeichen im Skript vorkommt. [danke 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 Hardeep]

1.0.47.01 - 8. Juli 2007

Behoben: RunAs verursachte einen Absturz oder verhielt sich falsch, wenn eine Domäne angegeben ist. [danke 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 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 Laszlo]

Verbessert: OnMessage() hat nun eine Option, um mehr als einen Thread gleichzeitig zu erlauben. [danke 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 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 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 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 Toralf]

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

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

Hinzugefügt: Die internen Variablen A_ThisLabel und A_ThisFunc enthalten die Namen des/der aktuell ausgeführten Labels/Funktion. [danke 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 Peter]

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

Verbessert: Die Größe von kompilierten Skripten wurde um ca. 16 KB reduziert (wegen UPX 3.0). [danke 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 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 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 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 Laszlo]

1.0.46.11 - 23. April 2007

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

Behoben: FensterTitel wie ahk_id %StrlmntHwnd% in ControlGet FindString/Choice/List, und Control Add/Delete/Choose. [danke 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 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 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 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 Laszlo]

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

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

Geändert und behoben: Die Fortsetzungsbereichsoption Comments erzwingt nicht mehr das automatische Inkrafttreten der LTrim-Option. [danke 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 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 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 PhiLho]

Behoben: Die "Option 2" von FileMoveDir funktioniert nun wie vorgesehen, wenn das Verzeichnis sowohl umbenannt als auch verschoben wurde. [danke 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 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 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 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 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 Rnon]

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

1.0.46.04 - 2. Januar 2007

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

1.0.46.03 - 18. Dezember 2006

Behoben: Die Floating-Point-Sortierung von ListView erzeugt nun die korrekte Reihenfolge. [danke 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 Camarade_Tux]

1.0.46.01 - 15. Dezember 2006

HINWEIS: Obwohl diese Version ausgiebig getestet wurde, wurden mehrere Low-Level-Verbesserungen vorgenommen. Wenn Sie wichtige 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 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 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 wichtige 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 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 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 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 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 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 PhilR]

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

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

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

Geändert: UrlDownloadToFile sendet nun "AutoHotkey" statt einer leeren Zeichenkette als User-Agent an den Server. [danke 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 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 toralf]

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

Behoben: Die "J"-Option von RegExMatch() schreibt nun doppelte benannte Teilsuchmuster korrekt in das Ausgabe-Array. [danke 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 wichtige 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 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 nnesori]

Geändert: GUI-Schaltflächen verwenden nun standardmäßig "keinen Zeilenumbruch", wenn keine Breite, Höhe oder Zeilenumbruchzeichen 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 UMSCHALT-modifizierten (oder unmodifizierten) Gegenstücken unterscheiden; z.B. '{' vs. '['. [danke Laszlo]

1.0.44.14 - 2. Oktober 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 wichtige Skripte haben, ist es ratsam, diese erneut zu testen und/oder einige Wochen zu warten, bis eventuelle Bugs behoben sind.

Behoben: Schleifenvariablen wie A_Index, auf die in mehr als einem Parameter einer Zeile zugegriffen wird. Die Ungenauigkeit trat nur auf, wenn einer dieser Parameter eine Funktion aufrief, die direkt aus dem Körper einer Schleife zurückkehrte. [danke NumEric]

Geändert: ListVars zeigt nun ByRef-Parameter mit ihrem eigenen Namen an, nicht mehr mit dem Namen des Aufrufers.

Geändert: Der Input-Befehl hat unter Windows 9x keine Wirkung (nicht einmal ErrorLevel und AusgabeVar werden gesetzt).

Geändert: Das Limit für die Anzahl der GUI-Schriftarten wurde von 100 auf 200 erhöht. [danke philou]

Geändert: StrLen()/StringLen und die interne Behandlung von Zeichenketten wurden geändert, um die Längenberechnung von Zeichenketten möglichst zu vermeiden. Obwohl dies die Performanz verbessert (insbesondere bei langen Zeichenketten), sollten Skripte, die mit DllCall eine Zeichenkette per Adressoperator (&) statt als Str-Parameter übergeben, VarSetCapacity(Var, -1) aufrufen, um die intern gespeicherte Länge zu korrigieren (falls sie sich geändert hat).

Geändert: Performanz geringfügig verbessert (zusätzlich zur StrLen-Verbesserung).

1.0.44.13 - 20. September 2006

Behoben: ControlGetPos und ControlMove funktionieren jetzt mit ahk_id %StrlmntHWND%. [danke Hardeep]

Behoben: #CommentFlag wirkt sich nun auch auf die Zeile darunter aus. [danke PhiLho]

Geändert: A_OSVersion gibt nun "WIN_VISTA" statt "" für Windows Vista zurück.

Hinzugefügt: Optionen zum Festlegen der minimalen/maximalen Größe von GUI-Fenstern; zum Beispiel: Gui +MinSize320x240 +MaxSize640x480

1.0.44.12 - 13. September 2006

Behoben: Timer interferieren nicht mehr mit Doppelklicks in FileSelectFile. [danke DJAnonimo]

Behoben: Der Maus-Hook verursacht beim Drücken einer Schaltfläche in der Titelleiste eines GUI-Fensters keine Verzögerung mehr. [danke Tekl]

Verbessert: GUI-Fenster haben jetzt CS_DBLCLKS, damit OnMessage() Doppelklicks über WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK, und WM_MBUTTONDBLCLK überwachen kann. [danke Hardeep]

Verbessert: ListView unterstützt nun eine logische Sortierung, die Ziffern als Zahlen statt als bloße Zeichen behandelt. [danke Tekl & Hacker]

1.0.44.11 - 9. September 2006

Behoben: FileSelectFolder und TreeView reagieren nun korrekt auf Mausklicks, wenn Timer laufen.

Behoben: OnMessage() ist nun in der Lage, bestimmte Meldungen wie WM_NOTIFY konsistent zu überwachen. [danke numEric]

Behoben: Direkt geschriebene bzw. in Anführungszeichen gesetzte Zeichenketten können nun `% enthalten.

Behoben: Fortsetzungsbereiche unterstützen nun #EscapeChar, #DerefChar und #Delimiter. [danke Laszlo]

Geändert: GroupBox verwendet nun standardmäßig "keinen Zeilenumbruch". Dies kann mit +Wrap überschrieben werden.

Geändert/verbessert: Der Operator ** und Transform Pow unterstützen nun auch negative Basen, wenn der Exponent nicht gebrochen ist. [danke Laszlo]

Verbessert: GUI-Reaktionsfähigkeit während eines UrlDownloadToFile-Vorgangs (insbesondere bei langsamen Downloads).

1.0.44.10 - 27. August 2006

Behoben: OnMessage(), wenn es innerhalb einer Überwachungsfunktion aufgerufen wird, um eine andere Überwachung zu deaktivieren. [danke Hardeep]

Geändert/behoben: Die TransN-Option von ImageSearch verwendet nun RGB statt BGR, wie dokumentiert. [danke Tom Lorimor]

Behoben: Der Installer verzichtet nun auf das Verb "Run" für .ahk-Dateien. Standardmäßig wird jetzt das Verb "Open" verwendet (mit dem neuen Anzeigenamen "Run Script"). [danke numEric]

1.0.44.09 - 9. August 2006

Behoben: Hook-Hotkeys wie $^b werden nicht mehr doppelt ausgelöst, wenn ein ähnlicher Taste-Oben-Hotkey existiert (wie #b up). [danke Newbie]

Behoben: Ein Backspace zu viel in Sternchen-Hotstrings, deren vorletztes Zeichen eine tote Taste ist. [danke Henrique]

Behoben: Gui Color funktioniert nun auch, wenn die Hintergrundfarbe zuvor auf "Default" geändert wurde. [danke Hardeep]

Geändert: if var is xdigit toleriert jetzt ein 0x-Präfix. [danke Titan]

Hinzufügt: Gui +LabelMyGui zur Unterstützung benutzerdefinierter Labelnamen (z.B. "MeineGuiClose" anstelle von "2GuiClose"). Dies ermöglicht auch, dass mehrere GUI-Fenster denselben Satz von Labels verwenden können. [danke Tekl]

1.0.44.08 - 25. Juli 2006

Behoben: Gui Show entmaximiert ein Fenster nur noch, wenn die Optionen dies erfordern. [danke foom]

Behoben: GuiControl +/-Left/Right bei Button-, CheckBox- und Radio-Steuerelementen. [danke Hardeep]

Behoben: Bei der Erstellung des UpDown-Steuerelements wird sein Buddy nur noch breiter gemacht, wenn der Buddy keine explizite Breite hat. [danke Thalon]

Verbessert: MsgBox/IfMsgBox unterstützt nun die Schaltflächengruppe "Abbrechen / Wiederholen / Weiter" sowie eine Hilfe-Schaltfläche. [danke jballi]

1.0.44.07 - 17. Juni 2006

Behoben: Kein Stapelüberlauf mehr, wenn eine Registry-Schleife tief verschachtelte Unterschlüssel durchläuft. [danke Eggi]

Behoben: Der Hotkey-Befehl meldet nun ErrorLevel 0 statt 51 bei Erfolg für Joystick-Hotkeys. [danke Roland]

Geändert: ClipboardAll schließt nun Formate aus, die den MS-Word-Editor von Outlook dazu veranlassen, Fehlerdialogfenster anzuzeigen. [danke deanhill1971]

Geändert: UrlDownloadToFile wurde verbessert, um die Datei vom Remote-Server statt aus dem Cache abzurufen. Es gibt eine neue Option, um dies zu überschreiben. [danke olfen]

Verbessert: Neubelegung unterstützt nun auch Zieltasten, die nicht auf der Tastatur vorhanden sind (z.B. F1::ð in Englisch). [danke DavidT]

1.0.44.06 - 8. Juni 2006

Behoben: Neubelegungen mit Modifikatoren als Zieltasten, wie z.B. F1::Control (fehlerhaft seit v1.0.44.05). [danke formarx]

1.0.44.05 - 7. Juni 2006

Behoben: Mausbewegungen lagen bei Koordinaten nahe 0 um 1 Pixel daneben (fehlerhaft seit v1.0.43). [danke numEric]

Geändert: Neubelegungen mit Modifikatoren als Zieltasten (z.B. F1::Control) wurden verbessert, um die Modifikatoren während anderer Sends loszulassen.

1.0.44.04 - 31. Mai 2006

Behoben: Warndialogfenster bzgl. Doppelpunktpaaren beim Start bestimmter Skripte. (fehlerhaft seit v1.0.44.03)

Behoben: Kombinations-Hotkeys wie a & b funktionieren nun auch, wenn b & a und b & a up ebenfalls vorhanden sind.

Behoben: Buddylose UpDown-Steuerelemente funktionieren nun auch, wenn ein StatusBar-Steuerelement vorhanden ist. [danke Titan]

1.0.44.03 - 29. Mai 2006

Behoben: FileExist() gibt nun "X" statt "" für Dateien zurück, deren Attribute alle undefiniert sind. [danke Peter]

Behoben: Tab-Steuerelemente: Das erste Text-Steuerelement, das einem neuen Tab hinzugefügt wird, wird nun automatisch richtig positioniert, auch wenn das zuvor hinzugefügte Steuerelement ein Text-Steuerelement auf einem anderen Tab war.

Behoben: ImageSearch: Eine transparente Farbe wie TransBlack ist im Variationsmodus nun genauso effektiv wie im Nicht-Variationsmodus. [danke Troz]

Behoben: GetKeyState und KeyWait akzeptieren nun auch Zeichen, die in der aktuellen Tastaturbelegung nicht vorhanden sind (für den Fall, dass sich die Tastaturbelegung nach dem Start des Skripts ändert).

Behoben: Hotkeys, die in der aktuellen Tastaturbelegung nicht existieren (wie z.B. ^!ä:: in Englisch), führen zu einer Warnmeldung und beenden den automatischen Ausführungsbereich. [danke Androgen Belkin]

Geändert: ControlSend, Send, Hotstrings, Input und AltGr-Behandlung wurden so verbessert, dass sie nun die Sprache des Zielfensters verwenden, nicht mehr die des Skripts. Wenn Sie nur eine Tastaturbelegung auf Ihrem System verwenden, sollte dies keinerlei Auswirkungen haben. [danke Androgen Belkin]

Verbessert: VarSetCapacity() interpretiert eine Kapazität von -1 nun als "aktualisiere die intern gespeicherte Länge dieser Variable". Dies ist in Situationen nützlich, wo eine Variable indirekt geändert wurde, z.B. durch Übergabe ihrer Adresse via DllCall().

1.0.44.02 - 20. Mai 2006

Behoben: Hotkeys, die & und ~ zusammen verwenden (z.B. ~a & b und ~LButton & RButton) (fehlerhaft seit v1.0.44). [danke SlimlinE & Spike]

1.0.44.01 - 15. Mai 2006

Behoben: StatusBar schnappte sich UpDowns, die nach ihm hinzugefügt wurden. [danke Tekl]

Geändert: Round() zeigt nun genau N Dezimalstellen an, anstatt SetFormat zu berücksichtigen.

1.0.44 - 14. Mai 2006

Behoben: OnClipboardChange funktioniert jetzt auch, wenn das Skript eine MsgBox oder ein anderes Dialogfenster anzeigt.

Behoben: FileCreateDir meldet nicht mehr ErrorLevel 1, wenn das angegebene Verzeichnis mit \ endet. [danke Wesley]

Behoben: Die Hotkeys Control::, Shift:: und Alt:: werden nun beim Loslassen der Taste ausgelöst, nicht mehr beim Drücken der Taste (fehlerhaft seit v1.0.41).

Behoben: Das Laden von Symbol Nr. 1 aus nicht standardisierten Dateitypen wie .bin.

Behoben: Bei der ListView-Erstellung wird nun die von Gui Font gesetzte Textfarbe berücksichtigt.

Geändert/behoben: Bei Verwendung des Hotkey-Tilde-Präfixes (~) werden Hotkeys wie ~Esc und Esc nun als Duplikate behandelt, d.h. es ist nicht mehr möglich, in einem Skript sowohl ~Esc als auch Esc zu definieren, es sei denn, sie haben unterschiedliche #IfWin-Kriterien (in diesem Fall funktionieren ~Esc und Esc nun korrekt). [danke jballi]

Geändert/verbessert: ListViews: 1) standardmäßig ist die neue Option WantF2 wirksam, die einen F2-Tastendruck zum Editieren der aktuellen Zeile veranlasst (sofern nicht ReadOnly); 2) LV_Modify(Row, "Vis") wurde hinzugefügt, um eine Zeile in den sichtbaren Bereich zu scrollen; 3) Zieh­benachrichtigungen treten auch ohne AltSubmit auf; 4) Zeilenänderungs­benachrichtigungen setzen A_EventInfo auf die Zeilennummer; 5) ErrorLevel spiegelt nicht mehr A_EventInfo in Fällen, wo es nie dokumentiert war, dies zu tun (dasselbe gilt für GuiContextMenu).

Verbessert: In Edit-Steuerelementen wird nun der gesamte Text markiert, wenn Strg+A gedrückt wird. Dies kann mit -WantCtrlA deaktiviert werden.

Hinzugefügt: Neue GUI-Steuerelemente TreeView und StatusBar.

1.0.43.11 - 1. Mai 2006

Behoben: In Windows 9x war %A_WorkingDir% manchmal leer. [danke Points]

Verbessert: BlockInput hat nun einen neuen Modus, der nur die physische Mausbewegung blockiert, keine Tastendrücke oder Mausklicks.

1.0.43.10 - 28. April 2006

Verbessert: PixelGetColor hat nun zwei alternative Modi, die in einer breiteren Palette von Fenstern und Vollbildanwendungen funktionieren. [danke TDMedia]

Verbessert: Bei StringMid kann nun Anzahl weggelassen werden, um alle Zeichen abzurufen. [danke kapege.de]

Verbessert: FileSelectFile unterstützt nun spezielle Ordner wie z.B. Arbeitsplatz via CLSID-Zeichenketten (FileSelectFolder und Run unterstützen dies bereits).

1.0.43.09 - 25. April 2006

Behoben: SendInput fällt nicht mehr auf SendEvent zurück, nur weil ein anderes Skript einen Maus-Hook hat. Nur ein anderer Tastatur-Hook sollte dies tun. [danke baby-luck]

Behoben: LV_GetCount() funktioniert nun auch, wenn das "C" im Namen kleingeschrieben ist.

Geändert: FileSelectFile navigiert bzw. folgt nun Verknüpfungen (.lnk-Dateien), anstatt sie auszuwählen. Es gibt auch eine neue Option, um dies zu überschreiben. [danke Veovis & PhiLho]

Hinzugefügt: Mit Gui +LastFoundExist kann festgestellt werden, ob ein GUI-Fenster vorhanden ist. [danke Tekl & Evl]

Hinzugefügt: Interne Variablen A_AppData, A_AppDataCommon und A_Temp (A_Temp ist der Ordner für temporäre Dateien).

1.0.43.08 - 17. April 2006

Geändert: SendInput verwendet nun SetKeyDelay -1, 0, wenn es auf den SendEvent-Modus zurückfällt (es sei denn, die Tastenverzögerung von SendEvent ist -1,-1, dann wird -1,-1 verwendet).

Hinzugefügt: Direktive #NoEnv, die aus folgenden Gründen für neue Skripte empfohlen wird:

  1. Sie erhöht deutlich die Performanz, wann immer leere Variablen in einem Ausdruck oder Befehl verwendet werden. Sie erhöht auch die Performanz von DllCall, wenn anführungszeichenlose Parametertypen verwendet werden (z.B. Int statt "Int").
  2. Sie verhindert Skriptbugs, die durch Umgebungsvariablen verursacht werden, deren Namen unerwartet mit den vom Skript verwendeten Variablen übereinstimmen.
  3. Eine zukünftige Version von AutoHotkey, z.B. 1.1, könnte dieses Verhalten zum Standard machen (obwohl eine solche Änderung frühestens in einem Jahr zu erwarten ist).

Hinzugefügt: Interne Variablen ComSpec und ProgramFiles, die den Umstieg auf #NoEnv erleichtern sollen.

Hinzugefügt: Befehl EnvGet, mit dem eine Umgebungsvariable abgerufen werden kann.

1.0.43.07 - 12. April 2006

Behoben: Menu, Tray, Icon war nicht in der Lage, Symbol Nr. 1 aus den Dateitypen cpl/scr/drv/ocx/vbx/acm/bpl zu laden (fehlerhaft seit v1.0.43.03). Ebenso wurden alle symbolfähigen Funktionen verbessert, um diese Dateitypen zu unterstützen. [danke Winkie & PhiLho]

Behoben: Die folgenden Legacy-Befehle akzeptieren nun Funktionsaufrufe mit Kommas: EnvAdd/Sub, LeftClick(Drag), RightClick(Drag). [danke Titan]

1.0.43.06 - 9. April 2006

Geändert: ahk_id arbeitet nun direkt mit der angegebenen HWND-Nummer, wenn es sich um ein Steuerelement (oder untergeordnetes Fenster) handelt. Zuvor arbeitete es mit dem obersten Untersteuerelement, wenn dieses Steuerelement Untersteuerelemente hatte.

Verbessert: Post/SendMessage unterstützt nun auch Zeichenketten, die vom Empfänger in Adressvariablen geschrieben werden (z.B. PostMessage, Mld, &MeineVar).

Verbessert: Unterstützung für Steuerelement-HWND als Alternative zu Steuerelement-ClassNN: 1) MouseGetPos-Option hinzugefügt, um Steuerelement-HWND abzurufen; 2) WinGet ControlListHwnd hinzugefügt, um eine Liste von Steuerelement-HWNDs abzurufen; 3) ControlGet Hwnd hinzugefügt, um die HWND über die ClassNN oder den Text eines Steuerelements abzurufen.

Hinzugefügt: GuiControlGet FocusV, mit dem der Variablenname statt ClassNN des fokussierten Steuerelements abgerufen werden kann.

1.0.43.05 - 7. April 2006

Behoben/verbessert: Unterstützung für .ICL-Dateien (Symbolbibliotheken), die seit v1.0.43.03 fehlerhaft war. [danke Tekl]

Geändert: Groß-/Kleinschreibung-Sensitivität in Hotkey-Namen wurde auf das Verhalten vor 1.0.43.03 zurückgesetzt: ANSI-Großbuchstaben wie Ä und Ü und die entsprechenden Kleinbuchstaben werden als unterschiedliche Hotkeys behandelt. [danke copa017]

1.0.43.04 - 4. April 2006

Behoben: Crash von Zeichen über Chr(127) in Hotstring-Abkürzungen und den Sprachabhängige-Suche-von-rechts-Modus von InStr() und StringGetPos (fehlerhaft seit v1.0.43.03). [danke PhiLho & brotherS]

1.0.43.03 - 3. April 2006

Behoben: Verformung von 16x16-Symbolen, die mit ahk2exe oder Menu, Tray, Icon geladen werden. [danke Tekl]

Behoben: Die folgenden Elemente ignorieren nun #MaxMem wie dokumentiert: VarSetCapacity(), FileRead, ClipboardAll und ControlGet (ListView). [danke Dippy46]

Geändert: Die folgenden Elemente verwenden nun die sprachabhängige Groß-/Kleinschreibung-Nichtsensitivität anstelle der "nur A-Z"-Nichtsensitivität: Hotkey-Namen, Hotstring-Abkürzungen, Menünamen, Inputs VergleichListe und Gui Tab.

Geändert: Der Gleichheitsoperator in Ausdrücken (=) und die nicht-Groß-/Kleinschreibung-abhängige InStr-Funktion verwenden nun die sprachabhängige Groß-/Kleinschreibung-Nichtsensitivität, wenn StringCaseSense "Locale" oder "On" ist.

Verbessert: StringCaseSense hat die neue Option Locale, die Zeichenkettenvergleiche nicht-Groß-/Kleinschreibung-sensitiv macht, gemäß den aktuellen Sprach- und Regionseinstellungen des Benutzers. Zum Beispiel behandeln die meisten englischen und westeuropäischen Sprach- und Regionseinstellungen die Großbuchstaben A bis Z, einschließlich ANSI-Großbuchstaben wie Ä und Ü, und die entsprechenden Kleinbuchstaben als identisch. [danke Boskoop & PhiLho]

Verbessert: Der Sort-Befehl und die ListView-Sortierung haben nun eine Option für sprachabhängige Groß-/Kleinschreibung-Nichtsensitivität.

Verbessert: Die Mausrad-Hotkeys (WheelDown/Up) melden nun die Anzahl der Drehungen in A_EventInfo, was eine Unterscheidung zwischen schnell und langsam ermöglicht. [danke evl]

Verbessert: FileRead hat eine neue Option, mit der nur der führende Teil einer Datei gelesen werden kann. [danke Dippy46]

1.0.43.02 - 30. März 2006

Behoben: Raw-Modus-Hotstrings senden nicht mehr die zusätzliche Zeichenkette {Raw} (fehlerhaft seit v1.0.43). [danke stom2006]

Geändert: SendMode: 1) InputThenEvent in Input umbenannt; 2) InputThenPlay hinzugefügt, das das gleiche Verhalten wie das vorherige "Input" hat. Dies wurde getan, weil SendEvent weniger wahrscheinlich Kompatibilitätsprobleme verursacht als SendPlay.

1.0.43.01 - 29. März 2006

Behoben: Mausklick an nicht spezifizierten Koordinaten in bestimmten Anwendungen; z.B. Send {LButton} (fehlerhaft seit v1.0.43). [danke incith]

Behoben: Tilde-Hotkeys. Wenn sie einen Hook entfernen, bleibt ihre eigene Taste nicht mehr dauerhaft gedrückt (z.B. Mausgesten-Skript und ~LCtrl::Hotkey, RButton, Off). [danke Stefan Taubenberger]

1.0.43 - 25. März 2006

Hinweis: Obwohl diese Version ausgiebig getestet wurde und voraussichtlich keine bestehenden Skripte unbrauchbar machen wird, wurden einige Änderungen am Senden von Tastendrücken und Mausklicks vorgenommen. Wenn Sie wichtige Skripte haben, die auf solche Features angewiesen sind, ist es ratsam, diese erneut zu testen oder zwei Wochen zu warten, bis eventuelle Bugs behoben sind.

Behoben: AltGr-Hotkeys, die Send verwenden, wie z.B. <^>!m::Send ^c. Außerdem wurden AltGr-Neubelegungen wie F1::RAlt behoben [danke foxer]

Behoben: VarSetCapacity war nicht in der Lage, den Speicher für einen ByRef-Parameter freizugeben. [danke Corrupt]

Behoben: Die Hotstring-Option b0 zeigt nun das Endungszeichen an der Stelle an, wo Sie es eingegeben haben, nicht am Ende des Ersatzes.

Verbessert: Automatisch-ersetzende Hotstrings sind nun schneller und zuverlässiger, da sie standardmäßig den SendInput-Modus verwenden. Es gibt auch eine neue Hotstring-Option, um den Send-Modus zu ändern.

Verbessert: Mausklicks/-ziehvorgänge sind nun zuverlässiger in Fällen, wo der Benutzer den Mauszeiger während des Ereignisses physisch bewegt.

Hinzugefügt: Befehle Click und Send {Click}, die einfacher zu benutzen sind als MouseClick. Sie kompensieren auch den Fall, wo die linke/rechte Maustaste via Systemsteuerung vertauscht wurde.

Hinzugefügt: Befehl SendMode, mit dem Send gleichbedeutend mit SendInput oder SendPlay gemacht werden kann, anstatt mit SendEvent (Standard). Er sorgt auch dafür, dass Click und MouseMove/Click/Drag den angegebenen Modus verwenden.

Hinzugefügt: Zwei neue Methoden zum Senden von Tastendrücken und Mausklicks: SendInput und SendPlay. Diese sind in der Regel schneller und zuverlässiger. Außerdem ermöglicht SendPlay, dass Tastendrücke und Hotstrings von einer breiteren Palette von Spielen akzeptiert werden.

1.0.42.07 - 9. März 2006

Behoben: Kein Absturz mehr, wenn Funktionen ByRef-Parameter rekursiv übergeben. [danke PhiLho]

1.0.42.06 - 7. März 2006

Behoben: Kein Absturz mehr durch A_ScriptDir (fehlerhaft seit v1.0.42.01).

Behoben: Run/RunWait übergibt nicht länger ein zusätzliches Leerzeichen am Ende der Parameterliste beim Starten von Verknüpfungen. [danke arbe]

1.0.42.05 - 6. März 2006

Diese Version ist identisch zur vorherigen Version, außer dass ihre EXE und BIN aufgrund eines Compilerfehlers ca. 1% größer waren als sie sein sollten.

1.0.42.04 - 6. März 2006

Behoben: ClipboardAll funktioniert nun korrekt, wenn es mit Anwendungen wie Word und Excel verwendet wird (fehlerhaft seit der vorherigen Version). [danke Roussi Nikolov]

Behoben: ClipboardAll bewirkt nicht länger, dass Lesezeichen in MS Word erscheinen. [danke Laszlo & 02clams]

Behoben: A_TimeIdlePhysical wurde durch simulierte AltGr-Tastendrücke unterbrochen. [danke skrommel]

Behoben: Send {Blind} führt nicht mehr dazu, dass Win/Strg/Alt/Umschalt hängen bleibt, wenn der Benutzer diese Taste inmitten eines Sends loslässt.

Verbessert: Der Send-Befehl wird nicht mehr nach jedem Großbuchstaben die Umschalttaste drücken und loslassen (z.B. Send ABC).

Verbessert: SoundSet und SoundGet unterstützen nun den Komponententyp "Headphones". [danke Tobias Winkler]

1.0.42.03 - 20. Februar 2006

Behoben: Kein Absturz mehr durch WinActivate unter bestimmten, seltenen Umständen. [danke twhyman]

Geändert: Hotstrings erfordern nun standardmäßig den Maus-Hook (siehe nächsten Punkt). Dies kann mit #Hotstring NoMouse verhindert werden.

Verbessert: Hotstrings berücksichtigen nun auch Mausklicks. Dadurch kann ein Hotstring ausgelöst werden, wenn der Klick des Benutzers ein neues Steuerelement fokussiert oder den Textcursor verschiebt.

Verbessert: Der Random-Befehl kann nun einen neuen Seed setzen. [danke Laszlo]

Verbessert: #ClipboardTimeout versucht nun erneut, Daten zu lesen, wenn der erste Versuch fehlschlägt. Vorher wurde nur versucht, die Zwischenablage erneut zu öffnen.

Hinzugefügt: Interne Variable A_LastError für DllCall und Run/RunWait. Sie enthält das Ergebnis der Systemfunktion GetLastError().

1.0.42.02 - 17. Februar 2006

Behoben: UpDown-Steuerelemente verbinden sich nun mit dem korrekten Steuerelement, wenn sie sich innerhalb eines Tab-Steuerelements befinden, das eine ListView enthält. [danke Thalon]

Verbessert: Der Hotkey-Befehl hat nun eine "Off"-Option (wird in der Regel verwendet, um einen Hotkey vorerst im deaktivierten Zustand zu erstellen).

Verbessert: A_Cursor stört nicht mehr beim Doppelklick. [danke Shimanov]

1.0.42.01 - 15. Februar 2006

Behoben: Die folgenden Variablen funktionieren nun korrekt, wenn sie mit anderen Zeichenketten verkettet werden: A_DetectHiddenWindows, A_DetectHiddenText, A_AutoTrim und A_StringCaseSense. [danke jballi]

Behoben: KeyWait und GetKeyState funktionieren nun korrekt in den Subroutinen von Hook-Hotkeys (fehlerhaft seit v1.0.39) [danke Laszlo & TobStro]. Zum Beispiel:

~LControl::
if not GetKeyState("LControl")
    ToolTip LControl ist nicht wie erwartet unten (dieser Bug betraf nur einige Systeme).
return

1.0.42 - 10. Februar 2006

Behoben: Ausdrücke wie "If not Installed" werden nicht mehr als "If not in List" fehlinterpretiert. [danke Toralf]

Behoben: Einige ungewöhnliche Situationen, in denen ein Hotkey unnötigerweise den Tastatur-Hook erforderte.

Behoben: vkNNN-Hotkeys werden nun vom Hook behandelt, wenn dieses VK auch als Präfix für andere Hotkeys verwendet wird.

Behoben: #IfWins automatische Deaktivierung von Präfixtasten funktioniert nun korrekt, wenn Suspend eingeschaltet ist.

Behoben: Kleinere Hotkey-Probleme unter Windows 95/98/Me: 1) Das Platzhalterpräfix (*) wird ignoriert und solche Hotkeys werden aktiviert statt deaktiviert; 2) Nicht-Platzhalter-Hotkeys, die Teil eines Platzhalter-Hotkeys sind, werden aktiviert statt deaktiviert; 3) Ein Links/Rechts-Hotkey wie >#x:: wird als Win+X aktiviert, nicht einfach als X.

Geändert: Der Hotkey-Befehl erstellt nun eine neue Variante (falls erforderlich), anstatt einen bestehenden Hotkey mit diesem Namen immer zu aktualisieren. Dies betrifft nur Skripte, die die #IfWin-Direktive von v1.0.41 verwenden.

Geändert: Hotkeys erkennen nun, dass ^!c dasselbe ist wie !^c (unterschiedliche Reihenfolge der Symbole). Dies betrifft auch den Hotkey-Befehl.

Verbessert: Der Hotkey-Befehl unterstützt nun UseErrorLevel und kontextabhängige Hotkeys (via Hotkey IfWinActive/Exist).

Verbessert: #IfWinActive/Exist unterstützt nun Windows 9x. Außerdem wird der Tastatur-Hook jetzt nach Möglichkeit vermieden. Darüber hinaus setzt #IfWin jetzt das Zuletzt Gefundene Fenster.

Verbessert: Die folgenden Befehle unterstützen nun TListBox/TComboBox und möglicherweise andere: Control (Add/Delete/Choose/ChooseString); und ControlGet (FindString/Choice/List).

Hinzugefügt: Unterstützung für Hotkey- und Hotstring-Varianten (Duplikate). Solche Hotkeys führen je nach aktivem oder existierendem Fenster eine andere (oder gar keine) Aktion aus.

1.0.41.02 - 1. Februar 2006

Geändert: GuiControl Move verursacht weniger Flackern beim Vergrößern/Verkleinern oder Verschieben von Steuerelementen [danke Serenity]. Dies kann jedoch unter Umständen zu Artefakten (fehlerhafte Darstellungen) beim Zeichnen bestimmter Steuerelemente führen. In diesem Fall sollten Sie Ihre Skripte aktualisieren und stattdessen GuiControl MoveDraw verwenden.

1.0.41.01 - 31. Januar 2006

Behoben: AltGr-Hotkeys, die AltGr-Zeichen senden, wie z.B. <^>!a::Send \ in Deutsch. [danke AGU]

Behoben: Gui +Disable/AlwaysOnTop funktioniert jetzt auch, wenn andere Optionen in derselben Zeile vorhanden sind. [danke evl]

Verbessert: Die Syntax unterstützt nun Befehle in derselben Zeile wie eine geschweifte Startklammer. [danke segfault]

1.0.41 - 19. Januar 2006

Behoben: Transform HTML funktioniert wieder wie gewohnt (fehlerhaft seit v1.0.40.02). [danke Rabiator]

Verbessert: Die Syntax unterstützt nun den One True Brace (OTB) Style bei IFs, ELSEs, Funktionen und normalen Schleifen.

Hinzugefügt: Interne Variable A_AhkPath, die den vollständigen Pfad und Namen von AutoHotkey.exe enthält (falls vorhanden).

Hinzugefügt: Direktiven #IfWinActive/Exist, mit denen bestimmte Hotkeys und Hotstrings nur für bestimmte Fenster aktiviert werden können.

1.0.40.12 - 11. Januar 2006

Behoben: Kein Speicherleck mehr, wenn GuiControl bestimmte Bildtypen in ein Picture-Steuerelement lädt. [danke beardboy]

Behoben: ToolTip erschien nicht wieder, nachdem es extern via Alt+F4, WinClose, etc. zerstört wurde.

1.0.40.11 - 12. Dezember 2005

Behoben: GuiControl, %Var%, wenn Var leer ist oder nur eine Fensternummer enthält. Es aktualisiert nun den Inhalt des Steuerelements, anstatt nichts zu tun. [danke MisterW]

Verbessert: Skripte im UTF-8-Format können jetzt geladen werden (BOM-Bytes "EF BB BF" am Anfang der Datei). [danke D. J. Rausch]

1.0.40.10 - 1. Dezember 2005

Verbessert: ImageSearch und PixelSearch im schnellen Modus unterstützen nun 256-Farben-Bildschirme (8-Bit).

1.0.40.09 - 21. November 2005

Behoben: Hotkeys wie z.B. ^q:: lösen beim Loslassen den Hotkey "*q up" aus, anstatt zum zweiten Mal den Hotkey ^q.

1.0.40.08 - 16. November 2005

Behoben: ComboBox-Steuerelemente geben nun die korrekte Auswahl zurück, wenn: 1) GuiControl das Eingabefeld verändert hat; oder 2) der Benutzer einen vorhandenen Listeneintrag manuell in eine AltSubmit-ComboBox eingegeben hat. [danke Tekl]

1.0.40.07 - 16. November 2005

Behoben: Kein Speicherleck mehr, wenn ein Skript eine Funktion rekursiv aufruft. [danke Laszlo]

1.0.40.06 - 10. November 2005

Behoben: Kein Absturz durch Abs() mehr, wenn es mit einer leeren Zeichenkette aufgerufen wird. [danke Laszlo]

Behoben: Die Zahl -0x8000000000000000 in Ausdrücken. [danke Laszlo]

1.0.40.05 - 4. November 2005

Behoben: Ceil(), Floor() und Transform Ceil/Floor liefern jetzt für alle Eingabewerte das richtige Ergebnis. [danke Litmus Red]

Behoben: Bei einer Neubelegung kann nun Enter als Zieltaste verwendet werden. [danke jocamero]

Geändert: ahk_id funktioniert nun auch mit versteckten untergeordneten Fenstern (Steuerelementen), ohne dass DetectHiddenWindows benötigt wird.

Verbessert: Post/SendMessage akzeptiert nun direkt geschriebene bzw. in Anführungszeichen gesetzte Zeichenketten für wParam/lParam.

1.0.40.04 - 2. November 2005

Behoben: WinGetText und ControlGetText funktionieren nun mit Anwendungen, die nicht korrekt auf WM_GETTEXT reagieren (z.B. AIM). [danke Yarbuck]

Geändert: Das Programm richtet nun alle Daten an 32-Bit-Grenzen aus, was Probleme bzgl. DllCall-Strukturen behebt. [danke Shimanov]

1.0.40.03 - 26. Oktober 2005

Da eine andere Lösung notwendig ist, wurde die 1-Pixel-Erhöhung für CheckBox- und Radio-Steuerelementen in v1.0.40.01 rückgängig gemacht.

1.0.40.02 - 24. Oktober 2005

Behoben: Transform Unicode ist nun in der Lage, eine Unicode-Zeichenkette zu erzeugen, deren erstes Byte Null ist. [danke Shimanov & Laudrin]

Die Größe von kompilierten Skripten wurde um 20 KB reduziert, indem der Compiler die Codegröße in Abschnitten, die die Skriptperformanz nicht beeinträchtigen, minimiert.

1.0.40.01 - 21. Oktober 2005

Behoben: Die Titelleisten von skripteigenen Fenstern reagieren nun korrekt auf Links- und Rechtsklicks, die von Hotkeys des Skripts erzeugt werden. [danke Shimanov]

Behoben: OnMessage war nicht in der Lage, bestimmte Meldungen wie WM_GETMINMAXINFO konsistent zu überwachen.

Geändert: Critical wird bei MsgBox und anderen Dialogfenstern vorübergehend ausgeschaltet.

Hinzugefügt: Unterbefehl Thread NoTimers, mit dem verhindert werden kann, dass ein Thread durch Timer unterbrochen wird.

GUI-Änderungen:

Behoben: GuiContextMenus A_GuiControl enthält nun den korrekten Wert für Text- und Picture-Steuerelemente, die sich innerhalb eines GroupBox- oder Tab-Steuerelements befinden.

Behoben: GuiControl zeichnet nun Picture-Steuerelemente und transparente Text-Steuerelemente korrekt neu, wenn sie mit neuem Inhalt gefüllt werden.

Verbessert: Die Breite von automatisch skalierten CheckBox- und Radio-Steuerelementen wurde um 1 Pixel erhöht, um einen Zeilenumbruch bei bestimmten Desktop-Designs zu verhindern.

1.0.40 - 11. Oktober 2005

Behoben: Die Maus- und Tastatur-Hooks von v1.0.39 verhalten sich nun korrekt, wenn sie nicht aktiviert werden können.

Geändert: Der Send-Befehl für russische und andere Tastaturbelegungen kann nun mehr ASCII-Zeichen (z.B. die Buchstaben A bis Z) erzeugen. Dies hat keinen Einfluss auf westeuropäische und englische Belegungen.

Geändert: Hotkeys, die Teil eines Platzhalter-Hotkeys sind, haben nun Vorrang. Wenn z.B. die Hotkeys *x und ^x vorhanden sind, wird beim Drücken von ^x nun ^x statt *x ausgelöst.

Verbessert: Die Syntax erlaubt es nun, dass Doppelpunktpaare nicht mehr mit einem Escapezeichen versehen werden müssen.

Verbessert: Send und ControlSend haben nun die Option {Blind}, die Strg/Alt/Umschalt/Win gedrückt lässt, wenn sie auf diese Weise gestartet wurden.

Hinzugefügt: Eine neue Neubelegungsmethode, die einfacher und mächtiger als die alten Methoden ist. Zum Beispiel:

a::b  ; Die A-Taste verhält sich wie die B-Taste.
CapsLock::Ctrl  ; Die Feststelltaste verhält sich wie die STRG-Taste.
XButton1::LButton  ; Die vierte Maustaste verhält sich wie die linke Maustaste.
RCtrl::RWin  ; Die rechte STRG-Taste verhält sich wie die rechte WIN-Taste.

1.0.39 - 3. Oktober 2005

Hinweis: Die letzte Änderung unten kann Einfluss auf Skripte haben, die den Tastatur- oder Maus-Hook verwenden. Wenn Sie wichtige Skripte haben, die darauf angewiesen sind, ist es ratsam, diese erneut zu testen oder zwei Wochen zu warten, bis eventuelle Bugs behoben sind.

Behoben: Fortsetzungsbereiche konnten keine Zeilen enthalten, die nur aus Leer- und Tabulatorzeichen bestanden. [danke JSLover]

Behoben: Hotkeys wie LButton & LCtrl:: installieren nun automatisch den Maus-Hook. [danke JSLover]

Hinzugefügt: Ein dedizierter Thread zur Unterstützung der Tastatur- und Maus-Hooks. Dies beseitigt Maus-/Tastaturverzögerungen bei langen Operationen wie UrlDownloadToFile. Dies verhindert auch, dass die Tasten "dauerhaft gedrückt bleiben". Der neue Thread verbraucht lediglich 36 KB Speicher und existiert nur in Skripten, die die Hooks verwenden.

1.0.38.06 - 27. September 2005

Hinweis: Es wurden einige Optimierungen an den Tastatur- und Maus-Hooks vorgenommen. Wenn Sie wichtige Skripte haben, die darauf angewiesen sind, ist es ratsam, diese erneut zu testen oder zwei Wochen zu warten, bis eventuelle Bugs behoben sind.

Behoben: Fortsetzungszeilen, die mit "AND" und "OR" beginnen, funktionieren nun auch, wenn das nächste Zeichen eines der Zeichen ()!~*&-+ ist. [danke Decarlo110]

Behoben: Hotkeys/Labels wie (:: und (MeinLabel): werden nicht mehr als Fortsetzungsbereiche fehlinterpretiert. [danke whismerhill]

1.0.38.05 - 23. September 2005

Behoben: Menu Show (fehlerhaft seit der vorherigen Version) ruft nun die Subroutine des ausgewählten Menüpunkts auf, bevor der Befehl unterhalb von Menu Show ausgeführt wird. [danke Roussi]

Geändert: Sleep -1 und Sleep 0 prüfen nun auch unter Windows 9x die Meldungswarteschlange wie unter anderen Betriebssystemen.

1.0.38.04 - 21. September 2005

Behoben: Kein möglicher Absturz mehr durch die Hotstring-Reset-Option (Z). [danke arbe]

Verbessert: Threads haben eine geringere Chance, unterbrochen zu werden, bevor auch nur eine einzige Zeile ausgeführt werden kann. [danke Paul Haines]

Hinzugefügt: Befehl Critical, mit dem verhindert werden kann, dass der aktuelle Thread von anderen Threads unterbrochen werden kann. Außerdem puffert er eingehende Ereignisse, bis der kritische Thread endet.

1.0.38.03 - 12. September 2005

Behoben: Taste-Oben-Hotkeys. Wenn sowohl eine Platzhalter- als auch eine Nicht-Platzhalter-Version desselben Hotkeys vorhanden ist, funktioniert dies auch dann, wenn der Nicht-Platzhalter-Unten-Hotkey vor dem Nicht-Platzhalter-Oben-Hotkey definiert ist. [danke Paul Haines]

Verbessert: Edit-Steuerelemente haben nun die Option "WantTab", die es ermöglicht, beim Drücken der TAB-Taste ein Tabulatorzeichen zu erzeugen.

1.0.38.02 - 8. September 2005

Behoben: WinSet Region war nicht in der Lage, eine negative X-Koordinate zu akzeptieren.

Behoben: Radio-Steuerelemente starten nun eine neue Radio-Gruppe pro neuem Tab-Steuerelement oder Tab. [danke Toralf]

Geändert: VK-Hotkeys wie ^VK24:: vermeiden nun nach Möglichkeit die Verwendung des Tastatur-Hooks. Als Nebeneffekt werden solche Hotkeys nun von jeder Taste ausgelöst, die die angegebene virtuelle Taste hat (z.B. sowohl Home als auch NumpadHome für VK24). [danke Orion]

Verbessert: Der Hotkey-Befehl hat nun die Option "On", um in einem Schritt das Label eines Hotkeys zu ändern und ihn zu aktivieren. [danke Toralf]

Verbessert: "GuiControl Disable/Enable/Hide/Show" erkennt nun 1 oder 0 als optionales Suffix, um Skripte zu vereinfachen. [danke Toralf]

1.0.38.01 - 5. September 2005

Behoben: GuiContextMenus A_GuiControl enthält nun einen Wert, wenn der Benutzer einen Rechtsklick auf ein Text-, Picture- oder Tab-Steuerelement macht.

Geändert: OnMessage() empfängt LPARAM nun als vorzeichenlose Zahl, nicht mehr als vorzeichenfähige Zahl.

1.0.38 - 3. September 2005

Behoben: Der Input-Befehl erfasst nun korrekt Tastendrücke, die von einem Hotkey oder Hotstring gesendet werden, für den der Benutzer physisch Umschalt, Strg, Alt oder Win gedrückt hält. [danke wildfire]

Geändert: GuiControl Text setzt nun den Text des Eingabefeldes einer ComboBox, nicht mehr neue Einträge für ihre Auswahlliste. Bitte passen Sie Ihre Skripte entsprechend an.

Verbessert: FileMoveDir hat eine neue Option zum bedingungslosen Überschreiben des Zielordners.

Hinzugefügt: Interne Funktion IsLabel(), mit der man prüfen kann, ob ein Label existiert, bevor man es via Gosub anspringt. [danke Tekl]

Hinzugefügt: Interne Funktion OnMessage(), mit der benutzerdefinierte Meldungen empfangen und Systemmeldungen überwacht werden können.

Hinzugefügt: Ein WinLIRC-Client-Skript, das auf Signale von einer Fernbedienung reagiert. WinLIRC ist ein Open-Source-Tool, das die Infrarotsignale von Fernbedienungen beliebiger Marken erfasst.

1.0.37.07 - 27. August 2005

Behoben: Das benutzerdefinierte Symbol eines GUI-Fensters stört nicht mehr, wenn Menu, Tray, Icon ein neues Symbol lädt. [danke Tekl]

Behoben: Die Hotstring-Option "O" (Endungszeichen weglassen) funktioniert nun auch, wenn "B0" (kein Backspace) aktiv ist. [danke Tekl]

Verbessert: AltTab-Hotkeys unterstützen nun Esc als Mittel zum Abbrechen des Vorgangs. [danke catweazle]

1.0.37.06 - 21. August 2005

Behoben: Automatisch-ersetzende Platzhalter-Hotstrings, deren letztes Zeichen durch eine tote Taste erzeugt wird (z.B. :*:jsá::). [danke jordi]

Behoben: Das Tray-Symbol wird nun grün, wenn ein pausierter Thread durch einen neuen Thread unterbrochen wird.

Geändert/verbessert: Der Pause-Befehl: 1) Pause Off hat nun immer Einfluss auf den Thread direkt unter dem aktuellen Thread, nicht mehr auf den nächstmöglichen pausierten Thread; 2) Pause Toggle und Pause pausieren nun immer den aktuellen Thread, wenn der Thread darunter nicht pausiert ist; 3) Eine Option hinzugefügt, um den darunter liegenden statt aktuellen Thread zu pausieren. [danke Decarlo110]

Verbessert: Der Menüpunkt "Pause Script" funktioniert nun auch, wenn das Skript im Leerlauf ist (was die Ausführung von Timern verhindert). [danke Rajat]

Verbessert: SoundSet und SoundGet unterstützen nun N/A für KomponenteTyp und numerische Werte für ReglerTyp. Es gibt auch ein Beispielskript, um den Leistungsumfang Ihrer Soundkarte zu ermitteln.

1.0.37.05 - 16. August 2005

Behoben: Hotkeys wie ^!a:: werden nicht mehr doppelt ausgelöst, wenn a & b:: ein Hotkey ist. Behoben wurde auch, dass Hotkeys wie ^!a:: ohne $ funktionieren, wenn "a" eine Präfixtaste wie a & b:: ist. [danke t0nyk0]

Behoben: Die Hotkeys LButton:: und RButton:: stören nicht mehr das Kontextmenü des Edit-Steuerelements. [danke Tekl]

Behoben: GuiControl ChooseString ignoriert nicht mehr die ersten beiden Einträge in einer ListBox/ComboBox/DDL. [danke Tekl]

1.0.37.04 - 30. Juli 2005

Behoben: Keine schwerwiegenden Bugs mehr im Send-Befehl und in anderen Tastatur-Features, die mit der vorherigen Version eingeführt wurden.

1.0.37.03 - 30. Juli 2005

Behoben: Kleinere Probleme, wenn sich die Sprache/Tastaturbelegung eines Skripts ändert, während es ausgeführt wird. Dies wirkt sich auf Hotkeys, Hotstrings, Send und eventuell andere Bereiche aus.

Behoben: Das Hotkey-Steuerelement funktioniert nun für NumLock und NumpadDiv (vorher wurde SC145 und SC135 zurückgegeben).

Verbessert: Gui Tab hat nun einen Modus für exakte Übereinstimmung. [danke Tekl]

Verbessert: Hotkeys erkennen nun die folgenden Symbole als gültige Tastennamen: #!^+$<>*~ [danke Tekl]

1.0.37.02 - 25. Juli 2005

Behoben: Taste-Oben-Hotkeys wie LButton Up:: stören keine Nicht-Hotkey-Ereignisse wie Umschalt+Linksklick mehr. [danke Icfu]

1.0.37.01 - 22. Juli 2005

Behoben: ControlGet List funktioniert nun für ListViews in der List/Icon-Ansicht. [danke Rajat]

1.0.37 - 21. Juli 2005

Behoben: WinGetText und WinGet ControlList waren nicht in der Lage, ihre Ausgabe in Clipboard zu schreiben.

Behoben: Clipboard konnte nicht mehr als einmal in derselben Zeile abgerufen werden.

Behoben: LV_ModifyCol() akzeptiert nun Spaltenbreiten im Floating-Point-Format. [danke Toralf]

Verbessert: StatusBarWait setzt das Warten nun auch dann fort, wenn die Leiste vorübergehend nicht mehr reagiert.

Verbessert: ControlGet List hat nun die Möglichkeit, Texte und andere Informationen aus ListViews wie dem Explorer abzurufen.

1.0.36.07 - 18. Juli 2005

Behoben: Tilde-Taste-Oben-Hotkeys funktionieren nun mit Win/Alt wie z.B. ~LWin up::.

Behoben: Bitweises NICHT funktioniert nun mit einer Floating-Point-Zahl wie z.B. ~1.0.

Verbessert: VarSetCapacity hat nun die Möglichkeit, den Speicher einer Variable mit Nullen zu füllen.

Verbessert: DllCall unterstützt nun Gdi32.dll als Standard-DLL.

Hinzugefügt: Operatoren & und * für den Umgang mit Speicheradressen und Binärdaten.

Hinzugefügt: Dokumentation für DllCall, die zeigt, wie man Strukturen verwendet.

1.0.36.06 - 12. Juli 2005

Behoben: AltGr-Probleme: 1) Der Send-Befehl konnte keine großgeschriebenen AltGr-Zeichen erzeugen (fehlerhaft seit v1.0.35); 2) STRG-Taste bei Hotkeys wie ^!t::Send a blieb hängen, wenn sie via AltGr ausgelöst wurden; 3) möglicherweise noch andere AltGr-Probleme. [danke Henrique Peron]

Behoben: Probleme beim Zeichnen von ListViews innerhalb eines Tab-Steuerelements. [danke beardboy]

1.0.36.05 - 9. Juli 2005

Behoben: ToolTip war seit v1.0.36.03 auf Betriebssystemen älter als XP fehlerhaft.

1.0.36.04 - 7. Juli 2005

Behoben: ListViews: 1) Es war nicht möglich, aus der Kachelansicht zu wechseln; 2) Das Ereignis "H" (HotTrack) wird nicht mehr empfangen, da seine hohe Frequenz die Verarbeitung wichtigerer Ereignisse durch ein Skript behindert hat. [danke Toralf]

1.0.36.03 - 6. Juli 2005

Verbessert: FileSelectFolder unterstützt nun einen Startordner, der die Aufwärtsnavigation nicht einschränkt.

Verbessert: SetTimer unterstützt nun ein Intervall von bis zu 49,7 Tagen statt wie bisher 24,8 Tagen. [danke MIchael]

GUI-Änderungen:

Behoben: AltSubmit ListView störte das Kontextmenü.

Behoben: Die automatische Größenanpassung von LV_ModifyCol() hat keinen Effekt mehr, wenn die ListView nicht in der Report-Ansicht ist (um eine Traumatisierung der ListView zu vermeiden). [danke Toralf]

Verbessert: ListViews: 1) A_EventInfo enthält die fokussierte Zeile für mehr Ereignistypen; 2) LV_GetCount("Col") ruft die Anzahl der Spalten ab; 3) "Tile" als Große-Symbole-Ansicht hinzugefügt (nur XP). [danke Toralf]

1.0.36.02 - 3. Juli 2005

Behoben: Hotstrings funktionieren nun, wenn das Skript ein Eingabefenster anzeigt.

Behoben: Tilde-Taste-Oben-Hotkeys wie z.B. ~5 up:: vermeiden nun doppelte Zeichenausgabe.

Geändert: Zeilenvorschübe (`n) und andere unsichtbare Zeichen sind in Variablennamen nicht mehr erlaubt.

Verbessert: Das Stack-Limit wurde von 1 auf 4 MB erhöht, was eine tiefere Rekursion von Funktionen und Subroutinen ermöglicht. Hinweis: Dies erhöht nicht den Speicherbedarf eines normalen Skripts. [danke Rubens]

Verbessert: Zugriffsgeschwindigkeit auf leere Variablen wurde verdoppelt (die langsam sind, weil geprüft werden muss, ob es sich um Umgebungsvariablen handelt).

Verbessert: Alle fensterspezifischen Befehle unterstützen nun mehrere Kriterien (z.B. Titel+Klasse), um die Suche einzugrenzen.

Hinzugefügt: Interne Variable A_LoopFileExt, die die Endung der Schleifendatei enthält.

1.0.36.01 - 28. Juni 2005

Behoben: FileCopy und FileMove vermeiden nun das Löschen einer Datei, die auf sich selbst kopiert/verschoben wird. In einem solchen Fall wertet FileCopy dies immer noch als Fehler, während FileMove dies nun als Erfolg wertet. [danke mario_a]

Behoben: Fortsetzungsbereiche: Akzente und Kommas nach dem Wort Join ändern nicht mehr das Verhalten von Akzenten und Kommas im Bereich selbst. [danke Nemroth]

Hinzugefügt: WinSet Top, mit dem versucht werden kann, ein Fenster an den Anfang des Stapels zu setzen, ohne es zu aktivieren. [danke catweazle]

1.0.36 - 27. Juni 2005

Behoben: Doppelter Syntaxfehler für einen fehlerhaften Funktionsaufruf in einem Block.

Verbessert: Process Exist ruft nun die PID des Skripts selbst ab, wenn keine anderen Parameter angegeben sind. [danke Junyx]

GUI-Änderungen:

Hinzugefügt: GuiContextMenu, das die Anzeige von benutzerdefinierten Gui-Kontextmenüs erleichtert.

Hinzugefügt: Gui +Delimiter`n, um das Trennzeichen zwischen Feldern zu ändern.

Hinzugefügt: A_EventInfo, das von OnClipboardChange, ListBox, GuiSize und GuiDropFiles verwendet werden kann.

Hinzugefügt: A_GuiEvent als ein Synonym für A_GuiControlEvent.

Hinzugefügt: +/-Redraw, um das Füllen einer ListBox zu beschleunigen.

Hinzugefügt: Neues Steuerelement ListView, das eine tabellarische Ansicht von Zeilen und Spalten ist. Es bietet interne Sortierung und Unterstützung für die Anzeige von Symbolen.

1.0.35.16 - 20. Juni 2005

Behoben: #Include war nicht in der Lage, escapezeichenversehene Semikolons in kompilierten Skripten zu erkennen.

Verbessert: Kontextmenüs reaktivieren nun das zuvor aktive Fenster, bevor der Menü-Thread gestartet wird. [danke thomasl]

1.0.35.15 - 20. Juni 2005

Verbessert: Kontextmenüs reaktivieren nun das zuvor aktive Fenster, wenn das Menü geschlossen wird. [danke thomasl]

1.0.35.14 - 20. Juni 2005

Behoben: Kontextmenüs konnten nicht mit Esc oder durch Klicken außerhalb des Menüs geschlossen werden (fehlerhaft seit v1.0.35.12). [danke Paulo]

1.0.35.13 - 19. Juni 2005

Behoben: Kein Absturz mehr, wenn ein kompiliertes Skript bestimmte unübliche Hotkeys enthält, wie z.B. End & a::. [danke TheLeO]

1.0.35.12 - 18. Juni 2005

Behoben: Kein Absturz mehr, wenn das Skript eine interne Funktion überschreibt (fehlerhaft seit v1.0.35.11). [danke B_fisher]

Behoben: IfExist und FileExist() funktionieren nun mit Volumenamen im \\?\Volume{...}-Format.

Geändert: Kontextmenüs außer TRAY vermeiden nun die Aktivierung des Hauptfensters des Skripts.

1.0.35.11 - 16. Juni 2005

Verbessert: #Include kann nun ein neues Arbeitsverzeichnis für nachfolgende Instanzen von #Include und FileInstall festlegen. Außerdem ist #Include jetzt in der Lage, %A_ScriptDir% aufzulösen. [danke Dmitry]

Verbessert: FileInstall holt die Datei nun immer von A_ScriptDir statt von A_WorkingDir, wenn kein absoluter Pfad angegeben ist.

1.0.35.10 - 12. Juni 2005

Behoben: Hotstrings und Input: Das Drücken von Strg+Alt als Ersatz für AltGr wird nicht mehr gestört. [danke Laszlo]

Behoben: A_TimeSinceThisHotkey wird nun nicht mehr von GUI-Threads verändert.

Hinzugefügt: Label OnClipboardChange, das jedes Mal automatisch gestartet wird, wenn sich die Zwischenablage ändert. [danke ApplePie]

1.0.35.09 - 10. Juni 2005

Behoben: Die Steuerelemente MonthCal und DateTime: Ein g-Label interferiert nicht mehr mit den Pfeilschaltflächen des Kalenders. [danke guivho]

Behoben: Beim Senden von AltGr-Zeichen lösen die automatischen LControl-Ereignisse von AltGr keine Hotkeys mehr aus. [danke Laszlo]

Geändert: AltSubmit-MonthCal-Steuerelemente haben nun ein anderes Verhalten, um Defizite auszugleichen. Bitte passen Sie Ihre Skripte entsprechend an.

1.0.35.08 - 9. Juni 2005

Behoben: Die erste Zeile eines Skripts konnte nicht /* sein (fehlerhaft seit 1.0.35.06). [danke Harmless]

1.0.35.07 - 8. Juni 2005

Behoben: Hotkeys mit Strg (^), die AltGr-Zeichen wie z.B. { in Deutsch senden, funktionieren wieder korrekt. (fehlerhaft seit v1.0.35). [danke Hajos]

1.0.35.06 - 8. Juni 2005

Behoben: Send unter NT4 sendet AltGr-Tasten wie z.B. \ in Französisch wieder korrekt (fehlerhaft seit v1.0.35). [danke Nemroth]

Behoben: SetCapsLockState Off, wenn das Betriebssystem das Ausschalten von Feststell nur mit Umschalt erlaubt. [danke Teddy]

Verbessert: Zusammenführung von Zeilen: 1) Eine Zeile, die mit . beginnt, wird automatisch mit der Zeile darüber verbunden. 2) Kommentare und Leerzeilen können zwischen den Fortsetzungszeilen stehen, ohne dass die Zusammenführung beeinträchtigt wird.

Hinzugefügt: Direktive #LTrim, um mehrere Fortsetzungsbereiche die LTrim-Einstellung verwenden zu lassen.

1.0.35.05 - 6. Juni 2005

Behoben: Gui +OwnDialogs wird nicht mehr durch Gui Show und andere Unterbefehle ausgeschaltet.

Behoben: ahk2exe ignoriert nicht mehr den letzten Parameter, wenn /out, /icon und /pass angegeben sind. [danke Rajat]

1.0.35.04 - 5. Juni 2005

Behoben: Ausdrücke: Operatoren ohne Leerzeichen drumherum, wie z.B. x*y*z, liefern nun immer korrekte Ergebnisse. [danke Mark Kantor]

1.0.35.03 - 4. Juni 2005

Behoben: DateTime- und MonthCal-Steuerelemente konnten nicht auf Betriebssystemen älter als XP erstellt werden.

Hinzugefügt: eine neue Methode zum Aufteilen langer Zeilen: Eine Zeile, die mit "and", "or", ||, && oder einem Komma beginnt, wird automatisch mit der Zeile direkt darüber zusammengeführt.

1.0.35.02 - 3. Juni 2005

Behoben: Break/Continue-Syntaxfehler und andere Bugs bzgl. kompilierter Skripte, die mit v1.0.35.01 eingeführt wurden. [danke ranomore]

1.0.35.01 - 3. Juni 2005

Behoben: GuiControl,, MeinRadio|MeineCheckBox, NeuerText (fehlerhaft seit v1.0.35). [danke ranomore]

Behoben: Bei der Kurzschreibweise if not VarName kann VarName nun mit B, C, I oder N beginnen.

Verbessert: Die Größe von kompilierten Skripten wurde um ca. 5 KB reduziert (durch Weglassen unnötiger Syntaxprüfungen).

Verbessert: Das GUI-Hotkey-Steuerelement benachrichtigt nun das Skript über Änderungen via g-Label.

Hinzugefügt: Modale/untergeordnete Dialogfenster für GUI-Fenster: MsgBox, InputBox, FileSelectFile und FileSelectFolder.

1.0.35 - 1. Juni 2005

Hinweis: Es wurden einige Änderungen am Send-Befehl vorgenommen. Wenn eines Ihrer Skripte auf die feinen Unterschiede zwischen den linken, rechten und neutralen Modifikatortasten (Strg, Alt, Umschalt und Win) angewiesen ist, empfiehlt es sich, diese vor der Verwendung dieser Version erneut zu testen.

Behoben: Der Send-Befehl war nicht in der Lage, AltGr-Zeichen (wie z.B. \ und { auf der deutschen Tastatur) an Anwendungen zu senden, die Strg+Alt als Ersatz für AltGr verbieten. [danke xrat]

Verbessert: Funktionen unterstützen nun optionale Parameter.

GUI:

Behoben: Das g-Label eines Tab-Steuerelements startet nun, wenn der Tabwechsel via Tastaturnavigation erfolgt. Außerdem werden Steuerelemente, die einem Tab-Steuerelement hinzugefügt werden, während das Fenster sichtbar ist, nun korrekt gezeichnet.

Verbessert: Edit-Steuerelemente unterstützen nun g-Labels, die das Skript benachrichtigen, wenn sich der Inhalt des Eingabefeldes geändert hat.

Hinzugefügt: Steuerelemente DateTime und MonthCal, die die Eingabe von Datum und/oder Uhrzeit in verschiedenen Formaten ermöglichen.

Hinzugefügt: Steuerelement UpDown: Zwei Pfeile als Schaltflächen, die der Benutzer drücken kann, um einen Wert zu erhöhen oder zu verringern.

1.0.34 - 25. Mai 2005

Behoben: Joystick-Hotkeys konnten weder durch die Befehle Suspend und Hotkey deaktiviert, noch im automatischen Ausführungsbereich aktiviert werden. [danke matt911]

Behoben: Transform Deref unterstützt nun interne Variablen und Umgebungsvariablen, die nirgendwo im Skript direkt referenziert sind. [danke toralf]

Behoben: Das Programm konnte auf Windows 95/NT-Systemen ohne MSIE 3 oder höher nicht gestartet werden.

Behoben: ListLines terminierte die Auflistung manchmal vorzeitig.

Behoben: Mehrzeilige Edit-Steuerelemente: Das Drücken von Esc schließt nicht mehr ein Nicht-GuiEscape-Fenster. [danke Rajat]

Behoben: Die Hotkeys #LAlt:: und #RAlt:: verhindern nun, dass das Startmenü angezeigt wird. [danke Dmitry Lyudmirsky]

Behoben: GuiControl: Das erneute Laden eines Picture-Steuerelements innerhalb eines Tab-Steuerelements wird nun korrekt neu gezeichnet. [danke hanspeter]

Behoben: Der Aufruf von VarSetCapacity() innerhalb eines Ausdrucks funktioniert nun korrekt.

Verbessert: DllCall: Das Suffix "A" kann bei so etwas wie MessageBoxA nun weggelassen werden, auch wenn der DLL-Name explizit angegeben ist. Außerdem kann der Buchstabe P anstelle von * verwendet werden, so dass nun alle Typen ohne Anführungszeichen angegeben werden können. [danke Jerry]

Hinzugefügt: Floor-Division-Operator // für hochperformante Integer-Division.

Hinzugefügt: Interne Funktionen Abs, ACos, Asc, ASin, ATan, Ceil, Chr, Cos, Exp, FileExist, Floor, GetKeyState, InStr, Ln, Log, Mod, Round, Sin, Sqrt, Tan und StrLen.

1.0.33.01 - 17. Mai 2005

Behoben: GuiControl war manchmal nicht in der Lage, die Standardschaltfläche oder den Style einer Schaltfläche zu ändern. Außerdem wurde ein Absturz behoben, der auftreten konnte, wenn GuiControl versucht, eine Standardschaltfläche zu setzen, obwohl vorher keine vorhanden war. [danke hanspeter]

Verbessert: DllCall-Argumenttypen ohne Sternchen und Leerzeichen können nun ohne Anführungszeichen angegeben werden.

Hinzugefügt: Unterbefehl Gui Margin, mit dem der Standardabstand eines Fensters überschrieben werden kann.

1.0.33 - 13. Mai 2005

Behoben: IfMsgBox war nicht in der Lage, eine Zeitüberschreitung für eine MsgBox zu erkennen, die nur eine OK-Schaltfläche enthält. [danke Mats]

Hinzugefügt: Funktion VarSetCapacity(), mit der eine Variable vergrößert oder verkleinert werden kann.

Hinzugefügt: Funktion DllCall(), mit der eine Funktion innerhalb einer DLL aufgerufen werden kann. [entwickelt von Marcus Sonntag (Ultra)]

1.0.32 - 5. Mai 2005

Verbessert: #Include: Dem Dateinamen kann *i gefolgt von einem Leerzeichen vorangestellt werden, um etwaige Dateifehler zu ignorieren. [danke Tekl]

Hinzugefügt: Steuerelementoption +/-Theme (GUI). Dies kann auch zum Erstellen eines Tab-Steuerelements im aktuellen Windows-Design verwendet werden. [danke Titan]

Hinzugefügt: Eine Methode zum Aufteilen langer Zeilen in mehrere kleinere. Dies ist besonders nützlich für Hotstrings und FileAppend. Siehe Zeilenfortsetzung. [Danke an alle Beteiligten]

1.0.31.07 - 29. April 2005

Behoben: WinSet Region war nicht in der Lage, die ursprüngliche Region korrekt wiederherzustellen, was eine Maximierung des Fensters verhinderte. [danke AntonyB & Skrommel]

1.0.31.06 - 27. April 2005

Verbessert: ImageSearch ist jetzt viel nützlicher: 1) Symbole werden unterstützt (auch solche mit transparenten Bereichen); 2) PNG, TIF, ICO und andere Bildformate werden unterstützt; 3) Ähnliche Bilder können gefunden werden, indem man ermöglicht, dass die Farben des Bildes um einen bestimmten Betrag variieren; 4) Der Abgleich ist ein wenig nachsichtiger, da das "mysteriöse Byte" jeder Pixelfarbe ignoriert wird. [danke Aurelian Maga]

1.0.31.05 - 19. April 2005

Behoben: A_Index, A_LoopFileName und ähnliche Variablen, die in mehr als einem Parameter eines Befehls verwendet werden, der Funktionen aufruft. Außerdem kann eine Funktion nun auf den Inhalt dieser Variablen des Aufrufers zugreifen. [danke corrupt]

Behoben: Ungenaue Zeilennummern von Funktionsaufrufen. Dies betrifft A_LineNumber, ListLines und Fehlerdialogfenster. [danke Laszlo]

1.0.31.04 - 15. April 2005

Behoben: Verschiedene Fälle, in denen normale Zeilen fälschlicherweise als Funktionsaufrufe erkannt wurden. [danke Payam & Jon]

1.0.31.03 - 14. April 2005

Behoben: ImageSearch: Teilübereinstimmungen an den Rändern des Suchbereichs werden nicht mehr als vollständige Übereinstimmungen behandelt. [danke Invalid User]

Behoben: Labels konnten keine runden Klammern enthalten (fehlerhaft seit v1.0.31). [danke Jon]

1.0.31.02 - 13. April 2005

Behoben: Die Clipboard-Variable erzeugt nun keinen Fehler mehr, wenn eine Gruppe von Null-Dateien in die Zwischenablage kopiert wurde. [danke Serenity & Tekl]

Behoben: GuiDropFiles und Gui +/-Optionen werden nun nicht mehr die Transparenz eines Fensters oder andere Effekte entfernen. [danke toralf]

1.0.31.01 - 11. April 2005

Behoben: Teilausdrücke in Funktionsparametern gaben falsche Ergebnisse zurück; z.B. Add(2*3,3). [danke Laszlo]

Behoben: Eine runde Startklammer wird nicht mehr als Syntaxfehler behandelt, wenn sie nach einem Befehl verwendet wird, dem das erste Komma fehlt, z.B. MsgBox (). [danke Laszlo]

1.0.31 - 8. April 2005

Hinweis: Obwohl diese Version ausgiebig getestet wurde, wurden einige Low-Level-Änderungen vorgenommen. Es wird empfohlen, wichtige Skripte erneut zu testen -- oder zwei Wochen zu warten, bis alle Bugs behoben sind -- bevor Sie diese Version verwenden.

Behoben: Timer konnten sich nicht mehr selbst zurücksetzen. Wenn z.B. SetTimer, MeinTimer innerhalb der Subroutine MeinTimer ausgeführt wird, beginnt der Timer auf den Ablauf eines völlig neuen Intervalls zu warten, bevor er fortfährt.

Behoben: Der Syntaxprüfer meldete runde Klammern in Anführungszeichen gesetzte Zeichenketten als unbalanciert.

Behoben: GuiControl kann nun das ReadOnly-Attribut eines Edit-Steuerelements ändern. [danke Bahri]

Geändert: Ausdrücke: Referenzen, die auf ungültige dynamische Variablen verweisen, wie z.B. Array%VarMitLeerzeichen%, führen nun zu einer Laufzeitwarnung.

Geändert: Die Priorität der Verkettung von Zeichenketten in Ausdrücken wurde herabgesetzt. Es ist zwar unwahrscheinlich, dass dies Einfluss auf bestehende Skripte hat, aber im Zweifelsfall können Sie die nach Priorität sortierte Operatortabelle konsultieren.

Verbessert: Die Verkettung von Zeichenketten in Ausdrücken kann nun mit allem (z.B. Arrays und Teilausdrücke) verwendet werden. Außerdem kann ein Punkt als Verkettungsoperator verwendet werden, um die Lesbarkeit des Skripts zu verbessern.

Verbessert: Dynamische Variablen wie z.B. Array%i% sind bis zu 1000-mal schneller. Ein Skript kann nun mehrere Millionen Variablen enthalten, ohne dass es zu einer nennenswerten Verlangsamung kommt. [danke Laszlo]

Verbessert: GuiControl und GuiControlGet sind nun performanter, wenn sie auf ein Fenster mit Hunderten von Steuerelementen angewendet werden.

Verbessert: Ausdrücke, die viele ANDs und ORs verwenden, sind nun dank boolescher Kurzschlussauswertung schneller.

Verbessert: Bessere Speicherverwaltung in Skripten, die Tausende von Variablen verwenden, durch Hinzufügen von zwei neuen Variablenkapazitäten: 1 und 6. Bisher war die kleinste Kapazität (außer Null) 63.

Hinzugefügt: Interne Variablen A_LineNumber und A_LineFile, die die Nummer der aktuell ausgeführten Zeile und den Namen der zugehörigen Datei enthalten. [danke toralf]

Hinzugefügt: Direktive #ClipboardTimeout, mit der die Dauer des Versuchs, die Zwischenablage zu öffnen, festgelegt werden kann (Standard ist 1000 ms). [danke Tekl & Jason Payam Ahdoot]

Hinzugefügt: Es ist nun möglich, Parameter zu übergeben und Rückgabewerte von Funktionen zu erhalten. Funktionen unterstützen auch lokale Variablen. Außerdem kann ListVars den Inhalt von lokalen Variablen anzeigen, um das Debuggen zu erleichtern. Weitere Informationen finden Sie unter Funktionen.

1.0.30.04 - 14. März 2005

Behoben: Kein Absturz mehr, wenn ein GUI-Fenster zerstört und im selben Thread neu erstellt wird. [danke corrupt]

1.0.30.03 - 12. März 2005

Hinweis: Diese Version umfasst ausschließlich kleinere Änderungen.

Geändert: Das Tray-Symbol-Menü öffnet sich nun erst, wenn die rechte Maustaste losgelassen wird. Dies ermöglicht das Öffnen des Menüs über eine neubelegte rechte Maustaste. [danke eamat]

Geändert: WinGet Count ruft nun alle Fenster auf dem System ab, anstatt das Zuletzt Gefundene Fenster, wenn alle vier Fensterparameter leer sind.

Verbessert: Kompilierte Skripte verstecken nun den Quellcode des Skripts, wenn ein Laufzeitfehler auftritt (z.B. wenn versucht wird, eine nicht-existierende Datei zu starten). Dieses Verstecken kann mit Menu, Tray, MainWindow deaktiviert werden. [danke Rajat]

Verbessert: StringGetPos kann nun optional eine bestimmte Anzahl von Zeichen ganz links oder ganz rechts überspringen. [danke Tekl]

Verbessert: ClipboardAll lässt nun alle redundanten CF_METAFILEPICT-Daten weg, was Platz spart.

Verbessert: Tabulatorzeichen in ListBox-Steuerelementen werden nicht mehr als leere Quadrate angezeigt. Außerdem können jetzt Tabstopps hinzugefügt oder geändert werden, nachdem das Steuerelement erstellt wurde.

Verbessert: Die folgenden Befehle unterstützen nun Ausdrücke für ihre numerischen Parameter: Transform, FileReadLine, FileSelectFolder, FileSetAttrib und FileSetTime.

1.0.30.02 - 8. März 2005

Behoben: WinGet List (teilweise fehlerhaft seit v1.0.30). [danke twwilliams]

Geändert: WinGet List ruft nun alle Fenster auf dem System ab, anstatt das Zuletzt Gefundene Fenster, wenn alle vier Fensterparameter leer sind.

Verbessert: "Lines most recently executed" (zuletzt ausgeführte Zeilen): Wenn ein wartender Thread nach einer Unterbrechung wieder aufgenommen wird, wird der wartende Befehl (z.B. WinWait) am Ende der Liste angezeigt, was hilft, "hängende" Threads zu erkennen. Außerdem zeigt "lines most recently executed" jetzt 400 statt 200 Zeilen an.

1.0.30.01 - 7. März 2005

Behoben: GroupDeactivate (teilweise fehlerhaft seit v1.0.30).

Behoben: Es wird nun eine Fehlermeldung angezeigt, wenn Menu Delete/DeleteAll auf ein Untermenü einer Menüleiste angewendet wird und fehlschlägt. [danke Landvermesser]

1.0.30 - 5. März 2005

Behoben: Maus-Hotkeys mit Win+Strg oder Win+Umschalt als Modifikatoren zeigen nicht mehr das Startmenü an. [danke Mythos]

Behoben: WinSet Style|ExStyle setzt ErrorLevel nun auf 1, wenn das Zielfenster nicht existiert.

Geändert: "GroupClose All" schließt nun auch versteckte Fenster, wenn DetectHiddenWindows eingeschaltet ist.

Verbessert: Variablen, denen ClipboardAll zugewiesen wurde, können nun miteinander verglichen werden, wie in diesem Beispiel [danke Jerry]:

if ClipSicherung1 <> %ClipSicherung2% ; Muss eine altmodische IF-Anweisung sein, kein Ausdruck.

Verbessert: ListBox-Steuerelemente haben nun eine Option zum Setzen von benutzerdefinierten Tabstopps. [danke jonny]

Verbessert: Progress und SplashImage haben nun eine Hide-Option, mit der das Fenster zunächst versteckt erstellt werden kann. Mit "Progress Show" oder "SplashImage Show" kann das Fenster später wieder sichtbar gemacht werden.

Verbessert: Hotstrings haben nun eine Z-Option, die den Hotstring-Erkenner zurücksetzt, wann immer der Hotstring ausgelöst wird. Das Skript wartet auf einen völlig neuen Hotstring und verwirft alles, was Sie zuvor eingegeben haben. [danke dennisbgoode]

Hinzugefügt: Unterbefehle WinSet Disable/Enable, mit denen die Interaktion mit einem Fenster verboten oder wieder erlaubt werden kann.

Hinzugefügt: ahk_group, mit dem ein oder mehrere Fenster identifiziert werden können, die den Regeln einer zuvor definierten Fenstergruppe entsprechen. Beispiel: IfWinExist ahk_group %MeineGruppe%. Außerdem kann eine ganze Gruppe von Fenstern minimiert, maximiert, wiederhergestellt, versteckt, sichtbar gemacht oder geschlossen werden (z.B. WinMinimize ahk_group MeineGruppe). [danke Rajat]

Hinzugefügt: Unterbefehl WinSet Region, mit dem der Anzeigebereich eines Fensters in eine Ellipse, ein Rechteck oder ein Polygon geändert werden kann. Damit können Teile eines Fensters unsichtbar gemacht werden. [danke skrommel]

1.0.29 - 28. Februar 2005

Behoben: Dinge wie Sleep %Sekunden%000 (fehlerhaft seit v1.0.25). [danke Mayhem]

Behoben: Der Input-Befehl erfasst Großbuchstaben und Steuerzeichen nun korrekt, wenn er sich nicht im Sichtbar-Modus (V) befindet.

Behoben: Taste-Oben-Hotkeys funktionieren nun mit den neutralen Tasten Strg, Umschalt und Alt. [danke jonny]

Geändert: Kompilierte Skripte haben nun immer ihre .exe-Dateiendung am Ende ihres Namens, zwecks A_ScriptFullPath und Standardfenstertitel. So kann #SingleInstance auch dann funktionieren, wenn das Skript ohne Dateiendung über die Befehlszeile gestartet wird. [danke Mythos]

Verbessert: ClipWait kann nun auf beliebige Daten warten, nicht nur auf Text und Dateien.

Es ist möglich, einen Ausdruck in einem Parameter zu verwenden, der dies nicht direkt unterstützt, indem ihm ein Prozentzeichen gefolgt von einem Leer- oder Tabulatorzeichen vorangestellt wird. Meistens wird dies für den Zugriff auf Arrays verwendet [danke JSLover]. Beispiele:

FileAppend, % MeinArray%i%, Meine Datei.txt
MsgBox % "Die MeineVar-Variable enthält " MeineVar "."
Control, Choose, % AktuelleAuswahl - 1

Hinzugefügt: Interne Variable A_MSec, die die Millisekunde der aktuellen Zeit enthält. [danke JSLover]

Hinzugefügt: Interne Variable ClipboardAll, die alles enthält, was sich in der Zwischenablage befindet, wie Bilder und Formatierungen. Dies kann verwendet werden, um die Zwischenablage in den Speicher oder in eine Datei zu speichern und später wiederherzustellen. Zum Beispiel:

ClipSicherung = %ClipboardAll%
Clipboard = %ClipSicherung%  ; Erfolgt zu einem späteren Zeitpunkt, um den ursprünglichen Inhalt wiederherzustellen.
FileAppend, %ClipboardAll%, C:\Gespeicherte Zwischenablage.bin  ; Zwischenablage in eine Datei speichern.
FileRead, Clipboard, *c C:\Gespeicherte Zwischenablage.bin  ; Wiederherstellen aus einer Datei via *c-Option.

1.0.28.01 - 23. Februar 2005

Verbessert: FileAppend und dateilesende Schleifen können nun auch Text in die Standardausgabe (stdout) schreiben, indem ein Sternchen als Dateiname verwendet wird. Obwohl ein solcher Text auf eine Datei umgeleitet, an eine EXE-Datei weitergeleitet oder von umfangreichen Texteditoren abgefangen werden kann, erscheint er nicht in der Eingabeaufforderung, von der aus er gestartet wurde (ein Workaround finden Sie unter FileAppend). Zum Beispiel könnte man folgendes in der Eingabeaufforderung schreiben:

"%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "Mein Skript.ahk" >"Fehlerprotokoll.txt"

1.0.28 - 22. Februar 2005

Verbessert: Der Textparameter von FileAppend kann weggelassen werden, um eine leere Datei zu erstellen oder den Zeitstempel einer bestehenden Datei zu aktualisieren. [danke JSLover]

Der folgende v1.0.26-Fix wurde rückgängig gemacht, da er nicht mehr benötigt wird: "Behoben: Hotkeys wie a & b:: werden als ~a & b:: gesehen, wenn ~a:: auch als Hotkey existiert, und umgekehrt." In so einem Fall bewirkt der Hotkey ~a::, dass jedes Mal ein A-Tastendruck gesendet wird, wenn A nicht gedrückt gehalten wurde, um eine andere Taste wie B zu modifizieren.

Verbessert: SoundPlay kann nun vordefinierte Systemsounds abspielen (Hand, Frage, Ausruf und Sternchen). [danke Mythos]

Verbessert: Das Tray-Symbol kann nun so geändert werden, dass es nicht mehr von Pause und Suspend beeinflusst wird. Das Symbol kann "eingefroren" werden, indem als letzter Parameter des Menu-Befehls die Zahl 1 angegeben wird. Beispiel: Menu, Tray, Icon, C:\Mein Symbol.ico, , 1

Hinzugefügt: ahk_pid, mit dem ein oder mehrere Fenster identifiziert werden können, die einem Prozessidentifikator (PID) entsprechen. Beispiel: WinClose ahk_pid %VarMitPID% ; Schließt nur das erste gefundene Fenster.

Hinzugefügt: Befehl SoundBeep, mit dem ein Ton über den PC-Lautsprecher erzeugt werden kann. [danke Tekl]

Hinzugefügt: Unterstützung für Hotkeys, die beim Loslassen einer Taste ausgelöst werden. Beispiele:

*LWin::Send {LControl down}
*LWin Up::Send {LControl up}
^!r Up::MsgBox Sie haben STRG+ALT+R gedrückt und losgelassen.

1.0.27.01 - 17. Februar 2005

Behoben: Gui -Caption (und möglicherweise andere) funktionieren nun auch, wenn das Fenster sichtbar ist. [danke Watcher]

Behoben: Bei der Erstellung eines GUI-Fortschrittsbalkens ist nun eine Startposition außerhalb des Bereichs 0-100 möglich. [danke kapege.de]

1.0.27 - 15. Februar 2005

Geändert: A_OSVersion gibt nun WIN_2003 für Windows Server 2003 zurück.

Behoben: Post/SendMessage kann nun wie vorgesehen via ahk_id 0xFFFF an ALLE Fenster broadcasten. [danke Mythos]

Geändert: Wenn Sie Post/SendMessage verwenden, um via Menu-Befehl erstellte Menüpunkte auszulösen, beachten Sie, dass jede ID nun 10.000 höher ist als zuvor.

Verbessert: RunWait unterstützt nun AusgabeVarPID (wie der Run-Befehl).

Hinzugefügt: Interne Variablen A_IsCompiled und A_IsSuspended, die 1 enthalten, wenn das Skript kompiliert bzw. suspendiert ist. [danke Mythos]

Hinzugefügt: Befehl OutputDebug zum Senden einer Zeichenkette, die von einem beliebigen Debugger (falls vorhanden) angezeigt werden kann. [danke procyon]

GUI-Änderungen:

Behoben: Fenster mit Tab-Steuerelementen: Steuerelemente außerhalb des Tab-Steuerelements waren manchmal unsichtbar, wenn das Fenster zum ersten Mal angezeigt wurde. [danke ranomore]

Geändert: GuiControl +/-Optionen setzt ErrorLevel nun auf 1 (Misserfolg), wenn keiner der angegebenen Styles angewendet werden darf.

Verbessert: Die maximale Anzahl von GUI-Fenstern wurde von 10 auf 99 erhöht. Die maximale Anzahl von Steuerelementen pro Fenster wurde von 1000 auf 11000 erhöht.

1.0.26.01 - 11. Februar 2005

Behoben: Das PSPad-Editor-Installationsskript erstellt nun die AutoHotkey.ini-Datei im Syntax- bzw. Kontextordner von PSPad (und zwei weitere kleinere Fehlerbehebungen). [danke RobOtter & beardboy]

Hinzugefügt: Direktive #KeyHistory, mit der die maximale Anzahl von Tastatur- und Mausereignissen, die im KeyHistory-Fenster angezeigt werden, bestimmt werden kann. Mit 0 kann der Tastenverlauf deaktiviert werden. [danke Mythos]

1.0.26 - 10. Februar 2005

Behoben: A_LoopFileLongPath wird nicht mehr lange Dateinamen kürzen, die aus kurzen Dateinamen erzeugt wurden. [danke deXter & jonny]

Behoben: EnvDiv und Transform Mod erlauben nun Werte zwischen -1.0 und 1.0. [danke Mythos]

Behoben: Hotkeys wie a & b:: werden als ~a & b:: gesehen, wenn ~a:: auch als Hotkey existiert, und umgekehrt. [danke jonny]

Behoben: Unerwünschte Interaktion zwischen Hotkeys. Wenn man z.B. die Hotkeys CapsLock & A:: und MButton:: verwendet und die mittlere Maustaste drückt, während man Feststell gedrückt hält, wird Feststell wie erwartet ein- bzw. ausgeschaltet.

Geändert: MouseClick WheelUp|WheelDown ignoriert nun SetMouseDelay. Dies war notwendig, um eine Verlangsamung von Mausrad-Hotkeys zu vermeiden, und auch, weil eine Verzögerung in den meisten Fällen unerwünscht ist.

Verbessert: Die Syntax- und Clipdateien im Extras-Ordner von PSPad (Editor). [bereitgestellt von GoGoGadgetScott & beardboy]

Verbessert: SendMessage und PostMessage unterstützen nun ahk_id 0xFFFF, das zum Senden von HWND_BROADCAST-Meldungen an alle Fenster im System verwendet werden kann. [danke Mythos]

Hinzugefügt: Ein schneller Suchmodus für PixelSearch, der bis zu 100-mal schneller ist als der langsame Suchmodus, insbesondere für große Suchbereiche wie den gesamten Bildschirm. [entwickelt von Aurelian Maga]

Hinzugefügt: Befehl ImageSearch, mit dem nach einem Bild auf dem Bildschirm gesucht werden kann. [entwickelt von Aurelian Maga]

Hinzugefügt: Unterbefehle WinGet Transparent und WinGet TransColor. Außerdem wurde der Unterbefehl WinSet Redraw hinzugefügt, mit dem ein Fenster durch Neuzeichnen aktualisiert werden kann. [danke Mythos]

Hinzugefügt: Unterbefehle WinSet Style|ExStyle und Control Style|ExStyle, mit denen die Styles von Fenstern und Steuerelementen, die nicht zum Skript gehören, geändert werden können.

GUI-Änderungen:

Behoben: Gui +/-Disabled und Gui +/-AlwaysOnTop. Außerdem ist es nicht mehr notwendig, danach Gui Show zu machen. [danke beardboy]

Behoben: Ein Fortschrittsbalken konnte nicht auf die Standardfarbe zurückgesetzt werden. [danke toralf]

Verbessert: "Checked", "Disabled" und "Hidden" erkennen nun 1 oder 0 als optionales Suffix. Beispiel: Gui, Add, CheckBox, Disabled%VarMitEins% Checked%VarMitEins%. [danke MikeG]

1.0.25.14 - 5. Februar 2005

Behoben: Hotstrings interferieren nicht mehr mit toten AltGr-Tasten (diakritische Zeichen) wie Tilde (~). [danke zorglups & /Torben]

Hinzugefügt: Interne Variable A_LoopFileLongPath, die die Limitierungen von A_LoopFileFullPath umgeht. [danke Hugo]

Behoben: +AlwaysOnTop funktioniert nun auch, wenn das GUI-Fenster bereits existiert. [danke kmel]

Verbessert: Gui Show wurde geringfügig geändert, um konsistentere Ergebnisse zu liefern, insbesondere bei Fenstern mit Tab-Steuerelementen.

1.0.25.13 - 4. Februar 2005

Behoben: Das Anwenden von Optionen oder Styles auf ein bestehendes GUI-Fenster verhindert, dass das Fenster angezeigt wird, wenn es versteckt oder minimiert ist.

Hinzugefügt: Neue Optionen für Gui Show: Minimize, Maximize, Restore, NoActivate, NA und Hide. [danke kmel]

Hinzugefügt: Neue GUI-Fenster-Optionen: +/-Disabled, +/-AlwaysOnTop und +/-LastFound. Die LastFound-Option setzt das Fenster auf das zuletzt gefundene Fenster, sodass Befehle wie WinSet mit dem Fenster arbeiten können, auch wenn es versteckt ist.

1.0.25.12 - 2. Februar 2005

Behoben: RunAs kann nun mehr als einmal verwendet werden. [danke MikeG]

Behoben: Menu, MeinMenü, Standard erstellt nun das Menü, wenn es noch nicht existiert. [danke Mythos]

Behoben: if Var und if (Ausdruck) behandeln nicht-numerische Zeichenketten nun als "true", wie dokumentiert. [danke Mythos]

Behoben: Interne Variablen können nun dynamisch referenziert werden, auch wenn sie nie direkt referenziert werden. Beispiel: A_IPAddress%A_Index%

Geändert: ErrorLevel: Sein vorheriger Wert ist nun für Befehle verfügbar, die ihm einen neuen Wert geben. Beispiel: StringReplace, AusgabeVar, ErrorLevel, EndKey:

Geändert: Das Zeilenvorschubzeichen (`n) wird nun als Enter statt als Strg+Enter gesendet. Dadurch funktioniert auch SendRaw %A_EndChar% korrekt, wenn der Benutzer Enter drückt, um einen Hotstring zu vollenden. [danke Andreas Borutta]

1.0.25.11 - 31. Januar 2005

Behoben: StringReplace (fehlerhaft seit v1.0.25) funktioniert nun wieder korrekt mit langen Zeichenketten, die mehr als 20 Ersetzungen erfordern. [danke jordi]

Behoben: Es ist nun möglich, GuiControl zu verwenden, um die Optionen und Styles eines GUI-Picture-Steuerelements zu ändern, das ein Symbol anzeigt. [danke toralf]

1.0.25.10 - 30. Januar 2005

Behoben: Der Input-Befehl erfasst Großbuchstaben nun korrekt, die von Send-Befehlen und Hotstring-Ersetzungen stammen.

Verbessert: Die maximale Anzahl von Steuerelementen pro GUI-Fenster wurde von 500 auf 1000 erhöht.

Verbessert: MouseGetPos hat nun einen optionalen Modus, der MDI-Unterfenster besser unterstützt. [danke unnamed.ahk]

1.0.25.09 - 28. Januar 2005

Das Starten eines Skripts sollte nicht mehr dazu führen, dass das Fenster einer Vollbildanwendung, z.B. eines Videospiels, den Fokus verliert. Außerdem sollte die Taskleiste weniger stören oder neu gezeichnet werden. [danke Tekl]

Verbessert: Control Choose/ChooseString funktioniert nun auch mit Mehrfachauswahl-ListBox-Steuerelementen.

Hinzugefügt: Unterbefehl ControlGet List, mit dem der Inhalt einer ListBox oder ComboBox abgerufen werden kann. [danke Rajat & mallow]

1.0.25.08 - 25. Januar 2005

Behoben: Hotstrings: Wenn Sie Enter drücken, um eine Ersetzung auszulösen, wird nun Enter statt Strg+Enter gesendet. [danke Trinity & h67o]

Behoben: Bei der Erstellung eines Slider-Steuerelements ist nun eine Startposition außerhalb des Bereichs 0-100 möglich. [danke bahri]

1.0.25.07 - 24. Januar 2005

Geändert: SplitPath unterstützt nun URLs besser. Einzelheiten finden Sie unter SplitPath.

Hinzugefügt: Interne Variablen true und false, die 1 und 0 enthalten. Diese können verwendet werden, um die Lesbarkeit eines Skripts zu verbessern. Beispiel: GroßKleinSensitiv := true

1.0.25.06 - 23. Januar 2005

Behoben: Die neue Mehrfachauswahloption von FileSelectFile: Bei der Auswahl einer Datei in einem Stammordner wie z.B. C: wird nun ein umgekehrter Schrägstrich an den Ordnernamen angehängt.

Behoben: Ein Ausdruck wie Var:=" Zkette " berücksichtigte AutoTrim, während ein komplexerer Ausdruck dies nicht tat. Konzeptbedingt sollte AutoTrim niemals Ausdrücke beeinflussen. [danke Ya-Cha]

Behoben: Ausdrücke: Die Verkettung einer Referenz wie Array%i% behandelt Array%i% nun immer als leere Zeichenkette, wie dokumentiert. [danke Ya-Cha]

Geändert: Ausdrücke: Eine ungültige Operation (z.B. Division durch Null oder Subtraktion einer Zeichenkette von einer Zahl) bewirkt nun, dass nur der betroffene Teil als leere Zeichenkette ausgewertet wird, nicht mehr der gesamte Ausdruck.

Geändert: Der Installer setzt den Standardeditor für Skripte nicht mehr auf Notepad zurück. Außerdem wurden die Kontextmenüpunkte zum Öffnen/Ausführen/Kompilieren von .ahk-Dateien korrigiert, so dass sie nun auf möglichst vielen Systemen funktionieren. [danke corrupt]

Verbessert: PixelSearch kann nun von rechts nach links statt von links nach rechts suchen. Wenn eines Ihrer Skripte darauf angewiesen ist, dass PixelSearch bei einem invertierten Suchbereich immer "nicht gefunden" meldet, passen Sie das Skript bitte entsprechend an. [danke BoBo & SD2K]

Verbessert: SplitPath unterstützt nun URLs. [danke BoBo]

1.0.25.05 - 19. Januar 2005

Behoben: Kein Absturz mehr, wenn ein Ausdruck eine nicht-numerische Zeichenkette mit dem numerischen Ergebnis einer Operation vergleicht. [danke unnamed.ahk]

Behoben: Dem Operator := muss kein Leerzeichen mehr vorangestellt werden. [danke unnamed.ahk]

Behoben: Verkettung von Zeichenketten wie z.B. Var = %Var% Test (teilweise fehlerhaft seit v1.0.25). Dies betraf nur Verkettungen, bei denen ein oder mehrere Leerzeichen auf der linken Seite entfernt werden mussten, weil AutoTrim eingeschaltet war. [danke namazu(catfish)]

Behoben: Maustasten-Hotkeys, die nur Win oder Alt als Modifikator verwenden, zeigen nicht mehr das Startmenü an bzw. aktivieren nicht mehr die Menüleiste des aktiven Fensters. Dieses Problem trat nur in Skripten ohne den Tastatur-Hook auf. [danke Kijuto Riddle]

Behoben: Skripte, die die Maus AltTab-, ShiftAltTab- oder andere Alt-Tab-Aktionen ausführen lassen, aktivieren nun den Tastatur-Hook, um korrekt zu funktionieren. [danke jonny]

Verbessert: FileSelectFile hat nun eine einfachere Mehrfachauswahloption. Obwohl die alte Mehrfachauswahloption weiterhin funktioniert, wurde sie in der Hilfedatei als veraltet gekennzeichnet, da ihre Ergebnisse schwer zu parsen sind. [danke 3tones]

Verbessert: StringReplace hat nun eine Option, mit der die Anzahl der Ersetzungen in ErrorLevel gespeichert werden kann.

1.0.25 - 12. Januar 2005

Hinweis: Obwohl diese Version ausgiebig getestet wurde, wurden einige Low-Level-Änderungen vorgenommen. Es wird empfohlen, wichtige Skripte erneut zu testen, bevor Sie diese Version verwenden.

Behoben: Datei-Schleifen unter Windows 95/98/Me: A_LoopFileTimeModified/Created/Accessed sind nicht mehr leer. [danke 3tones]

Behoben: Unter Windows 95/98/Me können nun die folgenden Tasten für Hotkey-Kombinationen verwendet werden: Entf, Einfg, Pos1, Ende, Bild↑, Bild↓ und die Pfeiltasten.

Behoben: Bei Zeilen wie If x = 5, Exit wird das Element nach dem Komma nicht mehr als Befehl erkannt. IfEqual, x, 5, Exit hingegen erkennt "Exit" noch als Befehl.

Geändert: Transform Pow gibt nun eine leere Zeichenkette statt 0.00 zurück, wenn Null mit einer negativen Zahl potenziert wird.

Geändert: Kompilierte Skripte: Die Versionsressource zeigt nun die Versionsnummer an, anstatt leer zu sein. [danke g4]

Geändert: FileAppend: Die Datei wird nun automatisch im Binärmodus geöffnet, wenn der zu schreibende Text Wagenrücklauf-Zeilenvorschub-Paare (`r`n) enthält. Mit anderen Worten, die Sternchenoption wird automatisch aktiviert. Die Angabe des Sternchens, falls nötig, erhöht jedoch die Performanz, da das Programm nicht nach `r`n suchen muss.

Geändert: Dateilesende Schleifen: Die Ausgabedatei wird nicht mehr geöffnet, wenn nie etwas in sie geschrieben wird. Dies ist der Fall, wenn die Schleife null Wiederholungen hat oder nie den FileAppend-Befehl verwendet. Außerdem wird die Datei automatisch im Binärmodus geöffnet, sobald ein FileAppend in der Schleife ein Wagenrücklauf-Zeilenvorschub-Paar (`r`n) schreibt. Mit anderen Worten, die Sternchenoption wird automatisch aktiviert. Diese Änderungen können bestehende Skripte unbrauchbar machen, wenn sie sich darauf verlassen: 1) dass eine null-lange Datei von der Schleife erstellt wird; oder 2) dass das Änderungsdatum der Datei von der Schleife geändert wird, auch wenn die Schleife keinen Text in die Datei geschrieben hat.

Geändert: Die Laufzeitvalidierung von numerischen Parametern wurde entfernt (um die Performanz zu verbessern). Dies bewirkt, dass ein Befehl wie SetKeyDelay %Var% keinen Laufzeitfehler mehr ausgibt, wenn Var etwas nicht-numerisches enthält. Die meisten Befehle behandeln nicht-numerische Parameter nun als Null.

Verbessert: Der Progress-Befehl hat nun Optionen zum Setzen der Startposition und eines anderen Bereichs als 0 bis 100. [danke ranomore]

Verbessert: Send-Befehl: Die Maustasten können nun gedrückt gehalten oder losgelassen werden. Zum Beispiel: Send {LButton down}

Verbessert: Der Sort-Befehl hat nun eine Option, mit der Duplikate aus der Liste entfernt werden können. Außerdem behandelt die N-Option (numerische Sortierung) die Elemente nun als Floating-Point-Zahlen, nicht mehr als Integer. [danke Rajat]

Verbessert: WIN- und ALT-Hotkeys, die den Send-Befehl verwenden:

Verbessert: Bessere Performanz bei folgenden Dingen: 1) StringReplace "All" verwendet nun temporären Speicher (wenn nötig), um die Operation erheblich zu beschleunigen. Einzelheiten und Optionen finden Sie unter StringReplace. 2) Die Verkettung von Variablen, wie z.B. Var = %Var%Zkette, ist mindestens 100-mal schneller. 3) Die Zuweisung an Variablen mit eingeschaltetem AutoTrim ist schneller. 4) Die nicht-Groß-/Kleinschreibung-sensitive Suche nach Zeichenketten ist viel schneller, was sich auf StringGetPos, IfInString, if var in <Liste>, StringReplace und Input auswirkt.

Hinzugefügt: Interne Variable A_LoopFileShortPath für Datei-Schleifen, die den 8.3-Kurzpfad und -namen einer Datei enthält. [danke Rajat]

Hinzugefügt: Befehl FileRead, mit dem der gesamte Text einer Datei in eine Variable gelesen werden kann (performt besser als eine dateilesende Schleife).

Hinzugefügt: Unterstützung für Ausdrücke in Befehlen mit numerischen Parametern, wie z.B. StringLeft. Außerdem können IF-Anweisungen komplexe Ausdrücke verwenden, wenn das erste Zeichen eine runde Klammer ist, z.B. if (X < Y + 10) and (Farbe = "Blau"). Darüber hinaus wurde Var := Ausdruck hinzugefügt, um das Ergebnis eines Ausdrucks einer Variable zuzuweisen, z.B. Var := 100*X + 1/3. Einzelheiten über Operatoren, die Verkettung von Zeichenketten und den einfacheren Zugriff auf Arrays finden Sie unter Ausdrücke (Expressions). [danke Joost Mulders]

GUI-Änderungen:

Geändert: Gui Show startet das GuiSize-Label nur noch, nachdem das Fenster angezeigt und sein Titel aktualisiert wurde. [danke ranomore]

Verbessert: Ziehen-und-Ablegen meldet nun (via ErrorLevel) die Anzahl der abgelegten Dateien.

1.0.24 - 9. Dezember 2004

Behoben: StatusBarGetText und StatusBarWait: Manchmal gaben diese Befehle bei hoher Systemlast zu früh auf und setzten ErrorLevel. [danke Anatoly Larkin]

Behoben: Kompilierte Skripte: Die Versionsressource ist nun wie vorgesehen leer. [danke Titan]

Verbessert: ControlClick kann nun optional auf Koordinaten statt auf ein bestimmtes Steuerelement klicken.

Verbessert: Speicherverwaltung: Wenn ein Skript für eine Operation wie StringReplace, Große_Var, Große_Var, `n, `r`n einen temporären Speicherbereich von mehr als 4 MB benötigt, wird dieser Speicher automatisch freigegeben, wenn er 10 Sekunden lang nicht verwendet wurde. Die 10-Sekunden-Verzögerung vermeidet Performanzverlust durch häufiges Freigeben und Reservieren von Speicher. Zum Beispiel könnte eine Schleife mit Tausenden von Wiederholungen den Speicher für ihre gesamte Dauer benötigen.

Verbessert: Besseres Verhalten von Befehlszeilenparametern unter Windows NT/2k/XP, so dass: 1) mehr als 8 Dateien auf ein .ahk-Skript gezogen und abgelegt werden können (sofern die Ziehen-und-Ablegen-Option während der Installation aktiviert wurde); und 2) .ahk-Dateien, die direkt über eine Verknüpfung oder eine Befehlszeile gestartet werden, Parameter empfangen können, die Leerzeichen enthalten, wenn sie in doppelte Anführungszeichen gesetzt sind. [danke Tekl]

Verbessert: FileCreateShortcut hat neue Optionen, die folgendes ermöglichen: 1) ein anderes Symbol als das erste verwenden; und 2) den Startzustand auf minimiert oder maximiert setzen. Wenn Sie ein Skript haben, das FileCreateShortcut mit dem Tastenkürzel Ctrl+Alt+, verwendet, achten Sie bitte darauf, dass das Komma mit einem Escapezeichen versehen werden muss. [danke Holger]

Hinzugefügt: Befehl FileGetShortcut, mit dem Informationen über eine Verknüpfung (LNK-Datei) abgerufen werden können, wie z.B. ihre Zieldatei. [danke Holger]

Hinzugefügt: Rajats Syntax- und Schlüsselwortlisten in den Extras\Editors\Syntax-Ordner im AutoHotkey-Ordner. Diese Dateien erleichtern die Erstellung und Pflege von Syntaxdefinitionen und Clip-Bibliotheken für verschiedene Editoren.

Hinzugefügt: Unterbefehl Menu Click, mit dem der Standardmenüpunkt des Tray-Symbols mit nur einem Klick aktiviert werden kann (normalerweise ist ein Doppelklick erforderlich). [danke CarlosTheTackle]

Hinzugefügt: Unterbefehle Drive Lock und Drive Unlock. Das Sperren eines Laufwerks blockiert dessen Auswurffunktion. [danke RG]

Hinzugefügt: Der Inhalt einer Variable kann nun in zufälliger Reihenfolge sortiert werden. [danke GBeam]

Hinzugefügt: Unterstützung für Unicode-Text in der Zwischenablage und in Variablen. Einzelheiten finden Sie unter Transform Unicode. [danke Tekl]

Hinzugefügt: Interne Variable A_YWeek, die das aktuelle Jahr und die aktuelle Kalenderwoche gemäß ISO 8601 enthält. [Danke an alle Beteiligten]

Hinzugefügt: Neue interne Variablen: A_Language, A_ComputerName, A_UserName, A_Desktop, A_DesktopCommon, A_StartMenu, A_StartMenuCommon, A_Programs, A_ProgramsCommon, A_Startup, A_StartupCommon und A_MyDocuments.

Hinzugefügt: Befehl FormatTime, mit dem ein YYYYMMDDHH24MISS-Zeitstempel in ein bestimmtes Datums-/Zeitformat transformiert werden kann.

GUI-Änderungen:

Behoben: Radio-Steuerelemente: 1) das g-Label wird nicht mehr gestartet, nur weil das Steuerelement den Tastaturfokus erhält; 2) das g-Label wird nur noch einmal statt zweimal gestartet, wenn mit den Pfeiltasten navigiert wird; 3) der Fokus liegt nun auf dem richtigen Steuerelement, wenn eine Radiogruppe den Tastaturfokus erhält; und 4) bei mehreren angrenzenden Radiogruppen erhält die erste Radiogruppe nun einen Tabstopp. [danke Gre & Jacques Bensimon]

Behoben: Tab-Steuerelemente: Der Tastaturfokus landet nun immer auf dem ersten statt auf dem zweiten Steuerelement, wenn der Benutzer einen neuen Tab anklickt. Außerdem funktionieren nun die Navigationstasten Strg+Bild↓/Bild↑/Tab, wenn der Fokus auf einer ComboBox liegt. [danke wkueting]

Behoben: Die Limit-Option des Edit-Steuerelements funktioniert nun wieder (fehlerhaft seit v1.0.23). [danke ranomore]

Behoben: GuiControl +/-Optionen erlaubt nun das Hinzufügen oder Entfernen des Check3-Styles bei CheckBox-Steuerelementen. Außerdem werden Steuerelemente nun immer neu gezeichnet, wenn sich ihre Styles ändern. [danke beardboy]

Geändert: ComboBox-Steuerelemente: Ihre g-Labels (falls vorhanden) werden nun jedes Mal gestartet, wenn der Benutzer den Text im Eingabefeld des Steuerelements ändert.

Verbessert: Picture-Steuerelemente: 1) Symbole und Cursor können aus CUR-, ANI-, ICO-, DLL- und EXE-Dateien geladen werden; und 2) Breite und Höhe können beim Laden eines neuen Bildes via GuiControl angegeben werden. Wenn eines Ihrer Skripte BackgroundTrans verwendet, um ein Symbol transparent zu machen, fügen Sie das Wort AltSubmit zu den Optionen des Steuerelements hinzu. [danke Rajat]

Hinzugefügt: Eine Methode zum Setzen von benutzerdefinierten Tabstopps in Edit-Steuerelementen. [danke Jason Payam Ahdoot]

Hinzugefügt: Eine Invert-Option für Slider, mit der die unteren und oberen Enden des Steuerelements umgekehrt werden können. [danke beardboy]

Hinzugefügt: Unterbefehl Gui N:Default, mit dem die Standard-GUI-Fensternummer des aktuellen Threads auf N geändert werden kann.

Hinzugefügt: GuiSize-Label, das immer dann gestartet wird, wenn ein GUI-Fenster kleiner/größer gemacht, minimiert, maximiert oder wiederhergestellt wird.

Hinzugefügt: Unterstützung für Ziehen-und-Ablegen via GuiDropFiles-Label.

1.0.23 - 9. November 2004

Geändert: Kompilierte Skripte enthalten nun eine leere Versionsinfo-Ressource. Um die Versionsinfo Ihrer kompilierten Skripte anzupassen, verwenden Sie ein Tool wie Resource Hacker (Freeware), um die Datei AutoHotkeySC.bin zu bearbeiten. Beachten Sie, dass ResHacker kompilierte Skripte unbrauchbar macht, daher sollte nur die Datei AutoHotkeySC.bin bearbeitet werden. [danke Larl]

Verbessert: Das Hotkey-Präfix $ funktioniert nun auch unter Windows 95/98/Me. Es ermöglicht einem Hotkey, sich selbst zu senden, wodurch ein Hotkey seine ursprüngliche/native OS-Funktion bedingt ausführen kann.

Verbessert: PixelGetColor und PixelSearch haben nun eine Option zum Abrufen von Farben im RGB- statt BGR-Format.

Verbessert: Menu Show akzeptiert nun eine optionale Position für das Menü. [danke compuboy_r]

Verbessert: Der Hotkey-Befehl performt nun besser beim Ein- und Ausschalten eines Hotkeys, der sich bereits im korrekten Zustand befindet. [danke deguix]

Hinzugefügt: Unterbefehle Style und ExStyle für WinGet, mit denen der Style bzw. erweiterte Style eines Fensters abgerufen werden kann. [danke ranomore]

Hinzugefügt: Interne Variablen A_ProgramFiles und A_WinDir für Betriebssysteme, denen die entsprechenden Umgebungsvariablen fehlen.

Hinzugefügt: Unterbefehl WinSet Bottom, mit dem ein Fenster an das Ende des Stapels, d.h. unter alle anderen Fenster, gesetzt werden kann. [danke AntonyB]

Hinzugefügt: WinSet, Transparent, Off, mit dem die Transparenz eines zuvor transparent gemachten Fensters vollständig ausgeschaltet werden kann. Dies kann die Performanz verbessern. [danke dijiyd]

Hinzugefügt: Unterbefehl WinSet TransColor, mit dem der Hintergrund eines Fensters unter Windows 2000/XP+ transparent gemacht werden kann. Dies ermöglicht die Erstellung von Bildschirmanzeigen (engl. On-Screen Display, kurz OSD) und anderen visuellen Effekten.

GUI-Änderungen:

Behoben: Gui Show: Manchmal wurde das Fenster erst angezeigt, nachdem der Befehl nach Gui Show ausgeführt wurde. [danke Tekl]

Behoben: Picture-Steuerelemente mit Rahmen: Die Größe des Steuerelements wird nicht mehr jedes Mal leicht erhöht, wenn mit GuiControl ein neues Bild geladen wird. [danke ILL.1]

Behoben: Wenn ein Tab-Steuerelement versteckt oder sichtbar gemacht wird, werden die Steuerelemente des aktuellen Tabs ebenfalls versteckt bzw. sichtbar gemacht. Außerdem wurden einige kleinere Probleme bei der Tastaturnavigation behoben. [danke Nemroth]

Geändert: Das Erlauben oder Verbieten der Interaktion mit Tab-Steuerelementen erlaubt oder verbietet auch die Interaktion mit ihren Untersteuerelementen.

Geändert: Tab-Steuerelemente verwenden unter Windows XP oder höher nun das klassische Design, so dass ihre Hintergrundfarbe mit der ihrer Untersteuerelemente übereinstimmt. [danke Gre]

Verbessert: Das Limit von 32 KB für die Menge an Text, die in einem Edit-Steuerelement enthalten sein kann, wurde entfernt. Windows 9x limitiert die Menge auf 64 KB und andere Betriebssysteme auf bis zu 4 GB. [danke Bahri]

Verbessert: Höhere Zeichnungsperformanz beim Umschalten von Tabs in einem Tab-Steuerelement.

Verbessert: GUI-Performanz wurde insgesamt erhöht, insbesondere bei Fenstern mit sehr vielen Steuerelementen.

Hinzugefügt: Positionierungsoptionen wp+n und hp+n, die die Breite und Höhe des vorherigen Steuerelements verwenden.

Hinzugefügt: BackgroundTrans-Option für Text-, Picture- und GroupBox-Steuerelemente. Mit dieser Option kann man dahinter liegende Steuerelemente durchscheinen lassen.

Hinzugefügt: Interne Variablen A_Gui und A_GuiControl, die den Fensternamen und die ID des Steuerelements, das den aktuellen Thread gestartet hat, enthalten. [danke Rajat]

Hinzugefügt: Unterbefehl GuiControl Font, mit dem die Schrift eines Steuerelements geändert werden kann.

Hinzugefügt: Steuerelement Slider: Ein Regler, den der Benutzer entlang einer vertikalen oder horizontalen Linie verschieben kann.

Hinzugefügt: Steuerelement Progress: Ein zweifarbiger Balken, der den Fortschritt einer Operation visuell darstellt.

Hinzugefügt: Steuerelement Hotkey: Ein Eingabefeld, das der Benutzer zur Eingabe einer Tastenkombination verwenden kann.

1.0.22 - 26. Oktober 2004

Behoben: ToolTip wurde unter Windows XP nicht mehr angezeigt. [danke Phi und /Torben]

Behoben: Die linke Maustaste funktioniert nun korrekt, wenn sie als Hotkey verwendet wird: Wenn mit so einem Hotkey ein Kontextmenü geöffnet wird, behandelt das Vordergrundfenster die linke Maustaste nach dem Schließen des Menüs so, als sei sie dauerhaft gedrückt. [danke umek]

Verbessert: Mit SetKeyDelay kann nun eine Verzögerung zwischen jedem Down- und Up-Ereignis eines Tastendrucks gesetzt werden.

Verbessert: GetKeyState, KeyWait, Input und Hotkeys unterstützen nun die explizite Angabe einer virtuellen Taste wie z.B. vkFF. Dies ist nützlich für Tasten, die keinen Namen haben und beim Drücken kein sichtbares Zeichen erzeugen. Leider teilen sich solche Tasten in der Regel denselben virtuellen Tastencode (FF), d.h. wenn Sie mehrere davon haben, kann diese Methode sie nicht unterscheiden (außer Hotkeys, die die auf der Tastenlistenseite beschriebene scNNN-Methode verwenden sollten).

Verbessert: FileMoveDir unterstützt nun einen optionalen Umbenennungsmodus mit einem "Alles oder nichts"-Verhalten. [danke Tekl].

Hinzugefügt: Unterbefehl WinGet MinMax, der -1 abruft, wenn das Fenster minimiert ist, 1, wenn es maximiert ist, oder 0, wenn es weder maximiert noch minimiert ist.

Hinzugefügt: Unterbefehl WinGet ProcessName, mit dem der Prozessname eines Fensters abgerufen werden kann. [danke Wademan]

Hinzugefügt: Befehl Drive, mit dem ein CD- oder DVD-Laufwerk geöffnet/geschlossen oder die Bezeichnung eines Laufwerks geändert werden kann.

Hinzugefügt: Unterbefehl DriveGet StatusCD, mit dem der Medienstatus eines CD- oder DVD-Laufwerks abgerufen werden kann.

Hinzugefügt: Interne Variablen A_ScreenWidth und A_ScreenHeight, die die Breite und Höhe des primären Bildschirms (in Pixel) enthalten.

Hinzugefügt: Interne Variable A_AhkVersion, die die Versionsnummer von AutoHotkey enthält.

Hinzugefügt: Befehl SysGet, mit dem Bildschirmauflösungen, Multi-Bildschirm-Informationen, Dimensionen von Systemobjekten und andere Systemeigenschaften abgerufen werden können. [danke Gregory F. Hogg von Hogg’s Software]

GUI-Änderungen:

Behoben: Edit-Steuerelemente mit einer expliziten Höhe (H), die groß genug ist, um mehrzeilig zu sein: Zeilenumbruch ist nun standardmäßig eingeschaltet, wie vorgesehen. [danke Alfredo]

Behoben: Kein Absturz mehr, der theoretisch auftreten kann (aber noch nie beobachtet wurde), wenn sich ein Fenster selbst zerstört, z.B. via Beenden-Schaltfläche.

Behoben: Gui Show: Die vorherigen Dimensionen des Fensters bleiben nun erhalten, wenn nichts angegeben ist. [danke lingoist]

Behoben: Wenn Gui Show über das Tray-Menü aufgerufen wird (und vielleicht auch zu anderen Zeiten), hat das Fenster nun den Tastaturfokus. [danke Tekl]

Geändert: Die Höhe einer GroupBox wurde leicht angepasst, wenn die Höhe weggelassen wird oder eine Zeilenanzahl angegeben ist. Sie sollte nun besser der aktuellen Schriftgröße entsprechen. Außerdem ist eine GroupBox nun etwas schmaler, wenn keine Breite angegeben ist.

Geändert: GuiControl Choose fällt nun automatisch auf die ChooseString-Methode zurück, wenn der N-Parameter nicht numerisch ist.

Verbessert: ListBox unterstützt nun einen optionalen horizontalen Scrollbalken durch Hinzufügen des Wortes HScroll in den Optionen.

Verbessert: Picture-Steuerelemente unterstützen nun eine Vielzahl neuer Bildformate wie PNG, TIF und ICO, sofern vom Betriebssystem unterstützt. Wenn Ihr Betriebssystem älter als XP ist (außer Windows 95), können Sie Unterstützung hinzufügen, indem Sie die kostenlose GDIPlus-Erweiterung von Microsoft herunterladen.

Hinzugefügt: Unterbefehl GuiControl Text, der der Methode "set-contents" entspricht, mit Ausnahme von Radio- und CheckBox-Steuerelementen, bei denen Param3 als neue Beschriftung behandelt wird, selbst wenn sie -1, 0 oder 1 ist. [danke Rajat]

Hinzugefügt: Steuerelement Tab (SysTabControl32): Ein großes Steuerelement, das dazu dient, auf mehreren Ebenen unterschiedliche Steuerelemente anzuzeigen.

1.0.21 - 12. Oktober 2004

Behoben: Hotstrings: Manchmal konnten sie nicht aktiviert werden. [danke Jack Horsfield]

Behoben: Progress-Befehl: Eine benutzerdefinierte Balkenfarbe wird nun unter Windows XP+ berücksichtigt, anstatt vom aktuellen Design des Benutzers überschrieben zu werden [danke Gre]. Um stattdessen das aktuelle Design zu verwenden, lassen Sie die Farbe des Balkens unverändert.

Behoben: ControlSend kann nun Modifikatortasten senden (z.B. Großbuchstaben und ^{end}), wenn das Skript mit einem seiner eigenen GUI-Fenster arbeitet oder wenn der Tastatur-Hook installiert ist. [danke beardboy & Gregory Punshon]

Behoben: Beim Senden von Mausklicks via Send-Befehl ist nun der korrekte STRG/ALT/UMSCHALT/WIN-Tastenstatus wirksam. Außerdem kann ControlSend keine Mausklicks mehr senden, da diese sonst im Fenster unter dem Mauszeiger erfolgen würden.

Behoben: ToolTip kann nun auf nicht-primären Bildschirmen in einem Multi-Bildschirm-System angezeigt werden. [danke Jack Horsfield]

Geändert: PixelGetColor und Window Spy rufen Farben nun im hexadezimalen statt im dezimalen Format ab, was die Visualisierung einer Farbe anhand ihrer Blau-, Grün- und Rotanteile erleichtert. Diese Änderung sollte keine Auswirkungen auf bestehende Skripte haben. [danke Bobo]

Verbessert: Window Spy hat nun ein nützlicheres Layout und zeigt den Text des Steuerelements unter dem Mauszeiger an.

Verbessert: Der Input-Befehl hat nun eine Option, mit der modifizierte Tastendrücke wie Strg+A bis Strg+Z erkannt und in echte ASCII-Zeichen umgewandelt werden können, falls möglich. Das folgende Beispiel erkennt Strg+C:

Transform, StrgC, Chr, 3  ; Speichert das Zeichen für STRG+C in die Variable StrgC.
Input, AusgabeVar, L1 M
IfEqual, AusgabeVar, %StrgC%, MsgBox, Sie haben STRG+C gedrückt.

Verbessert: ControlSend: Wenn ein Skript explizit Up- und Down-Ereignisse für einen Modifikator angibt, z.B. {Alt down}f{Alt up} statt !f, werden diese Ereignisse so gesendet, dass sie das aktive Fenster weniger stören. Hinweis: In früheren Versionen behandelte ControlSend explizit angegebene Up- und Down-Ereignisse von Modifikatoren wie {Ctrl down} und {Ctrl up} nicht korrekt.

Hinzugefügt: Unterbefehle Style und ExStyle (erweiterter Style) für ControlGet.

GUI-Änderungen:

Behoben: CheckBox- und Radio-Steuerelemente werden nun in der angegebenen Textfarbe angezeigt, auch wenn ein überschreibendes Windows XP-Design verwendet wird. Als Nebeneffekt werden die Steuerelemente jedoch auf das klassische Design zurückgesetzt, wenn eine benutzerdefinierte Textfarbe angegeben ist.

Behoben: GuiControl ist nun in der Lage, den Inhalt eines Steuerelements leer zu machen. [danke Rajat]

Behoben: Die Standardschaltfläche wurde kosmetisch angepasst. Manchmal nahm sie das Aussehen einer normalen Schaltfläche an.

Geändert: Steuerelemente und Fenster einer Anwendung verwenden nun einheitlich die visuellen Styles von Windows XP, sofern das aktuelle Design dies zulässt. [danke Titan]

Geändert: DropDownList und ComboBox unter Windows XP: Wenn die Höhe nicht angegeben ist, wird die Höhe der Auswahlliste an die verfügbare Höhe des Desktops angepasst.

Geändert: Die Erkennung der Optionswörter und -buchstaben von Gui Add ist jetzt strenger (aber 99% der GUI-Skripte sollten davon nicht betroffen sein): Optionen müssen durch mindestens ein Leer- oder Tabulatorzeichen voneinander getrennt sein, und alle Optionen, die ein Argument akzeptieren (wie z.B. x30 für die X-Koordinate), müssen unmittelbar vor diesem Argument stehen, d.h. ohne Leerzeichen dazwischen.

Geändert: Die Dicke des Rahmens um einige Steuerelemente (z.B. Edit) wurde auf eine traditionellere Größe reduziert.

Hinzugefügt: Alle Steuerelemente können jetzt eine zugeordnete Variable haben. Dies erleichtert die eindeutige Identifizierung eines Steuerelements, wenn GuiControl oder GuiControlGet verwendet wird.

Verbessert: DropDownList, ComboBox und ListBox können nun die Position anstelle des Textes des ausgewählten Listeneintrags speichern, wenn Gui Submit oder GuiControlGet verwendet wird.

Hinzugefügt: Unterbefehl Gui Flash, mit dem die Titelleiste und/oder die Taskleistenschaltfläche des Fensters zum Blinken gebracht werden kann. [danke beardboy]

Hinzugefügt: Gui +/-Theme, das die Erstellung von Steuerelementen im klassischen Design unter Windows XP+ ermöglicht.

Hinzugefügt: Es ist nun möglich, die Optionen und Styles eines bestehenden Steuerelements via GuiControl zu ändern.

Hinzugefügt: ListBox unterstützt nun Mehrfachauswahl durch Hinzufügen des Wortes Multi in den Optionen.

Hinzugefügt: Viele neue Optionen und benannte Styles für Steuerelemente. Außerdem können jetzt beliebige namenlose numerische Styles angegeben werden, wie z.B. die in der Styles-Tabelle.

1.0.20 - 30. September 2004

Behoben: if Var between/in/contains: Das zweite Element in der VergleichListe wird nicht mehr als Befehl fehlinterpretiert, wenn es zufällig mit einem übereinstimmt. [danke Rajat]

Behoben: Der Hotkey $Tab:: (TAB als unmodifizierter Hook-Hotkey) wird nicht mehr folgendes tun: 1) auslösen, wenn Alt+Tab gedrückt wird; 2) verhindern, dass Alt+Tab funktioniert. [danke antonyb]

Behoben: MsgBox: Der Zeitlimit-Parameter kann nun in einer Variable enthalten sein. [danke jordi]

Behoben: SetTimer: 10ms-Timer können nun alle 10ms (statt alle 20ms) laufen, wenn SetBatchLines die Standardeinstellung von 10ms hat.

Behoben: A_Index wird innerhalb von Datei-Schleifen und Registry-Schleifen, die Unterordner bzw. Unterschlüssel rekursiv durchwandern, nicht mehr periodisch auf 1 zurückgesetzt.

Für alle, die Post/SendMessage verwenden, um AutoHotkey selbst zu automatisieren: Die IDs der vordefinierten Menüpunkte im Tray und im Hauptfenster wurden geändert: Sie starten nun bei 65300 statt 32789. Bitte passen Sie Ihre Skripte entsprechend an.

Geändert: Versionsinfo (die im Dateieigenschaften-Dialogfenster des Explorers zu sehen ist) wird nun bei kompilierten Skripten weggelassen. Diese Änderung spiegelt die Tatsache wider, dass Skripte Eigentum ihrer Autoren sind und daher so wenig wie möglich mit AutoHotkey in Verbindung gebracht werden sollten. Ein Autor kann seine eigene Versionsinfo mit einem kostenlosen Tool wie ResHacker hinzufügen. [danke Bobo & Titan]

Verbessert: Die maximale Länge von Menü- und Menüpunktnamen wurde von 100 auf 260 erhöht. Außerdem sollten Menüs jetzt etwas weniger Speicher verbrauchen.

Verbessert: Die Geschwindigkeit des Unterbefehls Menu Add: Skripte, deren Menüs zusammengefasst Tausende von Menüpunkten enthalten, sollten nun in der Lage sein, neue Menüpunkte mindestens 100-mal schneller zu erstellen.

Verbessert: Der Send-Befehl unterstützt nun Maustasten und das Mausrad [danke Wolfgang Reszel (Tekl)]. Wenn eines Ihrer Skripte Send {LButton} oder ähnliches verwendet (wahrscheinlich ohne Wirkung), passen Sie es bitte entsprechend an.

Hinzugefügt: Konfigurationsdateien für EmEditor und MED (im Extras-Ordner enthalten). [danke Wolfgang Reszel (Tekl)]

Hinzugefügt: Eine Methode zum Abrufen einer Liste aller Steuerelemente in einem Fenster. Beispiel: WinGet, AusgabeVar, ControlList, A

GUI-Änderungen:

Behoben: Schaltflächen, die schnell angeklickt werden, wurden kosmetisch angepasst. [danke Rajat]

Behoben: Picture-Steuerelemente, die als Hintergrund für andere Steuerelemente verwendet werden: Sie stehlen keine Mausklicks mehr, es sei denn, sie haben ein g-Label. [danke Rajat]

Behoben: Menu-Befehl: Wenn er Änderungen an einer Menüleiste vornimmt, werden diese Änderungen sofort sichtbar, wenn das GUI-Fenster sichtbar ist. Außerdem sollte es nun problemlos möglich sein, die Farbe eines Menüs auf die Standardfarbe zurückzusetzen.

Verbessert: Die maximale Anzahl von Fenstern wurde von 5 auf 10 erhöht.

(Könnte bestehende Skripte unbrauchbar machen): Wenn eine Radio-Gruppe mehrere Radio-Steuerelemente, aber nur eine Variable hat, wird dieser Variable die Nummer des ausgewählten Radio-Steuerelements zugewiesen (0, wenn nichts ausgewählt ist, 1 für das erste, 2 für das zweite usw.) [danke Rajat] Wenn Sie Radio-Gruppen haben, deren Radio-Steuerelemente nicht alle Variablen haben, passen Sie sie bitte entsprechend an.

(Könnte bestehende Skripte unbrauchbar machen): Threads, die als Ergebnis einer GUI-Aktion gestartet werden, arbeiten nun standardmäßig mit der Fensternummer, in der die Aktion stattgefunden hat. Zuvor hat der Gui-Befehl die Nummer 1 vermutet, wenn die Fensternummer nicht angegeben wurde. Wenn Sie Skripte haben, die mehrere Fenster verwenden, passen Sie diese bitte entsprechend an.

(Könnte bestehende Skripte unbrauchbar machen): Skripte, die den Gui-Befehl irgendwo enthalten, erlauben standardmäßig nur eine aktive Instanz von sich selbst, was aber mit der #SingleInstance-Direktive geändert werden kann. Außerdem sind GUI-Skripte jetzt sofort persistent und nicht erst, nachdem ein GUI-Fenster erstellt wurde.

Hinzugefügt: Option "underline" (unterstreichen) für Gui Font.

Hinzugefügt: Option +/-Resize, mit der die Größe eines Fensters veränderbar gemacht werden kann. Beispiel: Gui, +owner +resize

Hinzugefügt: Optionen XS, YS und Section für Gui Add. Mit diesen Optionen kann ein Fenster in Sektionen unterteilt werden, die jeweils eigene Zeilen und Spalten von Steuerelementen haben können. Hinweis: Bei einem Layout-Editor wie SmartGUI Creator sind diese Optionen in der Regel nicht von Nutzen. [danke Jack Horsfield]

Hinzugefügt: Interne Variable A_GuiControlEvent, mit der Doppelklicks in ListBox-, Radio-, Picture- und Text-Steuerelementen erkannt werden können.

Hinzugefügt: Befehle GuiControl und GuiControlGet, mit denen verschiedene Operationen an einzelnen Steuerelementen durchgeführt werden können.

1.0.19 - 16. September 2004

Behoben: Hotstrings und der Input-Befehl erkennen nun auch Zeichen, die mit AltGr (Strg+Alt) erzeugt werden, wie z.B. das @-Symbol. [danke Tekl, jordi und /Torben]

Behoben: Hotstrings: Nicht-Groß-/Kleinschreibung-sensitive Zeichen wie Ziffern disqualifizieren eine Abkürzung nicht mehr als großgeschrieben. Wenn z.B. der Hotstring ::pt1::pteranodon existiert und Sie PT1 (alles großgeschrieben) eingeben, wird nun auch die Ersetzung wie erwartet großgeschrieben. Außerdem wurden kleinere Änderungen am Groß-/Kleinschreibung-Anpassungsmodus vorgenommen.

Behoben: Der Unterbefehl Menu DeleteAll deaktiviert nun nicht mehr permanent alle "Unteruntermenüs", die indirekt einem Menü untergeordnet sind. [danke compuboy_r]

Behoben: Unterbefehl Process Priority: Die Prioritätsstufe kann nun in einer Variable enthalten sein. [danke Rajat]

Behoben: Befehle, die den Tastatur-Hook einschalten (z.B. Input), reaktivieren nun nicht mehr suspendierte Hotkeys. [danke jordi]

Behoben: Automatische Zentrierung von InputBox, SplashImage, Progress und SplashTextOn: Wenn die Taskleiste links oder oben am Bildschirm verankert ist, wird die Zentrierung nicht mehr um die Dicke der Taskleiste verschoben sein.

Behoben: WinGetText und ControlGetText: Der abgerufene Text ist nun auf die maximale Größe einer Variable begrenzt (standardmäßig 64 MB). [danke hermitress]

Geändert: BlockInput wird nun vorübergehend deaktiviert, wenn der Send-Befehl einen ALT-Tastendruck simulieren muss. Da ein geringes Risiko besteht, dass bestehende Skripte, die bei aktivem BlockInput versuchen, ALT zu senden, dadurch unbrauchbar werden, prüfen Sie bitte, ob dies der Fall ist, und passen Sie Ihre Skripte entsprechend an.

Verbessert: BlockInput kann nun so eingestellt werden, dass es sich automatisch bei folgenden Befehlen einschaltet: Send, SendRaw, MouseMove, MouseClick und MouseClickDrag. [danke beardboy]

Verbessert: Hotkeys (insbesondere für Joysticks) werden jetzt besser überwacht und gepuffert, wenn das Skript ein Dialogfenster anzeigt oder unterbrechungsfrei ist.

Hinzugefügt: Direktive #MaxMem, mit der die maximale Kapazität jeder Variable auf einen anderen Wert als 64 MB (Standard) gesetzt werden kann.

Hinzugefügt: Eine Option für Run/RunWait, mit der Warndialogfenster und die Terminierung des aktuellen Threads unterdrückt werden können. [danke compuboy_r und andere, die gefragt haben]

Hinzugefügt: Eine Option zum Ändern der Hintergrundfarbe eines Menüs via Menu, MenüName, Color, FarbeWert (wirkungslos unter Windows 95/NT).

Hinzugefügt: Befehl KeyWait, mit dem auf das Loslassen oder Drücken einer Tastatur-, Maus- oder Joysticktaste gewartet werden kann.

Hinzugefügt: if Var [not] contains VergleichListe, das der Verwendung von IfInString/IfNotInString entspricht, außer dass mehrere Vergleichszeichenketten unterstützt werden. [danke whynot]

Hinzugefügt: Befehl Gui, mit dem Fenster und Steuerelemente erstellt und verwaltet werden können. Solche Fenster können zur Dateneingabe oder als individuelle Benutzerschnittstellen verwendet werden.

1.0.18 - 19. August 2004

Behoben: Klemmende Modifikatortasten (Strg, Alt, Umschalt und Win) - zumindest in einigen Fällen. Dies sollte helfen zu verhindern, dass Hook-Hotkeys unerwartet ausgelöst werden, auch wenn der Benutzer keine Modifikatortaste gedrückt hält. Der Fix korrigiert den Modifikatorstatus des Hooks, wann immer er nicht mit den Vorgaben des Betriebssystems einverstanden ist.

Behoben: Maustasten-Hotkeys: Wenn ein Skript LButton als Hotkey definiert, sollten die Menüs des Skripts nun korrekt funktionieren. Ähnlich verhält es sich, wenn ein Skript RButton als Hotkey definiert und dessen Subroutine MouseClick, right verwendet. Das Tray-Symbol sollte nun korrekt auf einen Rechtsklick reagieren, solange SetMouseDelay auf der Standardeinstellung oder niedriger ist.

Behoben: Unterstützung für diakritische und andere Zeichen (fehlerhaft seit v1.0.16/17). [danke jordi]

Behoben: Einige Probleme mit neutralen Modifikatortasten (Umschalt, Strg, Alt), die als Präfix- oder Suffixtaste verwendet werden. Zum Beispiel:

Shift & CapsLock::MsgBox Sie haben die Feststelltaste gedrückt, während Sie eine Umschalttaste gedrückt hielten.
Shift::MsgBox Sie haben eine Umschalttaste ohne Modifikation einer anderen Taste losgelassen.

Behoben: CoordMode Caret verwendet nun seine eigene Einstellung, nicht mehr die von CoordMode ToolTip.

Behoben: A_CaretX/Y sind nun immer leer, wenn kein aktives Fenster vorhanden ist oder die Position des Textcursors nicht ermittelt werden konnte.

Geändert: Input-Befehl: Der Benutzer kann nun Feststell, Num und Rollen während einer unsichtbaren Eingabeerfassung umschalten.

Verbessert: Die neutralen Modifikatortasten (Alt, Strg und Umschalt) werden vom Hook nun besser verarbeitet, d.h. es wird nun genauer erkannt, welche Taste (links oder rechts) tatsächlich gedrückt wurde. Dies betrifft am ehesten Windows NT4.

Hinzugefügt: if Var [not] between Wert1 and Wert2, mit dem geprüft werden kann, ob der Inhalt einer Variable zwischen zwei Werten liegt (numerisch oder alphabetisch).

Hinzugefügt: if Var [not] in Wert1,Wert2,..., mit dem geprüft werden kann, ob der Inhalt einer Variable mit einem der Elemente in einer Liste übereinstimmt.

Hinzugefügt: Interne Variable A_ThisMenuItemPos, die eine Nummer enthält, die die aktuelle Position von A_ThisMenuItem innerhalb von A_ThisMenu angibt.

Hinzugefügt: Befehl Process, mit dem verschiedene Operationen an einem Prozess durchgeführt werden können: Prüft, ob er existiert; ändert seine Priorität; schließt ihn; wartet, bis er geschlossen wird. [danke AutoIt-Team] Gleichzeitig wurde der Run-Befehl verbessert, so dass nun optional die Prozess-ID eines neu gestarteten Programms abgerufen werden kann. Außerdem kann die Prozess-ID eines Fensters mit WinGet abgerufen werden.

1.0.17 - 9. August 2004

Behoben: Strg+Alt+Entf-Sicherheitsbildschirm und Win+L (Sperren des Computers), um klemmende Tasten zu verhindern. Beide Tastenkürzel waren fehlerhaft seit v1.0.16. [danke frk]

Behoben: Hotstrings für Tastaturbelegungen mit toten Tasten, wie z.B. Akut (´), Zirkumflex (^) und Gravis (`): Die Tastatur wird nun weiter korrekt funktionieren. [danke /Torben & Jordi]

Behoben: Automatisch-ersetzende Hotstrings: Endungszeichen, die vom Send-Befehl reserviert sind, wie z.B. !{}, werden nun als Teil der Ersetzung gesendet.

Behoben: Registry-Schleifen: Root-Schlüssel können nun vollständig rekursiv durchsucht werden. [danke sleepyy35]

Behoben: Der Suspend-Befehl deaktivierte manchmal dauerhaft alle Hotstrings. [danke Loneaussie]

Behoben: Die Befehle Suspend und Hotkey vermeiden nun das Zurücksetzen von Hotkeys, die der Benutzer gedrückt hält. [danke WhiteCloud]

Behoben: Input-Befehl: Eine in einer Variable enthaltene Vergleichsliste wird nicht mehr ignoriert, wenn ihr erstes Zeichen ein Komma ist. [danke Rajat]

Geändert: Input-Befehl: Zwei aufeinanderfolgende Kommas in VergleichListe ergeben nun ein direkt geschriebenes Komma. Zum Beispiel würde das Folgende ein direkt geschriebenes Komma nach dem Wort Zkette1 erzeugen: Zkette1,,,Zkette2.

Hinzugefügt: Unterbefehl Transform Deref, mit dem Variablenreferenzen und Escapesequenzen in einer Zeichenkette aufgelöst werden können. [Danke an alle Beteiligten]

Hinzugefügt: Interne Variable A_EndChar, die das Endungszeichen enthält, mit dem der Benutzer zuletzt einen nicht-automatisch-ersetzenden Hotstring ausgelöst hat. Wenn kein Endungszeichen erforderlich war (wegen der *-Option), ist diese Variable leer.

Hinzugefügt: Interne Variablen A_CaretX und A_CaretY, die die aktuelle X- und Y-Koordinate des Textcursors (Texteinfügemarke) enthalten.

1.0.16 - 15. Juli 2004

Gravierende Änderungen: Obwohl 99% der Skripte nicht betroffen sein sollten, werden in diesem Abschnitt alle Änderungen aufgeführt, die die Funktionsweise eines Skripts unerwartet ändern können. Ich habe versucht, so viele davon wie möglich in diese Version zu integrieren, um die Notwendigkeit solcher Änderungen in Zukunft zu minimieren.

Geändert: BatchLines-Standardeinstellung ist nun 10ms statt 10, wodurch längere Operationen - wie z.B. Schleifen mit vielen Wiederholungen - wesentlich schneller ausgeführt werden. Die meisten Skripte sollten weiterhin korrekt funktionieren. Wenn Sie jedoch 100%ige Kompatibilität mit der vorherigen Version von AutoHotkey wünschen, fügen Sie SetBatchLines 10 am Anfang des Skripts ein, das nicht bereits den SetBatchLines-Befehl verwendet.

Geändert: Skripte mit Hotkeys, Hotstrings oder #Persistent sind nun automatisch #SingleInstance. Mit #SingleInstance Off kann dies überschrieben werden.

Geändert: Der Input-Befehl sieht Enter nun als Zeilenvorschub (`n), nicht mehr als Wagenrücklauf (`r). Dies hat Einfluss auf den Inhalt von AusgabeVar und VergleichListe. Bitte passen Sie Ihre Skripte entsprechend an.

Geändert: Run/RunWait starten nun Nicht-EXE-Dateien (z.B. Dokumente) mit dem Standardverb statt mit "open". Da das Standardverb normalerweise "open" ist, sollten die meisten Skripte davon nicht betroffen sein.

(normale Änderungen unterhalb dieses Abschnitts)

Behoben: Ausführung von LNK-Dateien (Verknüpfungen) via Run/RunWait. [danke ealerner]

Behoben: StringUpper/StringLower funktionieren nun mit akzentuierten Buchstaben und Buchstaben mit einem ASCII-Wert größer als 127.

Behoben: Progress: Die W-Option (Fensterbreite) funktioniert nun wieder.

Behoben: Umschalt+Win-Hotkeys mit dem Send-Befehl: In einigen Fällen wurden zusätzliche Umschalt-Ereignisse erzeugt, die die Möglichkeit beeinträchtigten, einen Hotkey zweimal oder mehrmals hintereinander zu verwenden. [danke Jabberwock]

Behoben: Keine Mehrdeutigkeiten mehr mit `::, wenn es als Teil eines Hotkeys statt direkt geschrieben in einem Befehl verwendet wird. [danke Rajat]

Behoben: EingabeVars, die dynamisch in die Namen von Umgebungsvariablen aufgelöst werden. Manchmal wurde der Wert nicht aus der Systemumgebung geholt [danke Samlii]. Beispiel:

UmgebungVar = SystemRoot
StringTrimLeft, AusgabeVar, %UmgebungVar%, 0

Behoben: Wenn Alt selbst ein Hotkey ist, der beim Drücken ausgelöst wird, werden die vom Send-Befehl gesendeten Tasten nicht mehr von Alt modifiziert. [danke Wade]

Behoben: A_LoopFileDir ist nun leer für Dateien, die im Wurzelverzeichnis einer Suche mit relativem Pfad enthalten sind.

Behoben: Input-Befehl: Bei mehr als 1024 Elementen in der Vergleichsliste treten nun keine Speicherprobleme mehr auf. Außerdem wird der Befehl beim Aktivieren des Strg+Alt+Entf-Sicherheitsbildschirms nicht mehr annehmen, dass Strg und Alt dauerhaft gedrückt sind. [danke frk und beardboy]

Geändert: Der Input-Befehl ignoriert nun Strg+Backspace und andere modifizierte Backspaces. Nur ein einfaches Backspace wird als "rückgängig machen" erkannt.

Geändert: Benutzerdefinierte Menüpunkte können die OnExit-Subroutine nicht mehr unterbrechen (wie dokumentiert). Außerdem verhalten sich benutzerdefinierte Menüpunkte jetzt eher wie Hotkeys, was die Pufferung und die Fähigkeit, andere Threads zu unterbrechen, betrifft.

Verbessert: Die maximale Größe jeder Variable wurde von 16 auf 64 MB erhöht (dies erhöht nicht den Speicherbedarf eines Skripts). Dies kann zu einer konfigurierbaren Option gemacht werden, falls gewünscht.

Es kann nun ein direkt geschriebenes Doppelpunktpaar verwendet werden, indem man es mit einem Escapezeichen versieht, z.B. `::.

Verbessert: Scancode-Präfixtasten sind jetzt möglich, z.B. SC118 & Enter::MsgBox. [danke Rajat]

Verbessert: SplashImage:

Verbessert: ControlClick: Es kann nun auf eine bestimmte Koordinate innerhalb des Steuerelements geklickt werden. [danke Beastmaster]

Hinzugefügt: Unterstützung für den AutoIt v2-Befehl HideAutoItWin, der dasselbe tut wie Menu, Tray, Icon|NoIcon.

Hinzugefügt: Unterstützung für Thread-Priorität, die bestimmt, ob ein Thread andere Threads unterbrechen (oder von ihnen unterbrochen werden) kann. Die folgenden Befehle unterstützen das Setzen der Priorität: Hotkey, Menu, SetTimer, #Hotstring und Thread (setzt die Priorität des aktuellen Threads). Außerdem ist es nun möglich, Hotstrings bei ihrer Definition eine individuelle Priorität zuzuweisen.

Hinzugefügt: Befehle SendRaw und ControlSendRaw, mit denen Tastendrücke ohne Übersetzung von z.B. {Enter} in Enter, ^c in Strg+C usw. gesendet werden können.

Hinzugefügt: Interne Variablen für Monatsname (A_MMMM und A_MMM) und Tagesname (A_DDDD und A_DDD). Außerdem kann jetzt A_YYYY statt A_Year, A_MM statt A_Mon und A_DD statt A_MDay verwendet werden.

Hinzugefügt: Interne Hotstrings und automatische Ersetzung. Dies ist ein recht umfangreiches Feature und wird wahrscheinlich in den kommenden Wochen auf der Grundlage eurer Ideen und eures Feedbacks verfeinert werden.

1.0.15 - 29. Juni 2004

Behoben: Menu, MeinMenü, Show: Das Menü kann nun immer durch Klicken außerhalb des Menüs geschlossen werden. [danke Rajat]

Behoben: Progress-Befehl: Es wird nun auch ein Fenster erstellt, wenn keine Optionen angegeben sind.

Behoben: Strg+Alt+Entf auf Windows XP-Systemen, die so konfiguriert sind, dass der Sicherheitsbildschirm anstelle des Taskmanagers angezeigt wird: Strg und Alt sollten beim Zurückkehren nicht dauerhaft gedrückt sein. [danke frk]

Behoben: Die automatische Zentrierung des InputBox-Fensters war leicht verschoben, weil die Taskleiste nicht berücksichtigt wurde.

Verbessert: Die Restriktionen für folgende Befehle wurden gelockert, so dass sie in ihrem vereinfachten Parametermodus ausgeführt werden können, selbst wenn sie in einer Subroutine verwendet werden, die aus dem Körper der übergeordneten Schleife aufgerufen wird: RegRead/Write/Delete, FileAppend, FileGet/SetAttrib, FileGet/SetTime, FileGetSize/Version.

Hinzugefügt: Ein kompiliertes Skript kann nun mit Exe2Ahk dekompiliert werden (wenn das Passwort bekannt ist). [danke Jon Bennett]

Geändert: Zwei Optionen im Progress-Befehl wurden umbenannt: Benennen Sie in Ihren Skripten ZC (Balkenfarbe) in CB und ZB (Balkenhöhe) in ZH um.

Verbessert: Progress-Befehl:

Verbessert: SplashTextOn und Progress: Ihre Fenster werden nicht mehr versteckt, wenn das Hauptfenster minimiert ist.

Verbessert: Es kann nun mehr als ein ToolTip erstellt werden. [danke Rajat]

Verbessert: FileGetTime und FileGetSize funktionieren nun auch mit Dateien, die gerade in Benutzung sind, so dass sie den Zeitpunkt des letzten Zugriffs auf die Datei nicht mehr verändern.

Verbessert: StringMid kann nun auch Zeichen links von der angegebenen Position extrahieren. [danke Rajat]

Hinzugefügt: Text-zu-HTML-Umwandlung via Transform HTML. Es übersetzt Zeichen, deren ASCII-Wert größer als 127 ist, in ihre HTML-Namen (z.B. wird £ zu &pound;). Außerdem werden die vier Zeichen "&<> in &quot;&amp;&lt;&gt; und jeder Zeilenvorschub (`n) in <br>`n übersetzt (d.h. <br> gefolgt von einem Zeilenvorschub).

Hinzugefügt: Befehl ControlGetPos. [danke Jerry]

Hinzugefügt: Befehl SplitPath, mit dem ein Dateiname in Name, Verzeichnis, Endung und Laufwerk aufgeteilt werden kann.

Hinzugefügt: Befehl SplashImage, mit dem ein GIF-, JPG- oder BMP-Bild mit optionalem Begleittext angezeigt werden kann.

1.0.14 - 17. Juni 2004

Verbessert: Window Spy meldet nun immer die korrekten Namen der Steuerelemente in Multi-Bereich- oder Multi-Tab-Fenstern. Außerdem wird nun bei überlappenden Steuerelementen das Steuerelement bevorzugt, dessen Mittelpunkt dem Mauszeiger am nächsten liegt.

Verbessert: MouseGetPos kann nun auch den Namen des Steuerelements unter dem Mauszeiger abrufen. [danke jamestr]

Verbessert: FileSelectFile kann nun auch eine Speichern-Schaltfläche anstelle einer Öffnen-Schaltfläche anzeigen.

Verbessert: ToolTip blockiert nicht mehr den Mauszeiger, wenn keine Koordinaten angegeben sind.

Verbessert: Der Input-Befehl unterstützt nun auch UMSCHALT-modifizierte Endungstasten (üblicherweise Interpunktionszeichen wie z.B. :!?@). Wenn Sie ein Skript haben, das nicht-alphabetische Endungstasten verwendet, die UMSCHALT-modifizierte Gegenstücke haben (z.B. Semikolon und Doppelpunkt), müssen Sie es möglicherweise leicht anpassen.

Verbessert: If Var is [not] Typ unterstützt nun die folgenden Typen: lower, upper und xdigit.

Hinzugefügt: Befehlszeilenparameter /ErrorStdOut, mit dem alle Syntaxfehler, die den Start eines Skripts verhindern, zur Standardausgabe (stdout) gesendet werden können, anstatt ein Dialogfenster anzuzeigen. Dies befähigt umfangreiche Texteditoren wie SciTE und EditPlus, zur fraglichen Zeile zu springen. Die neue Direktive #ErrorStdOut macht dasselbe, aber um zu vermeiden, dass sie in jedes Skript eingefügt werden muss, ist es sinnvoller, den Texteditor so einzustellen, dass er den Befehlszeilenparameter verwendet. [danke Jack Horsfield & JdeB]

Hinzugefügt: Es können nun Tasten mit untypischen Scancodes gesendet werden. Verwenden Sie Send {vkXXscYYY}. [Danke an alle Beteiligten]

Hinzugefügt: Befehl Progress, mit dem ein oder mehrere Fortschrittsbalkenfenster angezeigt werden können. [danke AutoIt3-Team]

1.0.13 - 10. Juni 2004

Behoben: Hook-Hotkeys, die ein Tastaturpräfix, aber ein Maustastensuffix verwenden, wenn das Präfix auch ein Suffix ist (fehlerhaft seit v1.0.12) [danke jamestr]. Beispiel:

$a::Send, a
a & LButton::Send, b

Behoben: Interferenzen zwischen mehreren Skripten, die die Hooks gleichzeitig verwenden.

Behoben: Send {Asc nnnnn} erlaubt nun das Senden von Codes höher als 255 (Unicode). [danke Aj]

Geändert: Ein Skript geht nur dann davon aus, dass Strg/Alt/Umschalt/Win dauerhaft gedrückt sind, wenn es sie so festgelegt hat. [danke jamestr & Jon]

Verbessert: Der Text von SplashTextOn wird nun schneller aktualisiert. [danke Sds]

Verbessert: Der Send-Befehl unterstützt nun besser nicht-englische Buchstaben, Symbole und Tastaturen. Wenn ihr Probleme mit dieser Version habt, lasst es mich bitte wissen. Es werden u.a. die folgenden Zeichen unterstützt: €‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
(Mit Send {Asc nnnnn} können Sie Unicode-Zeichen erstellen, deren ANSI-Wert größer als 255 sind)

Verbessert: Der Send-Befehl interferiert seltener mit Hotkeys, die der Benutzer gedrückt hält, um sie automatisch wiederholt zu senden (hilft nur bei Hook-Hotkeys). [danke jamestr & Jon]

Verbessert: Der Menu-Befehl kann nun optional ErrorLevel verwenden, anstatt Laufzeitfehler anzuzeigen.

Hinzugefügt: Es ist nun möglich, das Symbol des Skripts während der Ausführung zu ändern. Dies betrifft sowohl das Tray- als auch InputBox-Symbol. Verwenden Sie Menu, Tray, Icon, DateiName [, SymbolNummer].

Hinzugefügt: Es ist nun möglich, den Tooltip des Tray-Symbols zu ändern, via Menu, Tray, Tip [, NeuerText] [danke beardboy].

Hinzugefügt: Interne Variablen A_ThisMenuItem und A_ThisMenu, die den Namen des zuletzt ausgewählten benutzerdefinierten Menüpunkts bzw. den Namen des Menüs, wo er ausgewählt wurde, enthalten.

Hinzugefügt: Interne Variablen A_Now und A_NowUTC, die die aktuelle Ortszeit bzw. koordinierte Weltzeit im YYYYMMDDHH24MISS-Format enthalten.

Hinzugefügt: Die folgenden internen Variablen, die die aktuelle Einstellung der zugehörigen Befehle enthalten: A_TitleMatchMode, A_TitleMatchModeSpeed, A_DetectHiddenWindows, A_DetectHiddenText, A_AutoTrim, A_StringCaseSense, A_FormatInteger, A_FormatFloat, A_KeyDelay, A_WinDelay, A_ControlDelay, A_MouseDelay, A_DefaultMouseSpeed, A_IconHidden, A_IconTip, A_IconFile und A_IconNumber.

Hinzugefügt: Befehl OnExit, mit dem eine Subroutine angegeben werden kann, die bei Beendigung des Skripts ausgeführt werden soll. Außerdem wurde die interne Variable A_ExitReason hinzugefügt, die den Grund für die Beendigung des Skripts enthält (z.B. Logoff). [danke beardboy]

Hinzugefügt: Befehl Sort, mit dem der Inhalt einer Variable in alphabetischer oder numerischer Reihenfolge sortiert werden kann.

Hinzugefügt: Die folgenden Menu-Features:

1.0.12 - 1. Juni 2004

Behoben: Der Skript-Compiler (ahk2exe) erkennt nun FileInstall-Befehle auch dann, wenn sie wie folgt auf derselben Zeile wie ein IF-Befehl stehen: IfMsgBox, Yes, FileInstall, ... [danke Rajat]

Behoben: Der AusnahmeText-Parameter aller fensterspezifischen Befehle. Zuvor war er praktisch nutzlos.

Behoben: Einige Probleme bezüglich dessen, eine Tastatur- oder Maustaste als Hotkey-Präfix und -Suffix zu verwenden. Im folgenden Beispiel wurde A beim Gedrückthalten nicht wiederholt gesendet. Außerdem wurde der Hotkey $^a:: beim Loslassen der Taste ausgelöst, obwohl er beim Herunterdrücken der Taste hätte ausgelöst werden müssen:

~a & b::MsgBox "B" wurde gedrückt, während "A" gedrückt gehalten wurde.
$^a::MsgBox ^a

Behoben: Ununterdrückte Präfixtasten, die auch als modifizierte Suffixe verwendet werden (selten): Ihre Up-Ereignisse wurden irrtümlich unterdrückt, wie im folgenden Beispiel: [danke Rajat]

~!LButton::ToolTip, Klick
~LButton & RButton::MsgBox Die rechte Maustaste wurde gedrückt, während die linke Maustaste gedrückt gehalten wurde.

Behoben: Kombinations-Hotkeys, die ein neutrales (nicht-links/rechts-spezifisches) Präfix verwenden, z.B. Control & LShift::. Außerdem werden nun auch neutrale Suffixe unterstützt, z.B. AppsKey & Control::.

Behoben: Falsche Hotkeys wurden ausgelöst, wenn eine Taste während einer Send-Operation physisch gedrückt oder gedrückt gehalten wurde (sehr selten). Dieser Fix gilt nur für Hook-Hotkeys.

Geändert: Nur für Windows NT4: Strg/Alt/Win/Umschalt werden nun spezifischer als links oder rechts statt als neutral behandelt, was eventuell die Unterstützung für einige Arten von Hook-Hotkeys verbessert.

Verbessert: Der Hotkey-Befehl kann nun optional einen Hotkey in den entgegengesetzten Zustand schalten (aktiviert oder deaktiviert). Außerdem wurden einige Optimierungen an diesem Befehl vorgenommen. [danke beardboy]

Verbessert: MouseGetPos kann nun auch die eindeutige ID-Nummer des Fensters unter dem Mauszeiger abrufen. Diese ID-Nummer kann im FensterTitel-Parameter eines fensterspezifischen Befehls durch Voranstellen der Zeichenkette ahk_id verwendet werden.

Hinzugefügt: Befehl WinGet, mit dem die eindeutige ID-Nummer eines Fensters abgerufen werden kann oder alle Fenster gemäß bestimmter Kriterien gefunden werden können.

1.0.11 - 25. Mai 2004

Behoben: FileSelectFile ändert nicht mehr das Arbeitsverzeichnis des Skripts (%A_WorkingDir%). [danke Jon]

Behoben: SoundPlay führt nicht mehr dazu, dass das Skript während Exit oder Reload hängen bleibt [danke jamestr & Larry Keys].

Behoben: Zahlen mit einer Null am Anfang wurden manchmal als oktal (Basis 8) interpretiert.

Behoben: Win und Alt blieben manchmal dauerhaft gedrückt, wenn mehrere Skripte gleichzeitig den Tastatur-Hook verwenden.

Behoben: Ein Bug in parsenden Schleifen, der nur auftrat, wenn der Trennzeichen-Parameter leer ist, nicht aber der ZuEntfernendeZeichen-Parameter. [danke Beastmaster]

Behoben: Nur für Windows NT: GetKeyState und die Tatsache, dass der Send-Befehl die Modifikatoren des Hotkeys nicht ausgelöst hat, obwohl er dies hätte tun sollen. [danke beardboy]

Geändert: Schleifen: Es kann nun eine Variable verwendet werden, die eine Floating-Point-Zahl enthält. Beispiel: Loop, %MeineFloatZahl%

Verbessert: Die Hilfedatei wurde aktualisiert, um darauf hinzuweisen, dass die verschiedenen Control-Befehle durch SetTitleMatchMode beeinflusst werden, wenn per Name statt per Klasse und Sequenznummer gesucht wird.

Verbessert: MouseMove, MouseClick und MouseClickDrag können nun den Mauszeiger relativ zu seiner aktuellen Position bewegen. [danke Rajat]

Hinzugefügt: Modus 3 (exakte Übereinstimmung) für SetTitleMatchMode. [danke Jack Horsfield]

Hinzugefügt: Befehl SetWorkingDir, mit dem das Arbeitsverzeichnis des Skripts (%A_WorkingDir%) geändert werden kann.

Hinzugefügt: Befehl WinGetClass, mit dem der Klassenname eines Fensters abgerufen werden kann. [danke compuboy_r]

Hinzugefügt: Befehl Transform, mit dem verschiedene mathematische Funktionen und Aufgaben wie ASCII-Konvertierung und bitweise Operationen ausgeführt werden können. [danke Rajat]

Hinzugefügt: Befehl Hotkey, mit dem ein Hotkey erstellt, modifiziert, aktiviert oder deaktiviert werden kann, während das Skript läuft. [Danke an alle Beteiligten]

1.0.10 - 11. Mai 2004

Behoben: Alle fensterspezifischen Befehle können nun auch mit titellosen Fenstern arbeiten. [danke Rajat]

Behoben: Wenn ein Skript genau einen Timer hat und dieser sich während eines Sleeps oder einer anderen Verzögerung selbst ausschaltet, schlief das Skript für immer. [danke beardboy]

Behoben: Mehrdeutigkeit zwischen Variablen und Befehlen. Das erste Wort einer Zeile wie der folgenden wird nun als Variable statt als Befehl interpretiert: Input = Zkette

Behoben: #Persistent funktioniert nun mit allen Arten von Skripten.

Behoben: ControlGet, AusgabeVar, Line, 1 und Control, Choose, 1.

Behoben: Einige Probleme mit Maus-Hotkeys in Skripten, die nicht den Tastatur-Hook verwenden.

Behoben: Verzögerungen von 0 sind nun genauso lang wie in v1.0.08. Dies betrifft Befehle wie SetWinDelay und SetControlDelay.

Behoben: Der Steuerelement-Parameter von ControlSetText kann nun leer gelassen werden.

Verbessert: AutoScriptWriter für AutoHotkey angepasst. Das Tool verwendet nun MouseClick statt LeftClick, verwendet Akzent statt umgekehrten Schrägstrich als Escapezeichen und speichert Dateien mit der .ahk-Endung. [danke Larry Keys]

Verbessert: Der Hotkey-Modifikator Tilde (~) funktioniert nun mit Präfixtasten. Wenn z.B. ~RButton & C::Run, Calc ein Hotkey ist, wird die rechte Maustaste ihre normale Funktion ausführen, anstatt nichts zu tun. [danke Riccardo]

Verbessert: Der Schlüssel-Parameter von IniDelete kann nun weggelassen werden, um eine komplette Sektion zu löschen. [danke beardboy & Atomhrt]

Verbessert: #SingleInstance kann nun Versuche ignorieren, ein Skript zu starten, das bereits läuft. [danke Rajat]

Verbessert: ListLines zeigt nun 200 statt 50 Zeilen an und zeigt die verstrichene Zeit zwischen den Zeilen an. [danke beardboy]

Verbessert: MouseClick, MouseClickDrag und ControlClick unterstützen nun die vierte und fünfte Maustaste und das Drehen des Mausrads. [danke skrommel]

Hinzugefügt: Interne Variable A_Cursor, die den Namen des aktuell angezeigten Mauszeigers enthält. [danke AutoIt3-Team & mgetlik]

Hinzugefügt: Interne Variable A_IsAdmin, die 1 enthält, wenn der aktuelle Benutzer Adminrechte hat, andernfalls 0. [danke AutoIt3-Team & jpk]

Hinzugefügt: Interne Variablen A_IPAddress1, 2, 3 und 4, die die IP-Adressen der ersten vier Netzwerkadapter des Computers enthalten. [danke AutoIt3-Team & Rajat]

Hinzugefügt: Befehl CoordMode, der die Verwendung von Bildschirmkoordinaten (absolute Koordinaten) anstelle von relativen Koordinaten für eine der folgenden Befehlsgruppen ermöglicht: Mouse (Move, Click, Drag, GetPos), Pixel (GetColor, Search) and ToolTip. Außerdem zeigt Window Spy nun sowohl relative Koordinaten als auch Bildschirmkoordinaten an. [Danke an alle Beteiligten]

Hinzugefügt: Befehl DriveGet, mit dem verschiedene Informationen über die Laufwerke des Computers abgerufen werden können. [danke AutoIt3-Team & Rajat]

Hinzugefügt: Befehl TrayTip, mit dem eine Sprechblase in der Nähe des Tray-Symbols angezeigt werden kann.

Hinzugefügt: Befehl Input, mit dem auf die Eingabe einer Zeichenkette durch den Benutzer gewartet werden kann. [Danke an alle Beteiligten]

Hinzugefügt: Unterstützung für Joystick-Hotkeys. Außerdem kann GetKeyState nun den Status von Joystick-Tasten, Achsenpositionen und andere Informationen abrufen. Einzelheiten finden Sie in der Tastenliste. [danke compuboy_r & Rajat]

1.0.09 - 27. April 2004

Behoben: FileSelectFile funktioniert nun unter Windows 95/98/Me/NT. [danke Mike Griffin]

Behoben: Run & RunWait unter Windows 95/98/Me: Manchmal meldeten sie irrtümlich einen Fehler.

Behoben: In Windows 95/98/NT/2000 wurden benutzerdefinierte Tray-Symbole von kompilierten Skripten überschrieben. [danke beardboy]

Behoben: Tray-Menü-Häkchen für Pause und Suspend funktionierten nicht in kompilierten Skripten.

Behoben: PostMessage/SendMessage senden die Meldung nun an das angegebene Steuerelement, nicht mehr immer an das übergeordnete Fenster.

Behoben: Hotkey-Subroutinen, die einen Laufzeitfehler verursachen, werden nun nach dem Fehler nicht mehr deaktiviert.

Behoben: Einige spezielle Skripttypen: Manchmal wurden sie ohne Grund angehalten. [danke Beastmaster]

Behoben: InputBox: ErrorLevel wird nun korrekt gesetzt, auch wenn mehrere Eingabefenster gleichzeitig existieren und nicht in der richtigen Reihenfolge geschlossen werden (selten).

Geändert: InputBox: Die Schaltflächen sind nun gleich groß, was die Größenänderung des Fensters gleichmäßiger macht. [danke beardboy & Rajat]

Geändert: Die Warnmeldungen "Hook is already installed" und "Hook is not supported (Win9x)" wurden entfernt, da die Hooks problemlos von mehr als einem Skript installiert werden können.

Verbessert: #SingleInstance hat nun einen optionalen FORCE-Parameter, mit dem das Warndialogfenster übersprungen werden kann. [danke beardboy]

Verbessert: Send-Befehl:

Verbessert: Der MouseClick-Befehl akzeptiert nun auch den ersten Buchstaben des Tastennamens (L/R/M). [danke Rajat]

Verbessert: Das Tray-Symbol wird nun neu erstellt, wenn der Explorer abstürzt.

Verbessert: InputBox hat nun zwei optionale Parameter zum Setzen eines Zeitlimits und zum Setzen einer Zeichenkette, die standardmäßig im Eingabefeld des Dialogfensters angezeigt werden soll. [danke Beastmaster]

Verbessert: FileSelectFile erlaubt nun die Angabe eines Dateinamens, der standardmäßig im Eingabefeld des Dialogfensters angezeigt werden soll. [danke Beastmaster]

Verbessert: FileSelectFolder kann nun ein Eingabefeld anzeigen, das der Benutzer zum Eintragen eines Ordnernamens verwenden kann.

Verbessert: Parsende Schleifen haben nun eine integrierte Unterstützung für das CSV-Format (Comma Separated Values, dt. kommagetrennte Werte). [danke Robert Yaklin]

Verbessert: Höhere Sicherheit für kompilierte Skripte, wodurch einige Lücken geschlossen wurden, die Einblick in den Quellcode ermöglichten. [danke Rajat]

Verbessert: StringGetPos kann nun eine andere Übereinstimmung als die erste finden. [danke Robert Yaklin]

Hinzugefügt: Ein Index für die Hilfedatei. [danke Rajat]

Hinzugefügt: Syntax- und Cliptextdateien für EditPlus im Extras-Ordner. [danke Mike Griffin]

Hinzugefügt: Direktive #Persistent, mit der man ein Nicht-Hotkey-Skript so lange laufen lassen kann, bis ein ExitApp auftritt (nützlich für Skripte, die nur Timer oder benutzerdefinierte Menüs enthalten).

Hinzugefügt: Es ist nun möglich, das Tray-Symbol während der Skriptausführung zu verstecken oder sichtbar zu machen. [danke beardboy]

Hinzugefügt: Eine Option, mit der das Hauptfenster eines kompilierten Skripts geöffnet werden kann. [danke beardboy]

Hinzugefügt: Alle fensterspezifischen Befehle unterstützen nun Fensterklassennamen. Window Spy meldet jetzt den FensterTitel, den Sie angeben müssen, um die Klasse eines Fensters zu verwenden. [danke Rajat]

Hinzugefügt: Befehle ControlMove, Control und ControlGet, mit denen verschiedene Attribute eines Steuerelements abgerufen und geändert werden können. [danke AutoIt3-Team & Rajat]

Hinzugefügt: Befehle FileRecycle und FileRecycleEmpty. [danke AutoIt3-Team & Rajat]

Hinzugefügt: Befehl ToolTip. [danke AutoIt3-Team & Rajat]

1.0.08 - 15. April 2004

Behoben: Ein kleines Speicherleck in Run und RunWait.

Behoben: Der Start des Hauptprogramms über das Startmenü: Bei älteren Versionen ist es möglich, dass Ihre AutoHotkey.ini-Skriptdatei (falls Sie eine haben) im ShellNew-Ordner Ihres Windows-Ordners abgelegt wurde. Wenn dies der Fall ist, verschieben Sie die Datei in den AutoHotkey-Ordner im Programmordner (oder wo auch immer Sie es installiert haben).

Behoben: Der Menüpunkt "Edit This Script" deaktiviert keine Hotkeys mehr, wenn das Skript bereits zum Editieren geöffnet ist.

Behoben: Timer führten manchmal dazu, dass das Tray-Menü und das Hauptmenü langsam reagierten.

Behoben: GetKeyState beim Abrufen des physischen Status der Maustasten: Der Status ist nun korrekt, wenn der Maus-Hook ohne den Tastatur-Hook installiert ist. [danke skrommel]

Behoben: Der Hotkey-Präfix Tilde (~) funktioniert nun mit allen Tasten. [danke Rajat]

Behoben: Das Skript wird nicht mehr stillschweigend beendet, wenn eine leere dynamische Variable verwendet wird. Zum Beispiel: %LeereVar% = 100 ; [danke Rajat]

Geändert: Das Tray-Symbol ist unter Windows 95/98/NT/2000 nun näher an der beabsichtigten grünen Farbe.

Geändert: Eine der Arten der Pufferung, die in Version 1.0.06 eingeführt wurde, ist nun standardmäßig ausgeschaltet, da sie in den meisten Fällen mehr schadet als nützt. Informationen zur Reaktivierung dieser Art der Pufferung und eine Erklärung finden Sie unter #MaxThreadsBuffer. [danke jamestr]

Verbessert: #InstallKeybdHook und #InstallMouseHook akzeptieren nun das optionale Wort FORCE, um das Warndialogfenster zu unterdrücken, das normalerweise angezeigt wird, wenn der Hook bereits von einem anderen Skript installiert wurde. [danke Rajat]

Verbessert: ControlSend kann Tastendrücke nun direkt an das übergeordnete Fenster eines Steuerelements senden. Nützlich für Programme wie z.B. Winamp 2.x (siehe Winamp automatisieren). [danke Rajat]

Hinzugefügt: Unterstützung für Tastaturen mit Sondertasten, die nicht in der Tastenliste enthalten sind. Wenn Ihre Tastatur solche Tasten hat, können Sie sie mit diesen Schritten in Hotkeys umwandeln (nur XP/2000/NT). [danke Rajat]

Hinzugefügt: Die Tastenliste enthält nun NumpadEnter, da diese Taste unter XP/2000/NT zu einem Hotkey gemacht werden kann. [danke Rajat]

Hinzugefügt: Unterstützung für hexadezimale Integer. Mit einem 0x-Präfix kann eine Zahl als hexadezimal gekennzeichnet werden (z.B. 0xF9). Hexadezimale Integer können überall dort verwendet werden, wo dezimale Integer erwartet werden; z.B. ist Sleep, 0xFF äquivalent zu Sleep, 255. Sie können auch SetFormat verwenden, um die Ergebnisse von mathematischen Operationen als Hexadezimalzahlen zu speichern oder zwischen Dezimal- und Hexadezimalzahlen zu konvertieren. [danke Rajat]

Hinzugefügt: Eine Option für den Installer, die Ziehen-und-Ablegen von Skriptdateien ermöglicht. Diese Option ist standardmäßig deaktiviert, da sie zu unbeabsichtigten Skriptstarts führen kann. [danke Rajat]

Hinzugefügt: Rajats Syntaxdatei und Clip-Bibliothek für TextPad im Extras-Ordner, der über das Startmenü zugänglich ist. Verwenden Sie das mitgelieferte Skript, um diese Features zu installieren. Hoffentlich werden in den kommenden Monaten ähnliche Add-ons für andere Editoren entwickelt (Helfer sind willkommen).

Hinzugefügt: Unterbefehl Menu Rename.

Hinzugefügt: Befehle PostMessage/SendMessage.

Hinzugefügt: Befehl RunAs, mit dem Prozesse im Rahmen der Berechtigungen eines anderen Benutzers erstellt werden können. [danke Jonathan Bennett & Robert Yaklin]

Hinzugefügt: Befehl WinSet, mit dem ein Fenster "immer im Vordergrund" oder transparent gemacht werden kann.

1.0.07 - 2. April 2004

Behoben: Der Send-Befehl kann nun unter Windows 95/98/Me Tasten wie {Down}, {Home} und {PgUp} korrekt senden. [danke S_R]

Behoben: AUT-Skripte sehen die interne Variable A_ScriptDir nun so, als würde sie einen umgekehrten Schrägstrich am Ende enthalten (aus Kompatibilitätsgründen). Außerdem wurde der AUT-in-AHK-Konverter geändert, so dass diese Anpassung während der Konvertierung vorgenommen wird. [danke Rajat]

Behoben: Send, {}} (eine direkt geschriebene geschweifte Endklammer senden). [danke Rajat]

Behoben: Das Programm wird nicht mehr stillschweigend beendet, wenn ein UMSCHALT-modifiziertes reserviertes Symbol wie # oder ^ als Hotkey definiert wurde. [danke Rajat]

Behoben: ShiftAltTab, wenn es einer Ziffernblocktaste zugewiesen wurde. [danke Rajat]

Geändert: Die folgenden Befehle melden keine Laufzeitfehler mehr, wenn ihnen negative Parameter übergeben werden: StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, ControlClick und MouseClick. [danke Rajat]

Geändert: Suspend-Befehl: Hotkey-Subroutinen, deren erste Zeile Suspend, On ist, werden nicht mehr vor einer Suspension geschützt. [danke Jay D. Novak]

Geändert: MsgBox zeigt standardmäßig nur noch "Press OK to continue" an, wenn es explizit mit null Parametern aufgerufen wird. [danke Rajat]

Geändert: Die Symbole des Programms wurden mit den stylischen Symbolen von Rajat ersetzt. Es ist schwer, es allen recht zu machen, aber ich hoffe, dass die meisten es als eine Verbesserung gegenüber den langweiligen alten Symbolen ansehen (wo ich im Grunde nur ein großes violettes H gezeichnet habe).

Verbessert: RegRead, RegWrite und RegDelete unterstützen nun den Standardwert eines Schlüssels, den RegEdit als "(Standard)" anzeigt. Außerdem können die Namen der Root-Schlüssel jetzt abgekürzt werden (z.B. HKLM). [danke Rajat]

Hinzugefügt: Befehl Menu, mit dem das Tray-Symbol-Menü des Skripts angepasst werden kann, indem vorhandene Menüpunkte entfernt oder neue hinzugefügt werden. [danke beardboy & Rajat]

1.0.06 - 25. März 2004

Behoben: Die folgenden Probleme nur unter Windows 95/98/Me [danke Jay D. Novak]:

Behoben: Das Tray-Symbol bleibt nicht mehr schwarz, wenn eine neue Hotkey-Subroutine gestartet wird, während der aktuelle Thread pausiert ist. Es wird aber wieder schwarz, wenn die neue Subroutine beendet ist.

Behoben: Gosub und Goto, die zu einem Label springen, dessen Name in einer Variablenreferenz enthalten ist. Im folgenden Beispiel wird die Variable nun jedes Mal aufgelöst, wenn die Zeile ausgeführt wird, nicht mehr nur beim ersten Mal: Gosub, %MeinLabel%

Behoben: Der Tastatur-Hook wird nun immer automatisch als Reaktion auf #InstallKeybdHook und für Skripte installiert, die nur untypische Hotkeys wie CapsLock & e:: enthalten. [danke bobhurt]

Geändert: Installer: 1) Er registriert nun die EXE-Dateien, die mit dem Programm geliefert werden, so dass bei direkter Ausführung kein vollständiger Pfad mehr angegeben werden muss; 2) Er erstellt seine Programmgruppe nun für alle Benutzer, nicht mehr nur für den aktuellen Benutzer; 3) Er merkt sich nun korrekt das letzte Installationsverzeichnis (beim Überschreiben einer älteren Version).

Geändert: Programmstart für Skripte, die den Tastatur-Hook verwenden, so dass der aktuelle Status von Strg/Alt/Umschalt/Win berücksichtigt wird.

Geändert: Wenn der automatische Ausführungsbereich sehr lange dauert (oder nie sein Ende erreicht), werden die Standardwerte für Einstellungen wie SetKeyDelay nun nach 100 Millisekunden wirksam. In der Regel ist es am besten, die Standardwerte im oberen Bereich des Skripts zu ändern. Dies ist nur für Skripte wichtig, die Hotkeys oder Timer enthalten.

Verbessert: SetBatchLines akzeptiert nun optional Millisekunden statt Zeilen. Die Millisekunden-Methode wird für Skripte empfohlen, wenn Geschwindigkeit und Zusammenarbeit wichtig sind. Zum Beispiel verhindert eine Einstellung von 10ms in den meisten Systemen, dass das Skript mehr als 50 % der ungenutzten Prozessorzeit beansprucht. Dadurch können Skripte schnell ausgeführt werden, während gleichzeitig ein hohes Maß an Zusammenarbeit bei rechenintensiven Tasks wie z.B. Videospiele und Videoaufnahme/-wiedergabe aufrechterhalten wird.

Verbessert: Bessere Pufferung von Hotkeys während einer kritischen Operation (z.B. Send) und wenn die #MaxThreadsPerHotkey-Einstellung eines Hotkeys überschritten wurde. Mit anderen Worten, in den meisten Fällen wird das Programm Hotkey-Tastendrücke zwischenspeichern, bis sie ausgeführt werden können. Dies hat den Nebeneffekt, dass das Gedrückthalten eines Hotkeys (zur automatischen Wiederholung) reaktionsschneller wird. [danke Jay D. Novak]

Verbessert: Höhere Performanz von Hook-Skripten, die hohe oder unendliche BatchLines haben.

Hinzugefügt: AutoScriptWriter (Makrorekorder) im Hauptinstaller. Ich glaube, es gibt ein Problem mit der Save-Schaltfläche (das hoffentlich bald behoben sein wird), aber ansonsten scheint es gut zu funktionieren. [danke Larry Keys]

Hinzugefügt: Befehl SetTimer, für den in den letzten 10 Tagen die meiste Entwicklungszeit aufgewendet wurde. Timer sind nützlich, weil sie asynchron laufen, d.h. sie werden in einem bestimmten Intervall (Frequenz) ausgeführt, egal ob das Skript gerade auf ein Fenster wartet, ein Dialogfenster anzeigt oder mit einer anderen Aufgabe beschäftigt ist. Timer können u.a. verwendet werden, um eine Aktion während der Abwesenheit des Benutzers auszuführen (in Verbindung mit %A_TimeIdle%) oder um unerwünschte Fenster sofort wieder zu schließen, wenn sie erscheinen. Es gibt viele weitere Anwendungsmöglichkeiten.

1.0.05 - 15. März 2004

Behoben: Kein Absturz mehr bei den Befehlen Exit und ExitApp.

Behoben: Strg+Alt+Entf unter Windows 2000/NT: Strg und Alt sollten beim Zurückkehren nicht dauerhaft gedrückt sein. [danke Julian Doak]

Behoben: GetKeyState: Der physische Status der Maustasten wird nun korrekt gemeldet, wenn der Maus-Hook installiert ist.

Behoben: StringLower akzeptiert nun wie vorgesehen den optionalen Parameter T (Titelschreibung). [danke beardboy]

Geändert: Umgang mit der Zwischenablage: Das Programm versucht nun 800 statt 400 Millisekunden lang, die Zwischenablage zu öffnen, bevor es aufgibt und ein Warndialogfenster anzeigt. [danke Jason Payam Ahdoot]

Geändert: Variablennamen werden im Hauptfenster nun in alphabetischer Reihenfolge aufgelistet. Als Nebeneffekt sind Arrays nun performanter.

Geändert: FileAppend kann nun optional die Datei im Binärmodus statt im Textmodus schreiben. Meines Wissens hat dies nur zur Folge, dass jeder Zeilenumbruch als einzelner Zeilenvorschub (`n) statt als Wagenrücklauf-Zeilenvorschub-Paar (`r`n) geschrieben wird.

Verbessert: InputBox ermöglicht nun die Angabe einer benutzerdefinierten Größe und Position. Außerdem kann die Fenstergröße nun durch Ziehen des Rahmens geändert werden. [danke David Nuttall & beardboy]

Hinzugefügt: Der Send-Befehl unterstützt nun {Sleep}. Außerdem kann Sleep nun als Hotkey verwendet werden, auch wenn Sleep auf einigen Tastaturen möglicherweise damit nicht kompatibel ist.

Hinzugefügt: Interne Variable %A_Index%, die die Nummer der aktuellen Schleifenwiederholung enthält. Die erste Wiederholung ist 1, die zweite 2 und so weiter.

Hinzugefügt: Interne Variable %A_IdleTimePhysical%, die %A_IdleTime% ähnelt, außer dass sie künstliche Eingaben ignoriert (also solche, die von Skripten und Programmen erzeugt werden) und daher besser geeignet ist, um festzustellen, ob der Benutzer tatsächlich anwesend ist. Diese Variable ist äquivalent zu %A_IdleTime%, wenn kein Tastatur- und Maus-Hook installiert ist.

Hinzugefügt: Befehl StringSplit, mit dem eine Zeichenkette mittels bestimmter Separatoren in mehrere Teilzeichenketten aufgeteilt werden kann.

Hinzugefügt: Neue Schleifenvariante: Zeichenkette parsen. Ruft Teile (Felder) einer Zeichenkette nacheinander ab (ähnlich wie StringSplit, benötigt aber weniger Speicher).

Hinzugefügt: Neue Schleifenvariante: Datei lesen. Ruft die Zeilen einer Textdatei nacheinander ab (performanter als FileReadLine).

1.0.04 - 6. März 2004

Behoben: Win+L (Hotkey zum Sperren des Computers): Win wird nicht mehr als gedrückt gesehen, wenn Sie sich wieder anmelden. [danke Jack Horsfield].

Behoben: Reload-Feature: Wenn das Skript beim Neuladen ein Dialogfenster wie z.B. MsgBox anzeigt, blieb die Anwendung hängen. [danke Christian Ziemski]

Behoben: Der automatische Ausführungsbereich (der obere Teil des Skripts vor dem ersten Hotkey-Label): Wenn er mindestens ein normales Nicht-Hotkey-Label hat, wurde in einigen Fällen das erste Hotkey-Label des Skripts (sofern vorhanden) als Teil des automatischen Ausführungsbereichs ausgeführt. [danke Robert Yaklin]

Verbessert: SoundSetWaveVolume akzeptiert nun +/- als Präfix. Diese Präfixe erhöhen oder verringern die Lautstärke relativ zum aktuellen Pegel. Außerdem akzeptiert der Befehl nun einen optionalen zweiten Parameter, mit dem das Zielgerät angegeben werden kann (für Systeme mit mehr als einem Soundgerät).

Verbessert: Die folgenden Befehle wurden verbessert, um Tastatur- und Mausverzögerungen zu reduzieren, die durch lange Operationen eines Hook-Skripts verursacht werden: FileDelete, FileCopy, FileMove, FileReadLine, FileSetAttrib, FileSetTime, Send und ControlSend.

Verbessert: StringLower/Upper unterstützen nun die Umwandlung einer Zeichenkette in Titelschreibung. Zum Beispiel von "VOM Winde VERWEHT" zu "Vom Winde Verweht".

Hinzugefügt: Remote-Registry-Unterstützung für Registry-Schleifen, RegRead, RegWrite und RegDelete. Schreiben Sie einfach den Computernamen vor dem Root-Schlüssel. Zum Beispiel: \\workstation01:HKEY_LOCAL_MACHINE

Hinzugefügt: Interne Variable %A_TimeIdle%, die die Zeit in Millisekunden enthält, die seit der letzten Eingabe via Tastatur, Maus usw. verstrichen ist. Dies ist nützlich, um festzustellen, ob der Benutzer abwesend ist. Diese Variable ist leer, wenn das Betriebssystem älter als Windows 2000 oder XP ist.

Hinzugefügt: Befehl UrlDownloadToFile, mit dem eine Datei aus dem Internet heruntergeladen werden kann. [danke Jonathan Bennett & Jason Payam Ahdoot]

Hinzugefügt: Befehl SoundGetWaveVolume, mit dem die aktuelle Wave-Wiedergabelautstärke abgerufen werden kann.

Hinzugefügt: Befehle SoundGet und SoundSet, mit denen nahezu jede Einstellung eines Soundgeräts abgerufen bzw. geändert werden kann. Zum Beispiel Stummschaltung, Mikrofon, Master, Synth, Aux und Line-In.

1.0.03 - 1. März 2004

Behoben: Send {Asc nnnnn}: Nullen am Anfang von nnnnn werden nicht mehr ignoriert.

Behoben: RShift (rechte Umschalt-Taste): Hotkeys mit dieser Taste erzeugten manchmal einen falschen Umschaltstatus. [danke Jesper James Jensen]

Geändert: HotkeyModifierTimeout-Standardeinstellung ist nun 50 statt 100, um das Risiko zu verringern, dass Modifikatortasten (Strg, Alt, Umschalt und Win) hängen bleiben. [danke Jesper James Jensen]

Geändert: FileCopy in AutoIt2-Skripten (.aut) setzt ErrorLevel nun auf 1, nicht mehr auf die Anzahl der Dateien, die nicht kopiert werden konnten (verbessert die Kompatibilität).

Hinzugefügt: Befehl FileCreateShortcut, mit dem eine Verknüpfung (LNK-Datei) erstellt werden kann. [danke Jonathan Bennett]

Hinzugefügt: Unterstützung für Registry-Enumeration, mit der die Inhalte eines Schlüssels nacheinander via Registry-Schleife abgerufen werden kann. RegRead, RegWrite und RegDelete wurden ebenfalls verbessert, so dass sie nun optional das aktuelle Registry-Element der Schleife verwenden, wenn sie von einer Registry-Schleife umschlossen sind. [danke Robert Yaklin]

1.0.02 - 26. Februar 2004

Behoben: Ein Bug, der durch die vorherige Version entstanden ist: In seltenen Fällen mussten die Modifikatoren (Strg, Alt, Umschalt und Win) eines Hotkeys losgelassen und erneut gedrückt gehalten werden, um nach einer Send-Operation wieder wirksam zu werden. Dies ist nun in den meisten Fällen nicht mehr notwendig.

Geändert: Das Programm wird nun auch dann gestartet, wenn sein Tray-Symbol nicht erstellt werden kann (z.B. weil ein anderes Shell-Programm als der Explorer läuft). [danke Ian Oliver]

Geändert: Beim Programmstart wird das gerade aktive Fenster nicht mehr gestört (es bleibt aktiv).

Verbessert: Der Send-Befehl unterstützt nun auch die Zeichen ø und Ø. [danke Jesper James Jensen]

1.0.01 - 24. Februar 2004

Behoben: EnvSubs Datum-Zeit-Berechnung: Wenn eine neuere Zeit von einer älteren subtrahiert wird, wird das Ergebnis nun korrekt als negative Zahl ausgegeben, nicht mehr als große positive Zahl.

Behoben: Ein seltenes Problem mit bloßen Modifikatortasten, die als Hotkeys verwendet werden. Wenn z.B. RControl ein Hotkey ist, blieb Strg manchmal nach einer Send-Operation mit Strg dauerhaft gedrückt.

Behoben: Meldung von Syntaxfehlern: In seltenen Fällen, wie z.B. Else If-Anweisungen, wurde nicht die Zeile, in der der Syntaxfehler auftrat, sondern die Zeile darüber gemeldet.

Hinzugefügt: Interne Variable %0%, die die Anzahl der an das Skript übergebenen Befehlszeilenparameter enthält. Dies verbessert auch die Kompatibilität mit AutoIt2. [danke BoBo]

Hinzugefügt: Befehl BlockInput, der den Benutzer daran hindert, etwas mit der Tastatur, der Maus oder einem anderen Eingabegerät zu tun. [danke Jonathan Bennett & beardboy]

1.0.00 FINAL - 16. Februar 2004

Dies scheint eine stabile Version zu sein. Ich hatte eine Menge Hilfe beim Testen, also vielen Dank an alle, besonders an Robert Yaklin. Es sind noch viele weitere Verbesserungen geplant; die ersten könnt ihr in etwa 2 Wochen erwarten. Und nun zu den Änderungen...

Behoben: Mehrere Probleme mit der Zahlenerkennung, vor allem dahingehend, dass Zahlen nun mit einem Pluszeichen oder einem Dezimalpunkt beginnen dürfen. Zum Beispiel werden .95, -.95 und +.95 nun als Floating-Point-Zahlen erkannt. [danke Romano]

Behoben: ListLines stürzt nicht mehr ab, wenn es Befehle anzeigt, deren optionale Ausgabevariablen weggelassen wurden.

Behoben: Eine seltene Absturzbedingung mit großen Variablen, denen ein null-langer Wert zugewiesen wurde.

Behoben: Reload unter Windows 95. [danke Robert Yaklin]

Behoben: IF-Anweisungen: Leerraumzeichen können nun bei Operatoren weggelassen werden. Zum Beispiel ist folgendes nun wie vorgesehen gültig: if var<>0

Behoben (erneut): Die Umschalttaste bleibt nicht mehr hängen, wenn sie in Kombination mit Ziffernblocktasten verwendet wird. Hoffentlich ist das Problem damit weitgehend gelöst. [danke Robert Yaklin]

Behoben: RegRead beim Lesen von REG_BINARY-Werten: ErrorLevel wird bei Erfolg nun auf 0 gesetzt.

Behoben: RegWrite beim Schreiben eines leeren REG_DWORD-Wertes: Statt einer willkürlichen Zahl wird nun eine Null geschrieben.

Geändert: SplashTextOn: Die in der vorherigen Version versehentlich eingefügte Menüleiste wurde aus dem Fenster entfernt. Außerdem ist das Fenster auf den meisten Systemen nun ein paar Pixel breiter und höher, damit der Rand immer korrekt angezeigt wird. [danke Jonathan Bennett und Robert Yaklin]

Geändert: SetFormat: Die Angabe von 0 entspricht der Angabe von 0.0. [danke Robert Yaklin]

Geändert: Fensteraktivierende Befehle, wie z.B. WinActivate, hängen sich nicht mehr auf, wenn sich das zuvor aktive Fenster oder das Zielfenster aufgehängt hat. Außerdem werden diese Befehle nun zunächst einen sanfteren Ansatz versuchen. Sie können den sanften Ansatz mit #WinActivateForce überspringen, um z.B. zu verhindern, dass die Schaltflächen in der Taskleiste anfangen zu blinken, wenn mehrere Fenster schnell hintereinander aktiviert werden.

Geändert: IniWrite und IniDelete setzen nun ErrorLevel bei Misserfolg auf 1 und bei Erfolg auf 0. Aus Kompatibilitätsgründen gilt das nicht für AutoIt2-Skripte (.aut).

Verbessert: RegRead und RegWrite unterstützen nun vollständig REG_MULTI_SZ. [danke Jonathan Bennett]

Verbessert: ControlClick: Es klickt nun genau in der Mitte des Steuerelements, was die Zuverlässigkeit bei einigen Steuerelementen verbessern könnte. Außerdem wurde eine weitere Änderung vorgenommen (SetActiveWindow), die die Zuverlässigkeit weiter erhöhen könnte. Darüber hinaus wurde ein neuer optionaler Parameter hinzugefügt, mit dem die Maustaste gedrückt gehalten oder losgelassen werden kann. [danke Jonathan Bennett]

Verbessert: Send kann nun mit folgenden Zeichen umgehen: ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ£ƒáíóúñѪº¿¬­½¼¡«» [danke Jonathan Bennett]

Verbessert: Send und ControlSend: Eine Taste kann nun gedrückt gehalten oder losgelassen werden. Beispiel: Send, {tab down}{b down}{b up}{tab up}

Verbessert: ControlSend sendet Umschalt, Strg, Alt und Win nun zuverlässiger. [danke Jonathan Bennett]

Verbessert: FileRemoveDir kann nun rekursiv löschen (ähnlich wie deltree). [danke Jonathan Bennett]

Verbessert: FileCopy setzt nun ErrorLevel bei Misserfolg auf die Anzahl der Dateien, die nicht kopiert werden konnten, und bei Erfolg auf 0. Der Kopiervorgang wird bei Misserfolg nicht abgebrochen (z.B. wenn die Zieldateien bereits existieren und das Überschreiben-Flag OFF ist).

Verbessert: FileMove unterstützt nun Platzhalter und verhält sich wie FileCopy bezüglich ErrorLevel und Fortsetzen-bei-Fehler. Es unterstützt jedoch nicht mehr das Verschieben von Verzeichnissen. Verwenden Sie stattdessen FileMoveDir. [danke Jonathan Bennett]

Verbessert: FileSelectFile wurde um zwei optionale Parameter erweitert: Anzeigetext (Anweisungen für den Benutzer) und Filter (zum Beispiel: *.txt). Wie bei allen neuen Parametern für alte Befehle können sie nicht in Skripten mit der Dateiendung .aut verwendet werden (aus Kompatibilitätsgründen).

Hinzugefügt: FileCopyDir und FileMoveDir. [danke Jonathan Bennett]

Hinzugefügt: Interne Variable A_Tab, die ein Tabulatorzeichen enthält (ähnlich wie A_Space).

Hinzugefügt: Neue Typen für "if Var is <Typ>": integer, digit, alpha, alnum und space.

0.2.25 BETA - 9. Februar 2004

Ich hoffe, das ist die letzte Betaversion vor dem Release. Alle Testskripte laufen einwandfrei, auch komplexe Skripte, die über 72 Stunden ohne Speicherverlust oder andere Probleme liefen. Die einzigen wichtigen Fixes, die noch ausstehen, sind für ControlSend (Probleme mit Groß- und Kleinschreibung) und FileMove (Unterstützung von Platzhaltern). Wenn ihr in den nächsten Tagen Zeit habt, probiert bitte diese Version aus, insbesondere die folgenden Änderungen und Neuerungen.

Behoben: FileSelectFile: Manchmal wurde das Dialogfenster nicht angezeigt, meist bei einer Mehrfachauswahl. [danke Steve Drown]

Behoben: Hoffentlich hängt sich das Skript nicht mehr auf, wenn es beendet wird, während es ein Dialogfenster wie z.B. MsgBox anzeigt.

Behoben: #InstallKeybdHook und #InstallMouseHook erzwingen nun die Installation des Hooks, auch wenn keine Hotkeys vorhanden sind, die ihn benötigen. Dies ist nützlich, um den Gültigkeitsbereich dessen, was der KeyHistory-Befehl anzeigt, zu erweitern.

Verbessert: AutoIt3 Window Spy zeigt nun an, welcher Fenstertext nur im langsamen Modus von SetTitleMatchMode verfügbar ist. Außerdem werden die Desktopkoordinaten der Maus weggelassen, da sie von AutoHotkey nicht verwendet werden.

Geändert: KeyLog-Befehl:

Geändert: Der Befehl ControlLeftClick wurde in ControlClick umbenannt, damit auch andere Maustasten unterstützt werden. Ein einfaches Suchen und Ersetzen von ControlLeftClick durch ControlClick in Ihren Skripten sollte ausreichen, da der Befehl die linke Maustaste vermutet, wenn keine angegeben ist.

Verbessert: Das Umschalt-Ziffernblock-Problem: Umschalt sollte nicht so oft hängen bleiben, wenn diese Taste in Kombination mit einer multifunktionalen Ziffernblocktaste verwendet wird. Dies ist eine Kompensation für die vom Tastaturtreiber erzeugten Umschalt-Ereignisse, die sicherstellen, dass Umschalt nicht logisch unten ist, wenn eine Ziffernblocktaste gedrückt oder losgelassen wird. [danke Robert Yaklin]

Hinzugefügt: Befehl SetMouseDelay, mit dem die Verzögerung, die nach jeder Mausbewegung oder jedem Mausklick auftritt, geändert werden kann. Standardeinstellung ist 10.

Hinzugefügt: Direktiven #MaxThreads und #MaxThreadsPerHotkey. Letzteres verwendet standardmäßig 1, d.h. es können keine neuen Instanzen einer Hotkey-Subroutine gestartet werden, wenn diese Subroutine bereits läuft. Dieses Standardverhalten wird von den meisten Benutzern bevorzugt, da es verhindert, das der Hotkey versehentlich doppelt ausgelöst wird. Es ist daher eher unwahrscheinlich, dass Sie Ihre Skripte ändern müssen.

Hinzugefügt: Befehl FileInstall, mit dem zusätzliche Dateien beim Kompilieren eines Skripts hinzugefügt werden können.

Hinzugefügt: Direktive #Include: Standardmäßig wird eine Datei nur einmal inkludiert, auch wenn sie mehrmals im Skript zum Inkludieren angegeben ist. Mit #IncludeAgain kann eine Datei mehrmals inkludiert werden.

Hinzugefügt: Menüleiste im Hauptfenster für bequemen Zugriff auf Features wie das Anzeigen von Variablen, Zeilen, Hotkeys und Tastenverlauf.

0.2.24 BETA - 1. Februar 2004

Geändert (erneut): Mathematische Operationen mit unsauberen Zahlen (z.B. 123abc) entsprechen nun dem Verhalten von AutoIt2: Zeichenketten, die mit einer Zahl beginnen, sind bei einer Berechnung diese Zahl, z.B. wird 123abc als 123 behandelt. Zeichenketten, die nicht mit einer Zahl beginnen, werden bei einer Berechnung als Null behandelt, z.B. 123 + abc = 123. Diese Änderung hat keinen Einfluss auf das Verhalten von IfEqual, IfGreater und IfLess: Sie vergleichen Zeichenketten immer noch alphabetisch, wenn eine davon nicht rein numerisch ist, was sich leicht von AutoIt2 unterscheidet.

Hinzugefügt: Syntax, mit der geprüft werden kann, ob eine Variable eine reine Zahl, eine Floating-Point-Zahl oder einen Zeitwert enthält. Beispiel:

if var is [not] number
if var is [not] float
if var is [not] time
{
    ...Aktionen...
}

0.2.23 BETA - 31. Januar 2004

Behoben: Mathematische Operationen mit Zahlen, die mit Leerzeichen enden: Wenn eine Variable so etwas wie 123 (also mit einem Leerzeichen am Ende) enthält, wurde sie bei einer Berechnung als nicht numerisch behandelt, was dazu führte, dass sie leer gemacht wurde. Es tut mir leid, wenn das jemanden verwirrt hat; die vorherige Version war die Ursache des Problems.

0.2.22 BETA - 30. Januar 2004

Behoben (für Windows 95): Das Abrufen von Umgebungsvariablen sollte nun funktionieren. Das Problem wurde durch das undokumentierte Puffergrößenlimit von Win95 in GetEnvironmentVariable() verursacht. [danke Robert Yaklin]

Behoben: RWin (rechte Win-Taste): Bei Verwendung mit einem Hook-Hotkey erschien manchmal das Startmenü.

Behoben: Eine unbeabsichtigte 10ms-Verzögerung wurde entfernt, die jedes Mal auftrat, wenn ein Hotkey ausgelöst wurde (fehlerhaft seit v0.2.20).

Geändert: Mathematische Operationen (EnvAdd/Sub/Mult/Div): Die Ausgabevariable wird nun leer gemacht, wenn eine der Eingabevariablen nicht rein numerisch ist. Dieses Verhalten führt nicht nur dazu, dass fehlerhafte Skripte konsistenter fehlschlagen, sondern kann auch verwendet werden, um schnell festzustellen, ob eine Variable rein numerisch ist oder nicht.

Verbessert: RegRead und RegWrite unterstützen nun REG_BINARY. [Wie bei so vielen anderen Dingen auch, danke ich Jon, dem Autor von AutoIt]

Verbessert: Handhabung von ALT-Tasten: Wenn eine dieser Tasten sowohl als Präfix (das andere Hotkeys modifiziert) als auch als Suffix (ist selbst ein Hotkey, dessen Aktion beim Loslassen der Taste ausgelöst wird) verwendet wird, hat sie nicht mehr den Nebeneffekt, ein Menü im aktiven Fenster indirekt aufzurufen. Seltsamerweise war dies auf meinem System nie ein Problem, bis heute, als eine mysteriöse Veränderung eintrat, die die Notwendigkeit dieser Anpassung offensichtlich machte.

Hinzugefügt: Floating-Point-Unterstützung: Jede Zahl, die einen Dezimalpunkt enthält, wird als Floating-Point-Zahl behandelt. Jede mathematische Operation mit mindestens einer Floating-Point-Zahl liefert ein Floating-Point-Ergebnis. Außerdem kann der Random-Befehl nun optional Floating-Point-Zahlen generieren. Hinweis: Integer-Berechnung wird weiterhin verwendet, wenn keine Floating-Point-Zahlen involviert sind, da Tests gezeigt haben, dass Skripte mit rechenintensiven Schleifen mehr als 5-mal schneller laufen, wenn 64-Bit-Integer statt Floating-Point-Zahlen verwendet werden (getestet mit Pentium II und Athlon XP).

Verbessert: Integer-Berechnung wurde von 32-Bit auf 64-Bit umgestellt. 32-Bit ist nur etwa 40% schneller als 64-Bit bei Skripten mit rechenintensiven Schleifen auf Prozessoren wie Pentium II und Athlon XP. Für reale Skripte ist der Unterschied jedoch so unbedeutend, dass eine größere Flexibilität die Kosten rechtfertigt. 64-Bit ermöglicht auch, dass %A_TickCount% und gelesene DWORD-Registry-Werte korrekt als positive Zahlen ausgegeben werden und dass die genaue Anzahl der Bytes in Dateien größer als 2 GB abgerufen werden kann.

Hinzugefügt: Befehl SetFormat, mit dem Floating-Point-Zahlen in einem anderen Format als dem Standardformat gespeichert werden können (z.B. die Zahl mit Leerzeichen/Nullen füllen oder ihre Anzahl von Dezimalstellen ändern).

Hinzugefügt: Explorer-Rechtsklick >>Neu >>AutoHotkey Script.

0.2.21 BETA - 26. Januar 2004

Behoben: Ein Schleifen-Bug, der durch die vorherige Version entstanden ist: Wenn eine Schleife direkt unter einem IF oder ELSE steht (also nicht von einem Block umschlossen ist), war der Ausführungsablauf falsch, was meist dazu führte, dass Teile des Skripts fälschlicherweise doppelt ausgeführt wurden. [danke Steve Drown]

Behoben: Das benutzerdefinierte Symbol-Feature des Ahk2Exe-Skript-Compilers.

Verbessert: Variablennamen können nun die folgenden Satzzeichen enthalten (vorher war nur der Unterstrich erlaubt): # _ @ $ ? [ ]

Hinzugefügt: Die Tatsache wurde dokumentiert, dass MsgBox eine andere Standardschaltfläche als die erste haben kann (256 = zweite, 512 = dritte).

Hinzugefügt: Die Möglichkeit, Datums- und Zeitwerte zu vergleichen, zu addieren und zu subtrahieren. EnvSub und EnvAdd haben nun einen optionalen dritten Parameter, der entweder Seconds, Minutes, Hours oder Days sein kann (oder jeweils nur der erste Buchstabe dieser Wörter). Das Datum-Zeit-Format ist YYYYMMDDHH24MISS und wird von allen Datum-Zeit-Befehlen verwendet. Beispiel:

var1 = 20050126
var2 = 20040126
EnvSub, Var1, %Var2%, days
MsgBox, %Var1%  ; Das Ergebnis ist 366, weil 2004 ein Schaltjahr ist.
var1 =  ; Leer machen, damit unten stattdessen der aktuelle Zeitstempel verwendet wird.
Var1 += 31, days
MsgBox, %Var1%  ; Das Ergebnis ist das Datum in 31 Tagen.

0.2.20 BETA - 21. Januar 2004

Hinzugefügt: Der erste Entwurf der Hilfedatei und des Installers ist endlich fertig. Sie sind in der aktuellen Version enthalten. [Vielen Dank an Robert Yaklin für seine Hilfe mit dem Installer.] Der Installer wird .ahk-Dateien mit der installierten AutoHotkey.exe verknüpfen, nicht mit einer alten Version, die Sie vielleicht haben.

Behoben: Ein durch 0.216 entstandener Bug hat verhindert, dass #HotkeyModifierTimeout korrekt funktioniert. Skripte ohne installierten Tastatur-Hook kompensieren nun korrekt Tasten, die der Benutzer während des Send-Befehls gedrückt hält.

Behoben: Der dritte Parameter (WertName) von RegDelete kann nun weggelassen werden. Wenn weggelassen, wird der komplette Unterschlüssel gelöscht.

Behoben: Skript-Compiler (Ahk2Exe) stürzt nicht mehr ab, wenn ein benutzerdefiniertes Symbol angegeben wird. Das benutzerdefinierte Symbol-Feature funktioniert leider immer noch nicht. Hoffentlich funktioniert es in der nächsten Version.

Geändert: Der Befehl GroupCloseAll wurde entfernt. Verwenden Sie stattdessen GroupClose, MeineGruppe, A.

Geändert: IfWin[Not]Active und WinWait[Not]Active setzen nun das Zuletzt Gefundene Fenster. [danke Robert]. Wenn eines Ihrer Skripte das Feature "Zuletzt Gefundenes Fenster" verwendet, müssen Sie es wahrscheinlich anpassen.

Geändert: Die Standardfensterverzögerung ist nun 100 statt 250 und die Standardmausgeschwindigkeit ist nun 2 statt 10 (d.h. der Mauszeiger bewegt sich nun standardmäßig schneller). AutoIt2-Skripte (.aut) verwenden immer noch eine Standardfensterverzögerung von 500, aber eine Standardmausgeschwindigkeit von 2 statt 1 (da Jon gesagt hat, dass Werte kleiner als 2 manchmal nicht mit MouseClickDrag funktionieren). Wenn jemand der Meinung ist, dass diese Werte zu aggressiv sind, lasst es mich wissen.

Verbessert: MsgBox hat nun eine smarte Kommabehandlung: Kommas müssen nicht mehr mit einem Escapezeichen versehen werden (`,), es sei denn, Sie verwenden den Zeitlimit-Parameter des Befehls.

Verbessert: KeyHistory-Befehl: Er zeigt nun die vom Skript erzeugten Tastaturereignisse im Fenster an (statt gar nichts), wenn kein Tastatur-Hook installiert ist.

Verbessert: RegRead ignoriert nun den zweiten Parameter (WertTyp), wenn der Befehl nur vier Parameter hat. Im 5-Parameter-Modus kann der zweite Parameter - der nicht verwendet wird und nur aus Gründen der Abwärtskompatibilität mit AutoIt2 vorhanden ist - leer gelassen werden.

Verbessert: Das Programm hat nun eine bessere Reaktionsfähigkeit (Tray-Menü, Hauptfenster usw.), wenn SetBatchLines sehr hoch oder unendlich ist. Dies reduziert auch Tastatur- und Mausverzögerungen auf ein akzeptables Niveau, wenn solche Skripte Tastatur- oder Maus-Hooks verwenden.

Verbessert: FileSetAttrib und FileSetTime sind nun in der Lage, Unterordner rekursiv zu durchwandern. Obwohl alle Unterordner rekursiv durchwandert werden, selbst wenn ihre Namen nicht dem Platzhaltermuster entsprechen, bleiben die Attribute der Unterordner selbst unverändert, es sei denn, OrdnerEinbeziehen ist 1 und der Ordnername entspricht dem Muster (*.* entspricht allen).

Hinzugefügt: Datei-Schleifen haben nun u.a. einen Modus zum Durchwandern von Unterordnern.

Hinzugefügt: Befehl SetControlDelay. Ähnlich wie SetWinDelay, außer dass damit die Verzögerung eingestellt werden kann, die nach jedem Control-Befehl erfolgt, der ein Steuerelement ändert, namentlich ControlClick, ControlFocus und ControlSetText. Diese Befehle sind von Natur aus etwas unzuverlässig; diese Verzögerung scheint ein wenig zu helfen. Die Standardeinstellung ist 20 (Millisekunden). In älteren Versionen hatte SetWinDelay Einfluss auf diese Befehle.

Hinzugefügt: Befehl SoundPlay. Neben WAV-Dateien kann der Befehl auch MP3, AVI usw. abspielen, je nachdem, welche Features auf Ihrem Betriebssystem installiert sind.

Hinzugefügt: Operatoren ++ und --, die den Wert der Zielvariable um 1 erhöhen bzw. verringern. Beispiele: count++, ++count, count--, --count

Hinzugefügt: Unterstützung für Arrays (AutoIt2-Stil). Dies wurde erreicht, indem der Name einer Variable zur Laufzeit aufgelöst werden kann, anstatt wie bisher ausschließlich zur Kompilierzeit. Mit anderen Worten, Befehle, die den Namen einer Variable (ohne umschließendes %%) erwarten, erlauben nun, dass dieser Variablenname Referenzen auf andere Variablen enthält. Beispiel:

; In das Array schreiben:
i = 0
loop, 5
{
    i++
    Random, Array%i%, 1, 100  ; Eine Zufallszahl in jedes Element einfügen.
}

; Aus dem Array lesen:
i = 0
loop
{
    i++
    StringTrimRight, Element, Array%i%, 0
    if Element =
        break ; Ende des Arrays erreicht.
    MsgBox, %Element%
}

0.219 BETA - 12. Januar 2004

Behoben: Suspend-Befehl: Beim Ausschalten der Suspension werden alle Hotkeys wieder aktiviert. Vorher blieben Hook-Hotkeys manchmal deaktiviert.

Geändert: Suspend-Befehl: Die Tastatur- und Maus-Hooks werden nie entfernt, wenn die entsprechenden Direktiven (#InstallKeybdHook und #InstallMouseHook) im Skript vorhanden sind.

Geändert: InputBox-Befehl: Bei Nicht-AutoIt2 (.aut)-Skripten wird ErrorLevel nun auf 1 und die Ausgabevariable auf den eingegebenen Wert gesetzt, wenn der Benutzer die Abbrechen-Schaltfläche drückt. Bei AutoIt2-Skripten ist das Verhalten gleich: ErrorLevel bleibt unverändert, und die Ausgabevariable wird leer gemacht, wenn der Benutzer auf Abbrechen drückt, auch wenn Text eingegeben wurde.

Geändert: FileDelete setzt nun ErrorLevel auf die Anzahl der Dateien, die nicht gelöscht werden konnten (wenn ein Platzhaltermuster angegeben wurde).

Geändert: KeyHistory-Befehl: Der Dateiname wird nun im zweiten Parameter angegeben. Er funktioniert nun wie folgt:

KeyHistory  ; wie zuvor (Kurzprotokoll im Fenster anzeigen)
KeyHistory, On, C:\KeyHistory.txt  ; Protokollierung einschalten, optional mit Angabe der Datei, in die protokolliert werden soll.
KeyHistory, Off  ; Protokollierung ausschalten.
KeyHistory, Toggle [, Dateiname]  ; Auf den entgegengesetzten Zustand schalten (On oder Off).

Verbessert: KeyHistory ist nun performanter beim Protokollieren in eine Datei, indem es die Datei geöffnet lässt, anstatt sie bei jedem Tasten- oder Mausereignis zu schließen und wieder zu öffnen. Dies sollte auch den "Verschleiß" der Festplatte verringern. Der einzige Nachteil ist, dass beim Betrachten einer geöffneten Protokolldatei aufgrund der Dateipufferung veraltete Inhalte angezeigt werden können. Um das zu umgehen, schalten Sie die Protokollierung vorübergehend aus, bevor Sie die Datei betrachten.

Verbessert: Run und RunWait sind nun performanter, da sie CreateProcess() vor ShellExecute() versuchen und nicht mehr umgekehrt. Ich glaube, CreateProcess() ist viel schneller.

Geändert: Die Befehle FileToggleHidden und FileSetDateModified wurden entfernt. Die Ersatzbefehle finden Sie unten.

Hinzugefügt: Die folgenden Befehle. Klicken Sie auf einen Link für Details:

0.218 BETA - 7. Januar 2004

Hinzugefügt: Ein Skript-Compiler (macht aus einem Skript eine EXE) auf vielfachen Wunsch. Dank des offenen und modularen Programmierstils von Jon (AutoIt-Autor) war dies viel einfacher als erwartet. Erhältlich auf der Download-Seite. Hinweis: Derzeit werden .aut-Skripte nicht unterstützt, da das kompilierte Skript keine Möglichkeit hat, herauszufinden, ob es im AutoIt2-Modus (umgekehrter Schrägstrich als Escapezeichen) oder im AutoHotkey-Modus (` als Escapezeichen) ausgeführt werden soll. Sie können aber, falls nötig, Ihre .aut-Datei automatisch in .ahk umwandeln, indem Sie sie in "was-auch-immer.aut.ahk" umbenennen und dann mit AutoHotkey.exe ausführen.

Hinzugefügt: Unterstützung für Befehlszeilenparameter, die als Skriptvariablen verwendet werden können. Das Befehlszeilenformat ist:

Hinzugefügt: Direktive #NoTrayIcon. Fügen Sie sie irgendwo in das Skript ein, um die Anzeige des Tray-Symbols zu deaktivieren. Wenn Sie diese Direktive in einem Skript mit Hotkeys verwenden, ist es ratsam, einen Hotkey an den ExitApp-Befehl zu binden. Andernfalls gäbe es keine einfache Möglichkeit, das Programm zu beenden (ohne dabei den Computer neu zu starten oder den Prozess zu beenden). Beispiel: #x::ExitApp

0.217 BETA - 5. Januar 2004

Behoben: Variablenzuweisung (SetEnv und der neue Stil, Var = Wert) behandelt Escapesequenzen nun korrekt. Zeilen wie die folgende sollten jetzt richtig funktionieren: Ergebnis = %Ergebnis% %Farbe% `%`n

Behoben: Umschalt blieb in seltenen Fällen dauerhaft gedrückt, wenn Ziffernblock-Hotkeys den Send-Befehl zum Senden von Umschalt aufrufen. Der Fix ist im Grunde ein Workaround für die Tatsache, dass das Betriebssystem, der Treiber oder das BIOS physische UMSCHALT-Ereignisse generiert, um sicherzustellen, dass Tastendrücke von multifunktionalen Ziffernblocktasten (Numpad1-9 und Dot) niemals erfolgen, wenn Umschalt unten ist. Nochmals vielen Dank an Robert Yaklin für seine Hilfe.

Behoben: Ziffernblock-Hotkeys (z.B. NumpadEnd), die ein Gegenstück auf der Haupttastatur haben (z.B. End): Das Gegenstück löst den Hotkey nicht mehr aus.

Hinzugefügt: Befehle IniRead/Write/Delete:

Hinzugefügt: Befehl EnvUpdate, der laut der AutoIt3-Dokumentation: "Aktualisiert die Systemumgebung. Das ist dasselbe wie, als würde man sich aus- und wieder einloggen." Der Befehl setzt ErrorLevel bei Erfolg auf 0, andernfalls auf 1. Hinweis: Aufgrund der Funktionsweise dieses Features besteht eine geringe Chance, dass Tastatur- und Mausereignisse bei der Ausführung des Befehls verzögert werden, wenn der Tastatur- oder Maus-Hook installiert ist.

Hinzugefügt: Interne Variable A_Space, die ein Leerzeichen enthält. Dadurch entfällt die Notwendigkeit, einen Workaround zu verwenden, um eine Variable dazu zu bringen, ein Leerzeichen zu enthalten. Beispiel:

Zkette = Zeichenkette mit Leerzeichen
IfInString, Zkette, %A_SPACE%
    MsgBox, Ein Leerzeichen wurde gefunden.

; Um jedoch einer Variable nur ein Leerzeichen zuzuweisen, muss AutoTrim deaktiviert werden, damit die Zuweisung keine Leerzeichen am Anfang und Ende entfernt:
AutoTrim, Off
MeinLeerzeichen = %A_SPACE%

Hinzugefügt: Befehl Edit, der das aktuelle Skript zum Editieren öffnet, oder ein vorhandenes Editorfenster aktiviert, dessen Fenstertitel darauf hindeutet, dass die Datei geöffnet sein könnte. Dieser Befehl entspricht der Auswahl des Menüpunkts "Edit This Script" im Tray-Menü.

Hinzugefügt: Befehl Pause und zugehöriger Tray-Menüpunkt. Im Gegensatz zu Suspend, das die Hotkeys vollständig deaktiviert, pausiert Pause die aktuell laufende Subroutine (wenn keine vorhanden ist, hat Pause keine Wirkung). Für den ersten Parameter des Befehls können die Werte ON, OFF und TOGGLE (auf entgegengesetzten Zustand schalten) verwendet werden. Wenn der erste Parameter weggelassen wird, gilt standardmäßig TOGGLE, ähnlich wie beim Suspend-Befehl. Neue Hotkeys können noch gestartet werden, während das Skript pausiert ist, aber sobald ihre Subroutinen enden, bleibt die unterbrochene Subroutine darunter pausiert. Pause, Off entpausiert nur die zuletzt pausierte Subroutine. Jede Subroutine kann unabhängig von den anderen pausiert werden. Die Farbe des Tray-Symbols wechselt zu schwarz, wenn die aktuelle Subroutine des Skripts pausiert ist.

Verbessert: Suspend-Feature:

Verbessert: Das Verhalten von #SingleInstance-Skripten, wenn der Benutzer versucht, eine weitere Instanz zu starten: Es wird nun ein Dialogfenster angezeigt, das den Benutzer fragt, ob die alte Instanz beibehalten oder mit einer neuen Instanz ersetzt werden soll.

Verbessert: PixelSearchs Ausgabevariablen sind nun optional. Außerdem wurde ein optionaler Parameter hinzugefügt, der eine Zahl im Bereich von 0 bis 255 akzeptiert, um die erlaubte Anzahl von Variationsnuancen in beide Richtungen für die Intensität der Rot-, Grün- und Blauanteile der Farbe zu bestimmen. Dieser Parameter hilft bei variierenden Farben. Beispiel: PixelSearch, FundX, FundY, %X1%, %Y1%, %X2%, %Y2%, %Farbe%, 10 ; Erlaubt 10 Variationsnuancen. Hinweis: Wenn Sie 255 Variationsnuancen angeben, werden alle Farben übereinstimmen. Standardmäßig gelten 0 Variationsnuancen.

0.216 BETA - 29. Dezember 2003

Behoben: Ein Bug, der durch die vorherige Version entstanden ist: Neue Hotkeys konnten nicht ausgelöst werden, wenn das Skript ein Dialogfenster wie z.B. MsgBox auf dem Bildschirm angezeigt hat.

Behoben: PixelSearch akzeptiert nun auch negative Koordinaten.

Geändert: Skriptverhalten: Die Standardwerte von Einstellungen wie KeyDelay und WinDelay werden nun für jede neue Hotkey-Subroutine wirksam. Sie können den automatischen Fortsetzungsbereich (der aus den Befehlen am Anfang des Skripts vor dem ersten Hotkey-Label besteht) verwenden, um die Standardeinstellungen nach Belieben zu ändern. Das heißt, wenn ein Hotkey gedrückt wird, verwendet die Subroutine nun immer vorerst die Standardwerte der folgenden Einstellungen:

Hinzugefügt: StringUpper und StringLower. Beispiel: StringUpper, AusgabeVar, EingabeVar. Hinweis: Wie bei allen Befehlen dieser Art können EingabeVar und AusgabeVar die gleiche Variable sein.

Hinzugefügt: Neue interne Variablen:

0.215 BETA - 18. Dezember 2003

Behoben: Kein Absturz mehr, der bei Variablenzuweisungen mit mehr als einer Quelle auftrat, z.B. Anweisungen wie clipboard = %clipboard%%EineVar%.

Behoben: Kein Absturz mehr beim Starten eines Skripts in Verbindung mit der in Version 0.212 eingeführten "else if"-Unterstützung.

Behoben: Die Zwischenablage wurde in seltenen Fällen blockiert (offen gehalten), z.B. wenn die Zwischenablage mit SplashTextOn angezeigt wird.

Behoben: PixelGetColor akzeptiert nun auch negative Koordinaten.

Behoben: Ein sehr obskures Problem: Ein ununterdrückter Maus-Hotkey wie ~LButton:: führte dazu, dass sich das Tray-Menü und die Kontextmenüs des Hauptfensters seltsam verhielten.

Hinzugefügt: Befehl SoundSetWaveVolume, mit dem die Wiedergabelautstärke für Dateien wie WAV und MP3 eingestellt werden kann. Zum Beispiel: SoundSetWaveVolume, 50 ; Eine Zahl im Bereich von 0 bis 100.

Hinzugefügt: Befehl EnvSet, der benötigt wird, da AutoHotkey im Gegensatz zu AutoIt2 seine Variablen nicht in der Systemumgebung speichert. Das liegt zum einen daran, dass die Performanz darunter leiden würde, und zum anderen daran, dass das Betriebssystem die Größe jeder Umgebungsvariable auf 32 KB begrenzt (AutoHotkey-Variablen, einschließlich der Zwischenablage, können praktisch unbegrenzt groß sein). ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt. Zum Beispiel: EnvSet, AutGUI, Beliebiger Text für die Variable.

Hinweis: Ein EnvGet-Befehl ist nicht erforderlich, da die Dereferenzierung einer leeren oder undefinierten Variable dieses Verhalten automatisch auslöst. Im folgenden Beispiel wird der Wert der ProgramFiles-Variable (sofern ungesetzt) aus der Systemumgebung geholt: ZielDatei = %ProgramFiles%\Irgendetwas\setup.ini

Geändert: Das Feature, wonach bei einem Syntaxfehler zur richtigen Zeile in Notepad oder Metapad gesprungen wird (wenn das Skript bereits in einem solchen Editor geöffnet ist), wurde deaktiviert, da es nicht zuverlässig zu funktionieren scheint. Falls jemand von euch dieses Feature benutzt hat, lasst es mich wissen. Später plane ich, Unterstützung für ein externes Skript wie "RunWhenSyntaxError.ahk" hinzuzufügen, das automatisch ausgeführt wird, wenn der Start eines Skripts aufgrund eines Syntaxfehlers fehlschlägt.

Verbessert: PixelSearch setzt ErrorLevel nun auf 2, wenn ein anderer Fehler als "Farbe nicht gefunden" auftritt. Es setzt ErrorLevel immer noch auf 1, wenn die Farbe nicht gefunden wurde, oder auf 0, wenn sie gefunden wurde.

0.214 BETA - 16. Dezember 2003

Hinzugefügt: Befehl WinMenuSelectItem (ähnlich wie der AutoIt3-Befehl). Die Menüsuche ist nicht Groß-/Kleinschreibung-sensitiv (d.h. Datei->Speichern ist dasselbe wie datei->speichern). Außerdem ist es nicht erforderlich, das Und-Zeichen (&) für unterstrichene Buchstaben in einem Menüpunkt anzugeben. Zum Beispiel:

WinMenuSelectItem, Unbenannt - Editor,, Datei, Speichern
WinMenuSelectItem, Unbenannt - Editor,, 1&, 3&  ; Wie oben, aber mit Menüpunktpositionen statt -texten.

Hinweis: Die Positionsmethode existiert, um Menüs zu unterstützen, die keine Texte enthalten (z.B. Bilder statt Texte). Position 1 ist der erste Menüpunkt (z.B. das Dateimenü). Menütrennlinien zählen bei der Positionsbestimmung ebenfalls als Menüpunkte.

Hinzugefügt: Befehl ControlFocus. Zum Beispiel:

ControlFocus, (StrlmntName oder StrlmntClassNN), FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Hinweis: Wie bei allen Befehlen, die FensterTitel/Text verwenden, ist es möglich, den Buchstaben A als Titel anzugeben, um das aktive Fenster zu verwenden, oder alle vier Fensterparameter leer zu lassen, um das zuletzt gefundene Fenster von Befehlen wie IfWinExist und WinWait zu verwenden.

Verbessert: Die folgenden Befehle setzen nun ErrorLevel auf 1, wenn ein unkritischer Fehler (z.B. ein nicht-existierendes Fenster oder Steuerelement) die Ausführung des Befehls verhindert hat: ControlSend, ControlClick, ControlSetText, ControlGetText, StatusBarGetText, WinGetText.

Verbessert: StatusBarWait setzt ErrorLevel nun auf 2, wenn ein Fehler aufgetreten ist (z.B. wenn das Zielfenster nicht existiert oder keine Statusleiste hat). Aber wie gehabt wird ErrorLevel auf 1 gesetzt, wenn der Befehl das Zeitlimit überschritten hat, oder auf 0, wenn der angegebene Text in der Statusleiste gefunden wurde.

Verbessert: Der KeyHistory-Befehl unterstützt nun die Protokollierung von Tastatur- und Maustasten in eine Datei. Er funktioniert immer noch auf die alte Weise (KeyHistory-Fenster anzeigen), wenn keine Parameter angegeben werden. Aber er verhält sich anders, sobald ein Parameter übergeben wird. Beispiele:

KeyHistory, C:\KeyHistory.txt  ; Dateiname angeben und Dateiprotokollierung einschalten.
KeyHistory, Off     ; Dateiprotokollierung ausschalten.
KeyHistory, On      ; Dateiprotokollierung einschalten, wobei der Dateiname von der vorherigen Nutzung dieses Befehls verwendet wird.
KeyHistory, Toggle  ; Dateiprotokollierung umschalten (auf den entgegengesetzten Zustand schalten).

Der Tastatur- oder Maus-Hook muss installiert sein, damit die Protokollierung funktioniert. Durch Hinzufügen der folgenden Zeilen können Sie die bedingungslose Installation der Hooks erzwingen:

#InstallKeybdHook
#InstallMouseHook

Die Protokolldatei ist eine Textdatei, die folgende tabulatorgetrennte Felder enthält:

Beispiel einer Protokolldatei:

59	015	15.0	 	u	Y	C:\
5B	15B	0.1	 	u	Left Windows
9E	000	1.1	 	d	WheelDown

9F	000	0.4	 	d	WheelUp
A4	038	0.4	 	d	Alt
09	00F	0.1	 	d	Tab
09	00F	0.2	 	u	Tab
A4	038	0.1	 	u	Alt	 Unbenannt - Editor
A3	11D	1.4	 	d	Right Ctrl
26	148	0.1	h	d	Up	C:\
26	148	0.1	s	u	Up
A3	11D	0.0	 	u	Right Ctrl
A3	11D	1.6	 	d	Right Ctrl
2E	153	0.1	h	d	Delete
A3	11D	0.0	i	u	Right Ctrl
A4	038	0.0	i	d	Alt
73	03E	0.0	i	d	F4
73	03E	0.0	i	u	F4
A4	038	0.0	i	u	Alt
A3	11D	0.0	i	d	Right Ctrl

Hinweis: Jeder Tastendruck erzeugt zwei Zeilen, eine für down und eine für up.

0.213 BETA - 15. Dezember 2003

Behoben: Hotkeys, die LWin/RWin (Win) als Modifikator haben und den Send-Befehl verwenden: In einigen Fällen wurde Win nach dem Send fälschlicherweise in den gedrückten Zustand versetzt. [Danke an Robert Yaklin für die Entdeckung dieses Problems.] Übrigens müsst ihr nicht den Sleep-Befehl verwenden, um dem Benutzer Zeit zu geben, die Modifikatortasten (Strg, Alt, Umschalt und Win) bei Hotkeys, die den Send-Befehl verwenden, loszulassen. Der Send-Befehl weiß, auf welchen Status er die Modifikatoren für jede zu sendende Taste setzen muss.

Behoben: Hotkeys, die Windows-Hotkeys wie z.B. Win+E und Win+R überschreiben: Das Startmenü erscheint nicht mehr beim Loslassen von Win.

Hinzugefügt: PixelGetColor und PixelSearch, die die gleichnamigen Befehle von AutoIt3 nachahmen. Diese können helfen, den Status von untypischen Steuerelementen zu erkennen und Vollbildanwendungen wie z.B. Videospiele zu automatisieren. Einzelheiten finden Sie in der Dokumentation.

Kleine Änderung: Die vorherige Änderung (siehe weiter unten) in Bezug auf "Escapezeichen, die am Ende einer Zeile oder vor einem Leerraumzeichen stehen" wurde rückgängig gemacht. In Übereinstimmung mit dem AutoIt2-Verhalten werden nun Escapezeichen, die nichts auslösen, entfernt (also unsichtbar gemacht).

Kleine Änderung: WinClose verwendet nun WM_CLOSE statt SC_CLOSE (Alt+F4) und verhält sich somit wie in AutoIt2 und AutoIt3. Die neue Methode ist etwas weniger sanft zum Zielfenster als die vorherige Methode, funktioniert aber wahrscheinlich bei mehr Fenstertypen.

Es gibt jetzt ein automatisiertes Verfahren, um eine .aut-Datei in eine .ahk-Datei zu konvertieren, so dass Sie die neuen Features in vollem Umfang nutzen können (einige der neuen Features, wie z.B. neu hinzugefügte Befehlsparameter, sind in .aut-Skripten deaktiviert, um die Kompatibilität mit AutoIt2 zu verbessern). Die Konvertierung ändert das Escapezeichen einfach in ` anstelle von \. Dies ist schwieriger, als es klingt, da Escapesequenzen in jeder Zeile genau angeordnet sein müssen, weshalb ein simples Suchen und Ersetzen in einem Texteditor nicht möglich ist. Dieses automatisierte Verfahren sollte sich um alles kümmern:

  1. Fügen Sie .ahk an das Ende einer existierenden .aut-Datei an, so dass der Dateiname mit .aut.ahk endet
  2. Führen Sie diese Datei mit AutoHotkey aus, das eine neue Datei im selben Verzeichnis mit der Endung -NEW.ahk erstellt, anstatt die Datei auszuführen. Dies ist die konvertierte Version. Die ursprüngliche Version bleibt unverändert.
  3. Wenn Sie #EscapeChar im Skript verwendet haben, entfernen Sie es in der konvertierten Version.

Nach der Konvertierung eines Skripts von .aut nach .ahk sollte man vor allem auf Befehle achten, die in .ahk-Dateien zusätzliche Parameter akzeptieren, in .aut-Dateien jedoch nicht. Wenn Sie in einem Parameter, der früher (in AutoIt2) der letzte Parameter war, jetzt aber nicht mehr der letzte Parameter ist, escapezeichenlose Kommas verwendet haben, werden diese Kommas als Trennzeichen interpretiert. Zum Beispiel:

Msgbox, 0, Titel, Text, mit, Kommas

Im obigen Beispiel würde AutoIt2 die Zeichenkette "Text, mit, Kommas" als letztes Argument interpretieren. Da AutoHotkey jedoch einen neuen Parameter (Zeitlimit) für die MsgBox unterstützt, würde die Zeichenkette "mit, Kommas" als Zeitlimit interpretiert werden (was in diesem Fall als Ladezeitfehler behandelt würde). Hier ein weiteres Beispiel:

WinActivate, Titel, Text mit direkt geschriebenem Komma, hier.

Das obige Beispiel wäre nach der Konvertierung problematisch, da die Zeichenkette "hier." als neuer AusnahmeTitel-Parameter interpretiert würde.

Hier eine Liste von Befehlen, die sowohl neue Parameter akzeptieren als auch problematisch sein können:

Hinweis #1: Auch wenn sie neue Parameter in .ahk-Dateien akzeptieren, sind Befehle wie IfWinExist in Bezug auf die obigen unproblematisch, da das Programm den Unterschied zwischen den AutoIt2- und AutoHotkey-Methoden erkennen kann. Auch die WinWait-Befehlsgruppe sollte kein Problem darstellen.

Hinweis #2: Wie immer kann AutoHotkey die meisten AutoIt2-Dateien (.aut) direkt ausführen, ohne sie in eine .ahk-Datei konvertieren zu müssen.

0.212 BETA - 8. Dezember 2003

Unterstützung hinzugefügt, so dass Befehle nun auf derselben Zeile wie ihr ELSE stehen können. Beispiele:

if x = 1
    Gosub, a1
else if x = 2
    Gosub, a2
else IfEqual, x, 3
{
    Gosub, a3
    Sleep, 1
}
else Gosub, a4  ; Befehle können unmittelbar nach einem ELSE folgen.

; Auch OK:
IfEqual, y, 1, Gosub, b1
else {
    Sleep, 1
    Gosub, b2
}

; Aber das ist illegal:
if x = 1 {  ; Ungültig: Dies würde X mit der Zeichenkette "1 {" vergleichen, anstatt { als den Beginn eines Blocks zu behandeln.
    Sleep, 1
    MsgBox, Test
}

; Eine legale Alternative:
IfEqual, x, 1, {
    Sleep, 1
    MsgBox, Test
}

Diese Neuerung wurde hauptsächlich eingeführt, um "else if"-Anweisungen zu ermöglichen, die die Lesbarkeit des Skripts verbessern können.

Die Bedingungen für das Auslösen des Warndialogfensters "More than X hotkeys have been received in the last Y milliseconds" (Mehr als X Hotkeys wurden in den letzten Y Millisekunden empfangen) wurden gelockert (Danke an CyberSlug für die Idee), so dass die Autowiederholungsfunktion der Tastatur auf den meisten Systemen verwendet werden kann, ohne eine Warnung auszulösen. Außerdem können Sie dieses Verhalten mit den folgenden Direktiven anpassen:

#HotkeyInterval 2000 ; Das ist der Standardwert (in Millisekunden).
#MaxHotkeysPerInterval 50 ; Das ist der Standardwert.

Achten Sie darauf, den obigen Wert nicht zu großzügig zu wählen, denn wenn Sie versehentlich eine Endlosschleife mit Tastendrücken erzeugen (via Send-Befehl, der versehentlich andere Hotkeys auslöst), kann es passieren, dass Ihr Computer aufgrund vieler schneller Tastaturereignisse nicht mehr reagiert. Beispiel für eine Endlosschleife von Tastendrücken: ^c::Send, ^c.

Wenn Sie so etwas wie oben realisieren wollen, ohne eine Endlosschleife auszulösen, fügen Sie ein $ zur Hotkey-Definition hinzu (z.B. $#y::). Das $ weist den Hotkey an, den Hook zu verwenden, wodurch unsere SEND-Befehle nicht als Quelle für Hotkeys verwendet werden. Der Hook hat einige Nachteile, weshalb er nicht immer verwendet wird: 1) Nur eine einzige Instanz des Programms sollte den Hook installiert haben; 2) Der Hook kann die Systemleistung geringfügig beeinträchtigen.

Das Hotkey-Präfix ~ (Tilde) wurde verbessert (siehe Dokumentation), so dass es sowohl mit modifizierten Hotkeys (d.h. bei denen Strg, Alt, Umschalt oder Win gedrückt werden muss) als auch mit unmodifizierten Hotkeys funktioniert. Die einzige Ausnahme sind Maustasten, die unmodifiziert sein müssen, um "nicht unterdrückt" zu sein.

Alle fensterspezifischen Befehle unterstützen nun den Buchstaben A als ersten Parameter, um anzugeben, dass das aktive Fenster verwendet werden soll. Obwohl das Ergebnis bei Befehlen wie WinWait, WinActivate, IfWinExist und IfWinActive immer im Voraus "bekannt" ist (da das aktive Fenster per Definition aktiv ist und existiert), sorgt diese Änderung für mehr Konsistenz. So kann beispielsweise der erste Parameter zur Laufzeit bedingt in den Buchstaben A aufgelöst werden, was die Flexibilität erhöht. Außerdem kann mit dieser Änderung das Zuletzt Verwendete Fenster einfach zurückgesetzt werden. Zum Beispiel:

#y::  ; WIN+Y
Run, notepad
WinWait, Editor
WinActivate  ; Das zuletzt gefundene Fenster aktivieren.
; ...Angenommen, es ist etwas Zeit vergangen und wir sind uns nicht mehr sicher, welches Fenster das "zuletzt verwendete" ist.
WinActivate, Editor
WinWait, a  ; ***** Macht das aktive Fenster zum "zuletzt verwendeten" Fenster.
; Nun können wir Befehle wie den folgenden ausführen, ohne das Fenster anzugeben (auch performanter):
WinMinimize
ControlSend, , Ein Text`, der im Editor erscheint`, egal ob aktiv oder nicht (ControlSend kann das "zuletzt verwendete" Fenster verwenden; außerdem sendet es standardmäßig an das oberste Steuerelement).
WinMaximize
WinActivate
return

Neuer Befehl:

#HotkeyModifierTimeout 100  ; Wert in Millisekunden, Standard 100

Das obige Beispiel ist nur relevant, wenn das Skript keinen Tastatur-Hook installiert hat (Sie können mit dem KeyHistory-Befehl herausfinden, ob Ihr Skript den Hook verwendet). Der Hook behält den Überblick darüber, welche Modifikatortasten (Alt, Strg, Win und Umschalt) der Benutzer physisch gedrückt hält. Zum Beispiel:

^!a::Send, abcdefg

Für das obige SEND müssen Strg und Alt losgelassen werden, damit die Tasten richtig gesendet werden können. Nach Ausführung von SEND weiß das Programm, sofern der Hook installiert ist, ob es Strg und Alt sicher wieder in den gedrückten Zustand versetzen kann. Wenn kein Hook installiert ist und das SEND mehr als HotkeyModifierTimeout Millisekunden nach Beginn der Hotkey-Subroutine endet, werden die Modifikatortasten nicht wiederhergestellt, d.h. Sie müssen sie loslassen und erneut drücken, wenn Sie dieselbe (oder eine andere) Taste erneut modifizieren wollen. Hinweis: Sie können den Wert auf -1 setzen, um die Modifikatoren nie das Zeitlimit überschreiten zu lassen, oder auf 0, um die Modifikatoren immer das Zeitlimit überschreiten zu lassen. Sie können auch sicherstellen, dass der Tastatur-Hook installiert ist, was das obige Beispiel überflüssig macht, indem Sie die Zeile #InstallKeybdHook irgendwo im Skript einfügen. Wenn der Tastatur-Hook nicht installiert ist, kann auch eine Reduzierung der Tastenverzögerung (via SetKeyDelay) auf 0 oder -1 helfen, da SEND dann schneller ausgeführt wird.

Behoben: Manchmal wurde das Warndialogfenster "Another instance of this program already has the keyboard or mouse hook installed" (eine andere Instanz dieses Programms hat den Tastatur- oder Maus-Hook bereits installiert) grundlos angezeigt, wenn der Menüpunkt "Reload This Script" verwendet wird. Die Ursache dafür war scheinbar die Tatsache, dass das Betriebssystem die vorherige Instanz und den Mutex nur langsam aus dem Speicher entlädt. Das Programm zeigt diese Warnung nun nicht mehr an, wenn ein gerade laufendes Skript neu gestartet wird.

Hinzugefügt: Hotkey-Modifikationssymbol $ (z.B. $^c::): Es bewirkt, dass eine alternative (leistungsfähigere) Methode zur Implementierung des Hotkeys verwendet wird. Verwenden Sie dieses Symbol, wenn die Standardmethode nicht richtig funktioniert (z.B. wegen rekursiver Verwendung des Send-Befehls). Technisch gesehen verwendet diese Methode den Tastatur-Hook anstelle von RegisterHotkey(), um den Hotkey zu implementieren.

Behoben: GetKeyState: Alle Tasten funktionieren nun. Zuvor funktionierten Tasten mit Ziffernblock-Äquivalenten, wie Entf und Ende, nicht.

Verbessert: GetKeyState unterstützt nun ein optionales drittes Argument, das der Buchstabe T (Status einer umschaltbaren Taste wie Feststell) oder P (physischer Tastenstatus) sein kann. Wenn das Argument weggelassen wird oder leer ist, wird der logische Status der Taste zurückgegeben. Der logische Status sollte der sein, den das Betriebssystem und die Vordergrundanwendung für diese Taste vermuten, während der physische Status angibt, ob die Tastatur- oder Maustaste physisch unten oder oben ist. Zum Beispiel:

GetKeyState, Status, CapsLock, T  ; Setzt "Status" auf D, wenn FESTSTELL-Taste AN ist, andernfalls auf U.

Derzeit ist der "physische" Status immer derselbe wie der logische Status, wenn keine Hooks installiert sind, weil Windows XP (und wahrscheinlich auch NT/2k, aber möglicherweise nicht Win9x) den folgenden Code nicht richtig zu implementieren scheint. Wenn jemand einen Workaround hat, würde ich ihn gerne hören:

#define IsPhysicallyDown(vk) (GetAsyncKeyState(vk) & 0x80000000)

Der Tastatur-Hook wird installiert, um z.B. links/rechts-Modifikator-spezifische Hotkeys, Platzhalter-Hotkeys, "SetNum/Scroll/CapsLock, AlwaysOn/Off" und das Überschreiben von Explorer-Hotkeys wie Win+E zu unterstützen. Der Hook wird nicht automatisch installiert, da er die Systemleistung leicht beeinträchtigt und nicht für die gleichzeitige Verwendung durch mehrere Skripte vorgesehen ist (Sie können die Installation jedoch erzwingen). Um festzustellen, welche Hooks (Maus und Tastatur) installiert sind, weisen Sie einem Hotkey den KeyHistory-Befehl zu.

Durch Hinzufügen der folgenden Zeilen können Sie die bedingungslose Installation von Hooks erzwingen:

#InstallKeybdHook ; Dieser Hook wird benötigt, um die Zuverlässigkeit beim Wiederherstellen von Modifikatoren mit dem Send-Befehl zu maximieren (siehe oben).
#InstallMouseHook ; Diesen Hook verwendet man in der Regel nur, wenn man Maustastenereignisse in der KeyHistory sehen möchte, da er automatisch installiert wird, sobald man Maus-Hotkeys verwendet.

Geändert: Send-Befehl: ControlDown/Up wurde in CtrlDown/Up umbenannt, in Übereinstimmung mit AutoIt. Außerdem wurden LCtrl und RCtrl als alternative Tastennamen für LControl/RControl hinzugefügt, die für Hotkeys und Befehle wie Send und GetKeyState verwendet werden können.

Behoben: Send-Befehl: Wenn Modifikatortasten gesendet werden, die Teil der Hotkey-Definition selbst sind, werden diese Modifikatoren nach der Ausführung von Send wiederhergestellt. Dies behebt Probleme, wo man, wenn KeyDelay größer als -1 ist, die Modifikatoren loslassen und erneut drücken muss, damit derselbe Hotkey nach dem ersten Mal erneut ausgelöst wird. Zum Beispiel:

^+0::Send, {SHIFTDOWN}a{SHIFTUP}

Vielen Dank an CyberSlug für die Entdeckung dieses Problems. Schauen Sie sich die obigen Abschnitte an, um mehr zu erfahren.

Geändert: ControlSend: {ASC nnnn}-Elemente werden nun ignoriert, da das Betriebssystem dieses Feature nicht unterstützt, wenn Tastendrücke direkt an ein Fenster oder Steuerelement gesendet werden.

Behoben: Der Send-Befehl sendete manchmal einen falschen Scancode (normalerweise ohne Folgen).

Kleine Änderung: Die Taste-Oben-Hotkey-Aktion eines Modifikators (falls vorhanden) wird nicht ausgelöst, wenn dieser Modifikator zum Modifizieren eines Maustastenklicks verwendet wurde (da z.B. Strg+Linksklick ein gültiges natives OS-Feature ist, auf das die meisten Benutzer nicht verzichten wollen).

Kleine Änderung: Escapezeichen, die ganz am Ende einer Zeile oder vor einem Leerraumzeichen stehen, werden nun literal (als direkt geschriebener Text) behandelt. Dies sollte mehr wie AutoIt2 sein. Beispiel: var1 = dieses Zeichen ist nun literal -->`

Tipp: Kommentarbereiche im C-Stil können verwendet werden, aber die Symbole müssen am Anfang einer Zeile stehen, um erkannt zu werden:

/*
...
(auskommentierter Bereich)
...
*/

0.211 BETA - 1. Dezember 2003

Behoben: Der Reload-Befehl und der zugehörige Tray-Menüpunkt funktionieren nun auch mit Skriptdateinamen, die Leerzeichen enthalten.

Hinzugefügt: GetKeyState. Zum Beispiel:

GetKeyState, AusgabeVar, LButton

Dieser Befehl setzt AusgabeVar auf U (für up bzw. oben) oder D (für down bzw. unten), oder macht sie leer, wenn der Status aus irgendeinem Grund nicht ermittelt werden konnte. Der Tastenname kann praktisch jede in der Dokumentation aufgelistete Taste sein, einschließlich Maustasten (zumindest unter WinXP und wahrscheinlich auch unter anderen Betriebssystemen).

Hinzugefügt: Ein neuer optionaler Parameter für MouseClick. Wenn dieser Parameter D ist, wird die Taste so lange gedrückt gehalten, bis sie durch einen physischen Klick des Benutzers oder durch eine andere Aktion im Skript losgelassen wird. Wenn dieser Parameter U ist, wird die Taste losgelassen (auch wenn sie vorher nicht unten war, wird trotzdem ein Up-Ereignis gesendet).

Hinzugefügt: Hotkey-Definitionssymbol ~ (Tilde), das verwendet werden kann, um anzugeben, dass die native Funktion dieses Hotkeys nicht unterdrückt (vor dem System versteckt) werden soll, wenn der Hotkey ausgelöst wird. Das folgende Beispiel sendet den Maustastenklick an das aktive Fenster, obwohl dies normalerweise nicht der Fall wäre:

~RButton::Sleep, 1

Hinweis: Spezielle Hotkeys, die etwas mit Alt-Tab zu tun haben, ignorieren immer diese Einstellung.

Geändert: Mausklickbefehle (MouseClick, LeftClick, etc.): Die Klicks selbst können keine Hotkey-Subroutinen mehr auslösen. Dies verhindert mögliche Endlosschleifen, wenn ein Skript Mausereignisse sendet, die zufällig gültige Hotkeys sind.

Geändert: Die Funktionsweise von Hotkeys, die eine Kombination aus Tastatur und Maus sind, wurde leicht angepasst: Normalerweise wird, wenn die Präfixtaste dieses Paares eine andere Taste modifiziert (auch eine, die kein Hotkey ist), deren Taste-Oben-Aktion nicht ausgelöst (sofern vorhanden). Dies wurde geändert, so dass Maustasten nun die Ausnahme sind. Zum Beispiel:

Numpad0 & Numpad1::MsgBox, Test1  ; Numpad0 ist nun eine Präfixtaste, die vom Tastatur-Hook behandelt wird.
Numpad0::MsgBox, Test2  ; Nun ist Numpad0 sowohl Präfix als auch Suffix (Suffix, weil es eine eigene Aktion hat)

Mit der alten Methode wurde, wenn Numpad0 gedrückt und dann eine Maustaste geklickt wurde, die Numpad0-Aktion nicht ausgelöst, wenn Numpad0 losgelassen wurde, wie es normalerweise der Fall wäre. Mit der neuen Methode wird sie ausgelöst, aber nur, wenn die Kombination aus Numpad0 und dieser Maustaste kein Hotkey ist (da standardmäßig die Tasten-/Mausereignisse, die einen Hotkey bilden, immer vor dem System versteckt werden, es sei denn, das oben beschriebene Symbol ~ wird verwendet).

0.210 BETA - 19. November 2003

Hinzugefügt: Befehl Suspend. Verhält sich wie der gleichnamige Tray-Menüpunkt. Der erste Parameter kann entweder leer sein (um auf den entgegengesetzten Zustand zu schalten), ON (um Hotkeys zu suspendieren) oder OFF (um fortzufahren). Hinweis: Alle Hotkeys, deren Subroutine in der ersten Zeile den Suspend-Befehl stehen hat, werden nicht suspendiert. Auf diese Weise können solche Hotkeys die Suspension deaktivieren.

0.209 BETA - 19. November 2003

Verbessert: Run und RunWait versuchen nun CreateProcess() (die AutoIt-Methode), wenn ShellExecute() (die normale Methode) nicht funktioniert. Dies sollte die Dinge flexibler machen und mehr wie AutoIt sein. Hinweis: Intern wird immer zuerst die ShellExecute()-Methode versucht, weil ich glaube, dass sie mehr Fähigkeiten hat, wie z.B. die Möglichkeit, Dokumente auszuführen, URLs zu starten und Systemverben wie "properties" (siehe unten) auszuführen.

Verbessert: Run und RunWait unterstützen nun die folgenden Systemverben: properties, edit, print, find, explore, open und print. Zum Beispiel:

Run, properties c:\autoexec.bat  ; Eigenschaftenfenster für diese Datei öffnen.
Run, edit %A_SCRIPTFULLPATH%  ; Zugehörige "Bearbeiten"-Aktion für diese Datei ausführen (falls vorhanden).

Hinzugefügt: Direktive #Delimiter. Damit kann das standardmäßig verwendete Trennzeichen (Komma) geändert werden. Mit diesem Trennzeichen werden Befehle und Parameter voneinander getrennt. Hinweis: Leerzeichen, Tabulatorzeichen (da einige Editoren Tabulatorzeichen mit Leerzeichen ersetzen) oder Zeichen, die bereits für einen anderen speziellen Zweck verwendet werden, sind nicht erlaubt. Zum Beispiel:

#Delimiter . ; Als Trennzeichen den Punkt statt das Komma verwenden.

Behoben (erneut): Tray-Menüpunkt "Edit This Script" funktionierte immer noch nicht richtig.

Hinzugefügt: Tray-Menüpunkt "Suspend". Diese Funktion verhindert den Start neuer Hotkey-Subroutinen (Alt-Tab-Hotkeys funktionieren jedoch weiterhin). Mit anderen Worten, das Drücken eines Hotkeys hat keine Wirkung, er wird vom System nicht einmal gesehen. Wäre z.B. Strg+C ein Hotkey, hätte er keine Wirkung und würde nicht einmal das normale Kopierverhalten zeigen. Hinweis: "Suspend" wird keine bereits laufenden Subroutinen anhalten.

0.208 BETA - 17. November 2003

FEHLERBEHEBUNGEN:

Tray-Menüpunkt "Edit This Script" behoben.

Kompatibilitätsprüfung für AutoIt2 behoben: Einige Standardverhalten von AutoIt2 wurden nicht verwendet.

WinWait-Befehle behoben: AusnahmeText und AusnahmeTitel wurden nicht korrekt behandelt.

Debug-Protokollierung ausgeschaltet: Ältere Versionen erzeugten ggf. eine kleine Textdatei "C:\AutoHotkey SetForegroundWindowEx.txt", die Sie nach dem Upgrade auf diese Version bedenkenlos löschen können.

StringReplace wurde geändert, so dass es keine Leerzeichen mehr vom Ergebnis trimmt, was dem Verhalten von AutoIt2 entspricht.

ÄNDERUNGEN:

Das VC++-Projekt ist nun in der Quellcode-ZIP-Datei enthalten.

Die Standardeinstellung für AutoIt2-Skripte (.aut) wurde auf DetectHiddenWindows, Off geändert, so dass das Verhalten eher dem von AutoIt2 entspricht. Dies ist nun die Standardeinstellung für alle Skripte. Soweit ich das beurteilen kann, erkennt AutoIt3 im Gegensatz zu AutoIt2 versteckte Fenster immer. Da dies manchmal zu Problemen beim Vergleich und der Unterscheidung von Fenstern führen kann, scheint die AutoIt2-Methode die bessere Standardeinstellung zu sein.

Der SetTitleMatchMode-Befehl wurde geändert. Zusätzlich zu den traditionellen Modi 1 und 2 unterstützt der Befehl nun auch die Wörter Fast und Slow (z.B. SetTitleMatchMode, Slow). Die Standardeinstellung ist Fast, die von AutoIt2 verwendet wird, während AutoIt3 den langsamen Modus verwendet, um mehr Text in bestimmten Fenstern "sehen" zu können. Der schnelle Modus ist wesentlich performanter, was sich positiv auf die Geschwindigkeit von Skripten auswirken kann, die viele fensterspezifische Befehle ausführen. Der langsame Modus kann verwendet werden, um volle Kompatibilität mit AutoIt3 und dessen Window Spy zu garantieren (Window Spy ist im Lieferumfang von AutoHotkey enthalten). Ich denke darüber nach, Window Spy so zu modifizieren, dass es anzeigt, welche Texte eines Fensters nur im "langsamen" Modus verfügbar sind.

Zuverlässigkeit beim Auffinden von Fenstern: Der "langsame" Titelübereinstimmungsmodus wurde zuverlässiger gemacht, indem das Zeitlimit auf 5 Sekunden erhöht wurde, da einige Fenster beim Prüfen ihrer Meldungswarteschlangen sehr träge sind (z.B. bei langen Festplattenoperationen) und daher ihren Fenstertext nur sehr langsam ausgeben.

In dieser Version können standardmäßig mehrere Instanzen desselben Skripts gestartet werden. Wenn Sie ein Skript auf eine einzige Instanz beschränken möchten, verwenden Sie die unten beschriebene #SingleInstance-Direktive.

NEUERUNGEN:

DriveSpaceFree: Ruft den freien Speicherplatz eines Laufwerks ab (in Megabyte). Zum Beispiel: DriveSpaceFree, AusgabeVar, C:\

SetAutoTrim, On/Off (standardmäßig On): Bestimmt, ob beim Zuweisen eines Wertes an eine Variable automatisch alle Leerraumzeichen am Anfang und Ende der Zeichenkette entfernt werden. In diesem Fall sind Leerraumzeichen nur Leer- und Tabulatorzeichen, KEINE Zeilenumbrüche (Wagenrückläufe). Daher glaube ich, dass die Einstellung "On" in dieser Hinsicht das gleiche Verhalten wie AutoIt2 bewirkt.

StringGetPos unterstützt einen neuen optionalen letzten Parameter. Wenn dieser Parameter der Buchstabe R ist, erfolgt die Suche von rechts nach links, d.h. es wird nicht das erste, sondern das letzte Vorkommen gefunden.

ControlSetText: Basiert auf der gleichnamigen Funktion von AutoIt3. Zum Beispiel: ControlSetText, SteuerelementName, NeuerText, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Beachten Sie, dass einige oder alle der letzten vier Parameter weggelassen werden können. Wenn alle weggelassen werden, wird das zuletzt gefundene Fenster von IfWinExist, IfWinNotExist oder WinWait verwendet. Dieses Verhalten gilt auch für fast alle anderen fensterspezifischen Befehle.

#AllowSameLineComments: Um die Kompatibilität mit AutoIt2 zu erhöhen, dürfen Skripte, die auf .aut enden, normalerweise keine Kommentare in derselben Zeile enthalten (z.B. Run, notepad ; Kommentar). Fügen Sie die Zeile #AllowSameLineComments am Anfang Ihres Skripts ein, um dies zu erlauben.

#SingleInstance: Diese Direktive irgendwo im Skript verhindert, dass neue Instanzen dieses Skripts gestartet werden, wenn bereits eine Instanz läuft. Stattdessen werden Sie gefragt, ob Sie die vorhandene Instanz schließen wollen. Hinweis: Für diese Direktive muss weder "On" noch "Off" verwendet werden.

#CommentFlag: Ermöglicht die Änderung des standardmäßig verwendeten Kommentar-Flags (Semikolon) in eine Zeichenkette Ihrer Wahl. Die Zeichenkette kann bis zu 15 Zeichen lang sein. Zum Beispiel: #CommentFlag // ; C++-Kommentierung.

#EscapeChar: Das Escapezeichen ist normalerweise Akzent (`), aber mit dieser Direktive können Sie es in das Escapezeichen von AutoIt2 (umgekehrter Schrägstrich) oder ein anderes Zeichen Ihrer Wahl ändern. Beachten Sie, dass Skripte, die auf .aut enden, standardmäßig den umgekehrten Schrägstrich als Escapezeichen verwenden.

#DerefChar: Das Dereferenzzeichen ist normalerweise % (z.B. Sleep, %SleepTime%). Mit dieser Direktive können Sie es in ein anderes Zeichen ändern.

TIPPS

Das erste Komma kann bei jedem Befehl weggelassen werden, z.B. MsgBox Text des Mitteilungsfensters (Einzelparametermodus).

Sie können die Feststell-Taste als neuen "Modifikator" verwenden, ähnlich wie Win, ohne ihre native Funktion zu ändern (derzeit nur in WinNT/2k/XP möglich). Zum Beispiel:

CapsLock & A::run, notepad
CapsLock & S::run, calc

0.207 BETA - 12. November 2003

Behoben: StringMid ist nun nicht mehr in der Lage, über die Länge der Eingabevariable hinaus zu lesen.

Das Automatische-Wiederherstellen-bei-Wiederaufnahme-Feature (Vordergrundfenster wiederherstellen, mit dem ein suspendierter Thread gearbeitet hat) wurde deaktiviert, da es wahrscheinlich mehr schadet als nützt.

0.206 BETA - 11. November 2003

Behoben: Skripte blieben zufällig hängen (schliefen auf unbestimmte Zeit): Die Ursache dafür war, dass der Haupt-Timer des Threads beendet wurde, obwohl dies nicht der Fall sein sollte.

Behoben: WinWait-Befehle verhalten sich nun wie erwartet, wenn eine neue Hotkey-Subroutine gestartet wird, während der Befehl auf den Ablauf des Zeitlimits wartet: Die neue Subroutine überschrieb einen Puffer, der noch von der alten Subroutine benötigt wurde.

Behoben: Das Tray-Menü verhält sich nicht mehr seltsam, wenn ein modales Dialogfenster, wie z.B. MsgBox oder InputBox, auf dem Bildschirm angezeigt wird.

Behoben: Der REPEAT-Befehl verursacht keine Endlosschleife mehr, wenn der erste Parameter eine dereferenzierte Variable statt einer direkt geschriebenen Zahl ist.

0.205 BETA - 10. November 2003

Erstveröffentlichung.