AutoHotkey Changelog

What's new in AutoHotkey 1.1.37.02

Mar 16, 2024
  • Fixed inability of LWin::Alt to be used to activate some Alt-combos.
  • Fixed mouse AltTab hotkeys not suppressing execution of a prefix hotkey, such as 1:: for 1 & WheelDown::AltTab. (Broken by v1.1.37.00)
  • Fixed hook hotkeys not recognizing modifiers which are pressed down by SendInput.
  • Fixed some issues affecting suppressed Alt/Ctrl/Shift/Win hotkeys, such as:
  • LCtrl:: blocked LCtrl from the active window, but sending Alt-key combinations would fail because the system thinks Ctrl is down, and would therefore send WM_KEYDOWN instead of WM_SYSKEYDOWN.
  • LAlt:: caused the system to forget any prior {LAlt DownR}, so a remapping such as LCtrl::LAlt would not behave correctly while LAlt is physically down, even though LAlt was suppressed.
  • Other potential issues where the system's low-level tracking of a modifier key doesn't match up with the logical state.
  • Fixed A_Clipboard ignoring assignment of pure numeric values.
  • Fixed SendInput failing to release LCtrl after having released RAlt (if it isn't AltGr).
  • Fixed new threads being unable to prevent a message check with Critical.
  • SHA256 hash

New in AutoHotkey 2.0.11 (Dec 23, 2023)

  • Added a workaround for the first shown menu not accepting keyboard input on Windows 10.
  • Fixed the Add method (Gui) to support the ShortDate option for DateTime controls.
  • Fixed a reference counting error with multi-level function nesting.
  • Fixed #include <x> causing a load-time crash if used inside a function.
  • Fixed ListView.Opt("NoSort").
  • Fixed a memory leak occurring when an object with no own properties is cloned.
  • Fixed #include and FileInstall (non-compiled) to compare file names ordinally, not linguistically.

New in AutoHotkey 2.0.9 (Sep 17, 2023)

  • Fixed stacking of hotstrings with the X option.
  • Fixed debugger not listing local vars if the function is at the bottom of the stack.
  • Fixed Gui threads to show on the debugger's call stack.
  • Fixed some combinations of &/ByRef causing stack overflow in ExitApp.

New in AutoHotkey 2.0.8 (Sep 11, 2023)

  • Fixed ByRef parameters erroneously assigning the default value to the caller's VarRef if unset.
  • Fixed some issues affecting suppressed Alt/Ctrl/Shift/Win hotkeys, such as:
  • *LCtrl:: blocked LCtrl from the active window, but sending Alt-key combinations would fail because the system thinks Ctrl is down, and would therefore send WM_KEYDOWN instead of WM_SYSKEYDOWN.
  • *LAlt:: caused the system to forget any prior {LAlt DownR}, so a remapping such as LCtrl::LAlt would not behave correctly while LAlt is physically down, even though LAlt was suppressed.
  • Other potential issues where the system's low-level tracking of a modifier key doesn't match up with the logical state.
  • Fixed some issues affecting continuation sections:
  • Escape sequences in the Join option were translated twice, causing ```` to become one literal ` instead of two, ``n to become a linefeed, and similar.
  • `" or `' produced a literal backtick and ended the string, instead of producing a literal quote mark, if the continuation section was enclosed in quotes of the same type and lacked the ` option.
  • Optimized the automatic escaping of quote marks and backtick in continuation sections.
  • Fixed breakpoint_list (debugger) returning duplicates on lines containing fat arrow functions.
  • Fixed +BackgroundDefault failing to override the Gui's BackColor property.

New in AutoHotkey 2.0.7 (Sep 2, 2023)

  • Fixed MouseClickDrag to allow X1 and Y1 to be omitted.
  • Fixed mouse AltTab hotkeys not suppressing execution of a prefix hotkey, such as 1:: for 1 & WheelDown::AltTab. (Broken by v2.0.4)
  • Fixed hook hotkeys not recognizing modifiers which are pressed down by SendInput.
  • Fixed A_AhkPath to not be reliant on the case/format of the command line used to launch the process.
  • Fixed heap corruption during window searches involving groups. (Broken by v2.0.6)
  • Launcher:
  • Fixed #Requires not being detected if followed by a comment other than ; prefer xxx. (Broken by v2.0.6)
  • Fixed syntax detection misinterpreting multi-line auto-replace hotstrings.
  • Window Spy:
  • Changed font to Segoe UI size 9, consistent with Dash.

New in AutoHotkey 2.0.6 (Aug 30, 2023)

  • Fixed some ambiguity with COM calls, such as x.y acting as x.y().
  • Fixed breakpoint on control flow statement being "hit" when a fat arrow function on the line below it returns.
  • Fixed Default : to not merge with the line below it. This prevented Default : from being used at the end of a Switch block, and caused any subsequent line to take the line number of the Default.
  • Optimized ProcessGetPath, ProcessSetPriority and ProcessClose to not scan through all processes when given a valid PID, even if access to the process is denied.
  • Fixed inability of LWin::Alt to be used to activate some Alt key combos.
  • Fixed TypeError thrown by x is y to say "Class" rather than "Object".
  • Fixed WinTitle to support criteria longer than 1023 characters.
  • Fixed issues when &ref is used on different aliases of the same variable.
  • Fixed optional parameter default expressions (other than simple literal values) preventing the use of assume-global/assume-static.

New in AutoHotkey 2.0.5 (Aug 13, 2023)

  • Fixed a memory leak caused by incorrect reference counting when an object is enumerated via COM. [PR# 325]
  • Fixed internal calls to __Enum to not call __Call.
  • Fixed error messages referring to parameter #65535.
  • Fixed incorrect IEnumVARIANT return count.
  • Fixed Download throwing OSError(0) when error should be non-zero.
  • Fixed LV.Add/Insert/Modify crashing when passed the minimum number of parameters.
  • Fixed stack traces to exclude calls to __new for Error subclasses.

New in AutoHotkey 2.0.4 (Jul 8, 2023)

  • Changed the Reload button on error/warning dialogs to explicitly close the dialog, even if the current script instance isn't terminated.
  • Removed an optimization for return var which caused the variable to appear blank when accessed within a finally block.
  • Fixed Default (Switch) to allow space before the colon.
  • Fixed Array.Prototype.RemoveAt to return the removed value when Length is "explicitly omitted" with unset or var?.
  • Fixed crashing when a ComObject is passed to a for-loop with only the second variable specified.
  • Changes merged from v1.1.37.00 and v1.1.37.01:
  • Changed COM method and property calls to pass large integers as VT_I8, not VT_R8 (floating-point), so the original type and precision is retained. Integers in the 32-bit range are still passed as VT_I4.
  • Added support for multi-variable enumerators (for-loops) with IDispatch-wrapped AutoHotkey objects. Both the script invoking the object and the object itself must be running a supported AutoHotkey version.
  • Fixed omitted parameters to receive their default values rather than the "optional argument marker" when an AutoHotkey method is called via IDispatch (COM). The reverse translation was already done when calling COM methods in previous versions.
  • Fixed VerCompare(a, ">" b) and reduced code size marginally.
  • Fixed AltTab-related load-time errors to be consistent with other errors.
  • Fixed errors thrown by a ComObject wrapper not being propagated correctly if it is called via an object/COM.
  • Fixed the Hotkey GUI control to allow setting the symbols ^, ! and + as hotkeys.
  • Fixed the Hotkey control to include modifiers when its value is set to a symbol.
  • Fixed potential misbehaviour of InputHook.KeyOpt() with single chars.
  • Option removal potentially not affecting the corresponding SC.
  • Options potentially also being applied to sc000.
  • Fixed a bug with custom combos where a set of hotkeys like a & b::, a:: and a up:: would fail to suppress the release of a if a:: alone is disabled with #HotIf.
  • Fixed a bug where a key-down event is correctly suppressed by a hotkey, but sending an additional key-down with SendLevel > 0 would prevent the subsequent key-up from being suppressed, even if the sent event is ignored due to #InputLevel.
  • Fixed a & b up:: not suppressing b if a & b:: is present but disabled by #HotIf.
  • Fixed an issue with hotkeys not firing due to a race condition. If a modifier hotkey such as ~*RWin:: called Send or GetKeyState too soon, the OS could report that RWin isn't down, so the hook's modifier state would be "corrected" and hotkeys would wrongly fire or fail to fire. This was likely to occur only if another keyboard hook was installed more recently than the script's own hook, since in that case the OS would not update key state until the other hook's thread has resumed and returned.
  • Fixed hotstrings to use the Last Found Window set by #HotIf.
  • Fixed an issue where any attempt to reinstall the keyboard or mouse hook would fail if the OS had automatically uninstalled the hook. It is still necessary to meet certain conditions before any such attempt can be made.
  • Optimized allocation of cached COM property names for built-in IDispatch.
  • Refactored code to support a build configuration for AutoHotkey as a DLL.

New in AutoHotkey 1.1.37.01 (Jul 8, 2023)

  • Fixed an issue with hotkeys not firing due to a race condition. If a modifier hotkey such as ~*RWin:: called Send or GetKeyState too soon, the OS could report that RWin isn't down, so the hook's modifier state would be "corrected" and hotkeys would wrongly fire or fail to fire. This was likely to occur only if another keyboard hook was installed more recently than the script's own hook, since in that case the OS would not update key state until the other hook's thread has resumed and returned.
  • Fixed hotstrings to use the Last Found Window set by #If.
  • Fixed MouseGetPos, ControlClick, ContextMenu Gui events and DropFile Gui events erroneously detecting a control at a specific point which actually lies one pixel below or to the right of the control.
  • Fixed an issue where any attempt to reinstall the keyboard or mouse hook would fail if the OS had automatically uninstalled the hook. It is still necessary to meet certain conditions before any such attempt can be made.

New in AutoHotkey 1.1.37.0 (Jul 2, 2023)

  • Changed COM method and property calls to pass large integers as VT_I8, not VT_R8 (floating-point), so the original type and precision is retained. Integers in the 32-bit range are still passed as VT_I4.
  • Added support for two-variable enumerators (for-loops) with IDispatch-wrapped AutoHotkey objects. Both the script invoking the object and the object itself must be running a supported AutoHotkey version.
  • Added support for ByRef VARIANT in incoming COM calls. Instead of receiving a ComObject wrapper with the VT_BYREF|VT_VARIANT variant type, the script receives a temporary variable compatible with a normal ByRef parameter.
  • Added support for omitting parameters in incoming COM calls. IDispatch allows omitting parameters by specifying a VARIANT of type VT_ERROR with value DISP_E_PARAMNOTFOUND. These values are now translated automatically instead of being wrapped in an object. The reverse translation was already done when calling COM methods in previous versions.
  • Fixed VerCompare(a, ">" b) and reduced code size marginally.
  • Fixed AltTab-related load-time errors to be consistent with other errors.
  • Fixed errors thrown by a ComObject wrapper not being propagated correctly if it is called via an object/COM.
  • Fixed the Hotkey GUI control to allow setting the symbols ^, ! and + as hotkeys.
  • Fixed the Hotkey control to include modifiers when its value is set to a symbol.
  • Fixed Menu Add overwriting items which were appended by Menu Insert.
  • Fixed potential misbehaviour of InputHook.KeyOpt() with single chars.
  • Option removal potentially not affecting the corresponding SC.
  • Options potentially also being applied to sc000.
  • Fixed a bug with custom combos where a set of hotkeys like a & b::, a:: and a up:: would fail to suppress the release of a if a:: alone is disabled with #If.
  • Fixed a bug where a key-down event is correctly suppressed by a hotkey, but sending an additional key-down with SendLevel > 0 would prevent the subsequent key-up from being suppressed, even if the sent event is ignored due to #InputLevel.
  • Fixed a & b up:: not suppressing b if a & b:: is present but disabled by #If.
  • Optimized allocation of cached COM property names for built-in IDispatch.
  • Refactored code to support a build configuration for AutoHotkey as a DLL.

New in AutoHotkey 1.1.36.02 (Dec 7, 2022)

  • Improved ComObjConnect to allow detecting disconnect via __Delete.
  • Fixed a performance issue with command args exceeding 4*1024*1024 chars.
  • Fixed FileCreateDir with network shares/UNC paths.
  • Fixed undefined behavior for File.Length/Read() with console buffers.

New in AutoHotkey 1.1.36.01 (Dec 2, 2022)

  • Fixed undefined behaviour for Switch numeric comparisons.

New in AutoHotkey 1.1.36.00 (Dec 1, 2022)

  • Added VerCompare().
  • Added support for breakpoint exceptions via DBGp.
  • Extended #Requires to support operators for range checks (< <= > >= =) and additional keywords: Unicode, ANSI, 32-bit, 64-bit.
  • Added CompanyName to the version information in AutoHotkey.exe, which may work around a Windows 10 bug where the program would not appear in Open With.
  • Changed Switch/Case to perform non-numeric comparison when the switch or case expression is a lone literal string, such as "00", and documented comparison behaviour which was previously undocumented.
  • Fixed some inconsistencies with integer property names via IDispatch.
  • Negative values always being considered non-numeric.
  • Positive values losing formatting, such as leading zeroes.
  • Fixed potential crashes when inspecting a ComObject via DBGp after using ComObjConnect.
  • Fixed FileAppend to treat a blank Encoding as omitted.
  • Fixed version comparisons to ignore numeric build info; e.g. 1.1.35.00+1+abcdef (1 is the number of commits since 1.1.35.00).
  • Fixed FileCreateDir XY (with trailing slash) failing to create X [broken by v1.1.35.00].

New in AutoHotkey 1.1.35.00 (Oct 30, 2022)

  • Changed GroupActivate and GroupClose to behave more intuitively:
  • Evaluate windows against the window group as a whole, not individual window specifications.
  • When GroupClose indirectly causes another matching window to activate, leave it active even if it isn't matched by the same window specification.
  • Contributions by jeeswg (pull requests #186, #235, #240, #249, #273, #274):
  • Backported operators !==, >>> and >>>= from v2.
  • Backported A_InitialWorkingDir from v2.
  • Backported File.Handle from v2.
  • Backported A_Clipboard from v2.
  • Backported IsSet() from v2.
  • Bug-fixes:
  • Fixed a spelling error in the #Warn Unreachable message.
  • Fixed FileCreateDir handling of paths containing ".." or "/".
  • Fixed some issues with FileSelectFile's RootDirFilename parameter:
  • Filename not being used when RootDir is a badly formatted CLSID.
  • Undefined behaviour for long paths when GetShortPathName fails (such as when long path awareness is disabled or there's a default filename which isn't an existing file).
  • Fixed FileSetTime to set A_LastError if it finds no files.
  • Fixed EnvAdd/+= losing precision when adding 115,292,150,461+ seconds.
  • Fixed the keyboard hook reinserting a suppressed dead key when Enter is pressed, such as in the sequence `o{Enter} when the following is true:
  • A separate script has suppressed "ò" due to :?*:ò::.
  • The current process also has active hotstrings.
  • The other process installed its hook last.
  • Fixed ControlGet List "Selected" option repeating output on x64 when the target is 32-bit.
  • Fixed stack corruption for ControlGet List "Count" options.

New in AutoHotkey 1.1.34.04 (Aug 23, 2022)

  • Fixed callback functions not being included in the debugger's call stack.
  • Fixed MsgBox timeout reported as "OK" if shown within 100ms of startup.
  • Fixed Edit control to ignore +WantTab while +ReadOnly is in effect.
  • Fixed property_get returning a local var when -d should prevent it.
  • Fixed RegRead to support REG_MULTI_SZ values containing empty items.
  • Fixed x[,y]:=z invoking undefined behaviour.

New in AutoHotkey 1.1.34.03 (Jun 5, 2022)

  • Fixed double backspacing of supplementary Unicode characters in hotstrings.
  • Fixed a:: not firing if a up:: and a & b:: are present.
  • Fixed MinSize/MaxSize being applied incorrectly before the first call to Gui Show.
  • Fixed the hook thread getting stuck in an infinite loop if an InputHook has been restarted too soon after being stopped.
  • Fixed crashes or undefined behaviour when a blank parameter is passed to FileCopy, FileMove, FileCopyDir, FileMoveDir or FileRemoveDir.
  • Fixed dead keys erroneously being reapplied by the keyboard hook after the final character of a hotstring is suppressed (e.g. for :?*:ò::ó).

New in AutoHotkey 1.1.34.02 (May 13, 2022)

  • Fixed command line args for embedded script #1.
  • Fixed Alt::, Ctrl:: and Shift:: behaving like normal keys, instead of firing on release as documented.
  • Fixed ~a & b:: (when disabled with #If) causing a:: to fire on key-up even after activating some other combo.

New in AutoHotkey 1.1.34.01 (May 8, 2022)

  • Fixed bugs introduced by v1.1.34.00:
  • a up:: firing on press rather than release if it is the first hotkey and ~a & b:: is present.
  • a:: not suppressing the key if ~a & b:: is also present, unless a:: is the first hotkey.
  • CapsLock:: not working when CapsLock & x:: is also present, and likewise for NumLock and ScrollLock.

New in AutoHotkey 1.1.34.00 (May 5, 2022)

  • added the capability to use AutoHotkey.exe as the base for compiled scripts, allowing compiled scripts to execute external files when passed the /script command-line switch.
  • Added the capability to implicitly include code at the top of every script, either by embedding a resource within AutoHotkey.exe or by using the /include command-line switch.
  • Enabled the use of Menu NoMainWindow/MainWindow in uncompiled scripts.
  • Changed ~x & y:: to not affect suppression of x when disabled by #If.
  • Enhanced FileCopyDir to permit the source directory to be a zip file, if supported by the OS, in which case its contents are extracted.
  • Fixed execution of multiple run-once timers in the same tick [broken by v1.1.33.11].
  • Fixed ToolTip positioning/sizing bugs.
  • Attempting to position a tooltip overlapping the taskbar caused it to appear at the top of the screen instead, on Windows 10 and 11.
  • Tooltips were limited by the primary screen's width even when they should appear on a secondary screen, and this could prevent them from appearing on the appropriate screen (when they're too wide).
  • The maximum width was effectively A_ScreenDPI/96 times larger than it should be due to OS behaviour; this is now accounted for.
  • Optimized ToolTip for cases where the text isn't changing, to reduce flicker and speed it up.
  • Fixed key-up hotkeys failing to execute if they are turned on after (but not before) the key is pressed down, and that key is also a custom prefix key with the tilde suffix (e.g. ~a & b:: interferes with a up).
  • Fixed custom combo hotkeys where the prefix key causes a hook reset, such as ~RButton & WheelUp:: when RButton:: enables or disables the script's only keyboard hook hotkey.

New in AutoHotkey 1.1.33.11 (Apr 20, 2022)

  • Fixed Format(n) returning blank when n is a pure numeric expression.
  • Fixed the debugger's inability to query obj.<base>.<base>.
  • Changed debugger step/breakpoints to slip over Try/Catch/Finally/Case.
  • Fixed Switch { incorrectly raising a load-time error.
  • Fixed debugger stack_get reporting incorrect line after OnError.
  • Fixed debugger stack_get reporting incorrect line for auto-execute thread.
  • Fixed auto-env retrieval and A_ComVar to safely allow for variables larger than the official limit [PR #259 from mikeblas].
  • Fixed A_EventInfo for mouse wheel hotkeys [broken by v1.1.33.05].
  • Fixed ControlClick to convert coordinates correctly for wheel messages.
  • Fixed the IDispatch implementation for AutoHotkey objects to preserve case for property names.
  • Fixed #Warn StdOut to default to codepage 0 when /ErrorStdOut is not used.
  • Fixed crashes when a timer's __delete() meta-function deletes the next timer.

New in AutoHotkey 1.1.33.10 (Aug 29, 2021)

  • Fixed loading of JPG/GIF files which are already open for reading.
  • Fixed misidentification of digits/xdigits by if-var-is.
  • Added a safety check for ControlGet Selected in case it is used with a non-Edit control.
  • Fixed variables being set to NULL in certain rare cases, causing crashes. The only confirmed case being when a string longer than 63 characters is returned from a function and assigned to a variable while AutoHotkey is running as a Windows store app.
  • Fixed InputHook callbacks failing after input is stopped and restarted.

New in AutoHotkey 1.1.33.09 (May 8, 2021)

  • Fixed crash on load when an AltTab action is used in a key-up/down pair
  • Fixed garbage error text when the main script file cannot be opened
  • Removed "Error at line 0" from error messages which appear before the first line is read
  • Fixed focus resetting when a minimized GUI is restored
  • Fixed focus not saving when a GUI is minimized with Gui Show

New in AutoHotkey 1.1.33.08 (Apr 23, 2021)

  • When there's a matching context-sensitive hotkey with a higher #InputLevel and no enabled global variant.
  • When there's no matching key-down hotkey, but there's a key-up hotkey with a higher #InputLevel.

New in AutoHotkey 1.1.33.07 (Apr 21, 2021)

  • Fixed tray icon freezing and becoming blurry after screen DPI changes.
  • Fixed hotkeys disabled by #InputLevel erroneously suppressing keys.

New in AutoHotkey 1.1.33.06 (Mar 14, 2021)

  • Fixed joystick hotkeys (broken by v1.1.33.05).

New in AutoHotkey 1.1.33.05 (Mar 10, 2021)

  • Fixed bugs with hotkey variants having different #InputLevels.
  • Hotkey variants executing despite send level being too low, due to a global variant having lower #InputLevel.
  • Hotkey variants not executing because a previous variant was ineligible due to #InputLevel.
  • Fixed Ctrl/Shift/Alt (without L/R) as hook hotkeys.

New in AutoHotkey 1.1.33.04 (Mar 2, 2021)

  • Removed dependency on the POPCNT instruction, which is not supported by old CPUs (e.g. Core 2).

New in AutoHotkey 1.1.33.03 (Mar 1, 2021)

  • Fixed crashing when an empty SafeArray is enumerated.
  • Fixed height to not auto-expand for Button/Checkbox/Radio with -Wrap.
  • Fixed WM_DESTROY bypassing release of objects in global/static vars.
  • Fixed WinMenuSelectItem second-attempt matching to handle & correctly. Specifically, items with actual text like "a && b" which appear as "a & b" will now match "a & b" instead of "a b".
  • Fixed breakpoint on Case/Default line breaking at end of previous case.
  • Changed SoundBeep to ignore duration if negative, instead of wrapping around to a large positive value.
  • Fixed mouse hotkeys with ! to mask Alt-up after key-repeat if possible.
  • Fixed several issues with overlapping hotkeys.
  • Key-up hotkeys firing incorrectly because they were paired with a hotkey with overlapping but different requirements, such as <^a up firing for RCtrl+A because it was paired with ^a; or *^c up firing for Shift+C because it was paired with *+c, and both can fire for Ctrl+Shift+C.
  • Unpredictable prioritization of hotkeys with the same modifiers but different L/R variants, or different modifiers when neither one is a perfect subset of the other. Priority was affected by order of definition to a degree but shifted unpredictably when hotkeys were added or removed.

New in AutoHotkey 1.1.33.02 (Jul 17, 2020)

  • Fixed InputHook.EndKey to prefer any vk over sc000.
  • Fixed InputHook.KeyOpt("{sc000}", flags).
  • Fixed #Warn Unreachable flagging Case/Default as unreachable.

New in AutoHotkey 1.1.33.01 (Jul 13, 2020)

  • Fixed modifier key-up hotkeys like LShift up:: not suppressing key-up unless a corresponding key-down hotkey is defined.
  • Fixed icons loaded from DLL/EXE not using the closest matching size if it's first in the icon group [broken by v1.1.33.00].
  • Fixed a up:: erroneously taking precedence over b & a up:: if a:: is defined but not b & a::.
  • Fixed b & a up:: not suppressing a when a:: is defined but disabled by #If and b & a:: is not defined.

New in AutoHotkey 1.1.33.00 (Jun 30, 2020)

  • Added #ErrorStdOut Encoding parameter.
  • Added /ErrorStdOut=Encoding command line switch.
  • Added #Warn Unreachable (warning mode).
  • Added #Requires AutoHotkey vVersion (directive).
  • Added detection of program-terminating SEH exceptions, to display an error dialog.
  • Fixed a possible bug where Input causes undefined behaviour. [PR #159 from Helgef]
  • Fixed WinKill.
  • Fixed A_WinDir to always return the system Windows directory.
  • Fixed FileGetShortcut/FileCreateShortcut to return and accept negative icon indices without modification.
  • Fixed InputBox Locale option to not focus the Cancel button.
  • Fixed menu bar keyboard shortcuts not working when GUI has no controls.
  • Fixed LoadPicture to use 256x256 graphic when available in a DLL/EXE.
  • Fixed DBGp stderr copy mode to not suppress error dialogs.
  • Fixed ControlGet Line setting ErrorLevel=1 when line is just empty.
  • Fixed Send causing unwanted hotkey buffering.

New in AutoHotkey 1.1.32.00 (Nov 24, 2019)

  • Changed commands and functions with a WinTitle parameter to treat cloaked windows as hidden.
  • Added support for reverse PixelSearch in fast mode. [PR #156 from changyuheng]
  • Added InputHook OnKeyUp callback.
  • Fixed GroupDeactivate to exclude the Desktop on Windows 10 (and possibly 8).
  • Fixed Switch treating strings as always true.
  • Fixed A_PriorKey being blank after Unicode characters are sent.
  • Fixed WinActivate to not assume NULL foreground window == taskbar.
  • Fixed Send {Del} not restoring AltGr after releasing it.
  • Fixed vk13 and sc045 as remap destination keys.
  • Removed unnecessary checks for Control and Sleep in one-line hotkeys.
  • Removed obsolete Windows 9x/NT4 support code and performed other maintenance.

New in AutoHotkey 1.1.31.00 (Sep 28, 2019)

  • General hotkey improvements:
  • Improved support for overlapping hotkeys like <^a and ^a with #If. If all variants of a hotkey are disabled by #If, a more general hotkey may be triggered. In other words, disabling the hotkeys with #If should now behave more like turning them off or removing them from the script.
  • Improved detection of incorrect modifier key state by the hook.
  • Fixed wildcard hotkey selection to ignore modifier changes made by Send.
  • AltGr bug-fixes:
  • Fixed hotkeys misfiring after Send xy where x requires AltGr.
  • Fixed an unnecessary LCtrl being sent after Send x where x requires AltGr.
  • Fixed AltGr detection on Unicode 32-bit builds when OS is 64-bit.
  • Fixed sending of AltGr combinations while RCtrl is down.
  • Shift-numpad bug-fixes:
  • Fixed interaction between Send and Shift-numpad causing Shift to stick. This fixes intermittent issues with hotkeys like Numpad1::Send +1.
  • Optimized detection of fake Shift generated by system numpad handling.
  • Fixed fake RShift being considered physical, inconsistent with LShift.
  • Fixed Slider +TickInterval to take effect even if Range is not set.
  • Fixed Slider +TickInterval0 to set interval to 0, disabling ticks.
  • Fixed menu and GUI events causing CPU-maxing loops in some cases. Specifically, when a modal message loop is running and the script is uninterruptible, menu and GUI event messages were repeatedly re-posted. These are now discarded, as they can't be handled or kept in the queue. This is consistent with hotkeys, etc.
  • Fixed DllCall critical errors to always exit, ignoring OnExit result.
  • Fixed ExitApp 2 bypassing release of objects in global/static vars.
  • Changed ComObjCreate to use CLSIDFromProgID for non-GUID strings. This fixes ComObjCreate("Microsoft.Windows.ActCtx") and possibly others which aren't in the registry but work with VBScript and JScript.

New in AutoHotkey 1.1.30.03 (Apr 5, 2019)

  • Fixed debugger context_get triggering #Warn UseUnset.
  • Fixed straight modifier hotkeys such as Shift:: (broken by v1.1.30.02).

New in AutoHotkey 1.1.30.02 (Apr 1, 2019)

  • Fixed Menu Rename to allow duplicates and no-op/case-only renames.
  • Fixed X option for Hotstring(). [PR #132 from Helgef]
  • Fixed __init/__delete causing misleading error line/stack trace.
  • Fixed #if expressions stalling in Sleep and similar.
  • Fixed custom combos triggering incorrectly after a custom combo suspends itself.

New in AutoHotkey 1.1.30.00 (Aug 22, 2018)

  • Fixed SendInput/SendPlay to restore DownR/remapped modifiers.
  • Increased limit of hotkeys per script from 1000 to 32762.
  • Changed commands which accept On/Off/Toggle to also accept 1/0/-1 (where documented).
  • Improvements to debugger (DBGp) support:
  • Added support for the -d (stack depth) option.
  • Added (DBGp-only) .<base> pseudo-property to resolve ambiguity.
  • Fixed debugger to avoid unsupported re-entry during break state.
  • Fixed DBGp command parser to support quoted parameters.

New in AutoHotkey 1.1.29.01 (Jun 2, 2018)

  • Fixed WinMove crashing the program in some cases [broken by v1.1.29.00].
  • Fixed Gui x:Default if no Gui has been created [broken by v1.1.29.00].

New in AutoHotkey 1.1.28.02 (Apr 9, 2018)

  • Fixed:
  • Control ChooseString and ControlGet FindString ignoring the first two items.
  • Control ChooseString to send WM_COMMAND even if the control's ID is 0.
  • WinActivate to restore the active window, as originally intended for [v1.1.20.00].

New in AutoHotkey 1.1.28.01 (Mar 31, 2018)

  • Fixed Thread treating omitted parameters as 0.
  • Fixed FileAppend to stderr (**).
  • Fixed break label being able to jump to an unrelated loop.
  • Reverted hotstring reset behaviour to pre-v1.1.28.00.
  • Added Hotstring("Reset") for manually resetting the hotstring recognizer

New in AutoHotkey 1.1.27.07 (Jan 21, 2018)

  • Fixed default size of Gui with +Parent to not be restricted by parent [broken by v1.1.27.05].
  • Fixed controls not redrawing if a separate Tab control is shown/hidden immediately after the control was invalidated (such as when showing/hiding multiple controls at once).

New in AutoHotkey 1.1.27.05 (Jan 16, 2018)

  • Fixed visible Input end keys causing any pending dead key to double up.
  • Fixed hotstrings/Input affecting how Tab/Esc act in a dead key sequence.
  • Fixed A_IconFile returning an incorrect path if a DLL was used.
  • Fixed Gui with +Parent to center within the parent GUI vs. the screen.
  • Fixed Input/hotstring detection of dead key sequences in Universal Windows Platform (UWP) apps.
  • Fixed < & v and > & v being seen as duplicates, and similar cases. This affects custom combinations where the prefix key is also a modifier symbol. This also fixes hotkeys which consist only of modifier symbols and a single trailing space, such as + ::, to be treated as errors rather than ignoring the space (hotkeys do not permit trailing space).

New in AutoHotkey 1.1.27.04 (Jan 16, 2018)

  • Fixed #Warn ClassOverwrite giving erroneous warnings.

New in AutoHotkey 1.1.27.03 (Jan 7, 2018)

  • Improved Menu x, NoStandard and Menu x, DeleteAll to work without attempting to destroy the underlying Win32 menu. This allows them to work when x is a menu bar or sub-menu of one.
  • Fixed mishandling of numeric keys outside the 32-bit range (but inside the 64-bit range) in some corner cases on 64-bit builds. This only affects classes which use such numbers as names (not recommended for multiple reasons) and array access via IDispatch with such numbers as keys/member names.
  • Reworked the handling of vkXXscYYY:
  • Fixed GetKeyVK and GetKeyName treating vkXXscYYY as vk00scYYY.
  • Send is now more strict with {vk...} and invalid suffixes, consistent with similar changes made by [v1.1.27.00] (but sc is still supported).
  • Reduced code size.

New in AutoHotkey 1.1.27.02 (Jan 2, 2018)

  • Fixed loading of bmp files as icons at original size
  • Fixed compound assignments such as Test.Prop[1] += 1 (broken by v1.1.27.01)

New in AutoHotkey 1.1.27.01 (Dec 31, 2017)

  • Fixed program crashes caused by ++X or --X in scripts which lack #NoEnv (broken by v1.1.27.00).
  • Fixed #Warn ClassOverwrite giving an erroneous warning for ++MyClass.X.
  • Fixed remapping to allow custom combinations such as a & b::c.
  • Fixed Send/hotstrings/Input to adapt to the keyboard layout of the focused control instead of just the active window. In particular, this affects UWP apps such as Microsoft Edge.
  • Fixed hook hotkeys to suppress the Start menu activation which occurs when an isolated Ctrl/Shift up is received. Ctrl up may be generated by the system when switching from a keyboard layout with AltGr to one without (such as from UK to US), if Ctrl is not held down at the time. This fixes hotkeys such as $#z::WinActivate x when the change in focus causes those conditions.
  • Fixed Input not collecting characters when both Shift keys are down.
  • Fixed Input to use "sc" and "vk" for end keys in ErrorLevel rather than "Sc" and "Vk" (caused by v1.1.20).
  • Fixed GetKeyName/VK/SC("vkXXscYYY") where YYY begins with A-F (broken by v1.1.26).

New in AutoHotkey 1.1.27.00 (Dec 27, 2017)

  • Replaced AU3_Spy.exe with WindowSpy.ahk:
  • AU3_Spy.exe is still launched if WindowSpy.ahk is not found.
  • It now follows the focused control by default, and has a checkbox for both window and control to follow the mouse.
  • It no longer takes over a global hotkey (Win+A). Instead, hold Ctrl or Shift to suspend updates (release them after focusing Window Spy).
  • It is now possible to Alt-Tab to Window Spy on Windows 10 without the contents of the GUI changing.
  • Changed a-z to mean vk41-vk5A when absent from the keyboard layout, except with Raw mode or when sending single unmodified characters. This allows hotkeys and sent keyboard shortcuts to work more intuitively on certain non-English keyboard layouts.
  • Changed Send on ANSI versions to use SendInput() in place of Alt+nnnnn for special characters.
  • Changed the rules for masking Alt/Win after pressing a hook hotkey:
  • Explicitly sent Alt/Win up may be masked. This fixes remappings such as AppsKey::RWin, but hotkeys which are intended to activate the Start Menu may require new workarounds.
  • If Alt/Win is logically but not physically down, only hotkeys which require Alt/Win (such as #a::, not *a::) cause masking. This is to allow a remapping or wildcard hotkey to send the key-up without it being masked.
  • Unsuppressed hotkeys such as ~#a:: no longer cause masking, because the unsuppressed keydown/keyup is sufficient to prevent a menu. However, mouse hotkeys like ~*MButton:: no longer suppress the Start Menu if combined with the Win key. It can be suppressed manually with Send {Blind}{vk07} or similar.
  • The keyboard hook now tracks events in relation to Alt/Win, so that the mask key does not need to be sent if Alt/Win was already masked by some other event (physical or sent).
  • The hotkeys ~LWin:: and ~RWin:: no longer suppress the Start Menu. See #MenuMaskKey for details and a workaround.
  • Added proper validation for vk or sc key names, so names such as "sc01notvalid" are no longer recognized as keys.
  • Scripts containing hotkeys of the form VKnnSCnnn:: will need to be corrected by removing SCnnn, which was previously ignored.
  • Help file: Replaced the standard HTML Help Viewer sidebar with the new HTML5 sidebar developed by Ragnar-F.
  • New features:
  • Added Min/Max built-in functions. [PR #84 from Ragnar-F]
  • Added A_Args as an alternative to the numbered variables.
  • Added force-local mode for functions.
  • Added #Warn ClassOverwrite.
  • Added {Text} mode for Send and T option for hotstrings. These are like the Raw mode, but more reliable.
  • Added {key DownR} and changed remapping to use it, to fix issues with AppsKey::RWin and similar.
  • Bug fixes:
  • Fixed icon-loading to not default to ID 0 when the index is invalid.
  • Fixed VK↔SC mapping of PrintScreen. SC→VK was already correct on Vista and later.
  • Fixed Hotkey control returning scXXX instead of names in some cases.
  • Fixed ListVars crashing if a ByRef parameter refers to a variable containing an object. [PR #86 from HotKeyIt]
  • Fixed some (very unlikely) memory leaks.
  • Fixed menu handles not being freed if only the standard items are used.
  • Fixed bold font not being applied to default menu item if it has a submenu and a Win32 menu handle.
  • Fixed Send to use the correct modifier state with Unicode chars.
  • Fixed ControlSend {u n}, where u is Unicode, to send n times, not just 1.
  • Fixed inconsistent behavior of AltGr between OS versions. Specifically, RAlt:: once again causes the system to "release" LCtrl on Windows 10, as it did prior to v1.1.26.01 (but unlike those old versions, it prevents the RAlt-up from reaching the active window). This change should not affect layouts without AltGr.
  • Fixed Menu Tray, Icon and SB_SetIcon to allow bitmaps.
  • Fixed menu items to not disappear when a cursor is set as a menu item's icon.
  • Improved launching of Window Spy and the help file:
  • If AutoHotkey is installed but the current executable is in a different directory (i.e. portable), the installed file is no longer preferred as it may be the wrong version. It may still be used as a fallback.
  • On failure to launch the file, show the error message inside the dialog, not in its titlebar.
  • Fixed one-line hotkeys with expressions beginning in sc or vk.
  • Fixed >/< hotkey modifiers incorrectly allowing both keys to be pressed. For example, <^A could erroneously be triggered by LCtrl+RCtrl+A, thereby preventing the <>^A hotkey from working.
  • Fixed auto-replace hotstrings inserting the literal text "{Raw}" in some cases (specifically, when the replacement contains {Raw} and the O, R and * options were not used).
  • Fixed some hotkeys not using the hook when eclipsed by a wildcard hotkey, depending on the order of definition.
  • Fixed key-down hotkeys to revert to "reg" if they were only "k-hook" because of a corresponding key-up hotkey which has since been disabled. (Prior to v1.1.07.03 this already happened, but the key-down hotkey was never set to "k-hook" in the first place if defined after the key-up.)
  • Fixed hook hotkeys to ignore modifier changes made by Send !^+#{key} or when sending Unicode characters. This restores Send to how it was prior to v1.1.06 when at SendLevel 0, but keeps the v1.1.06+ behavior at SendLevel >= 1, allowing Send to trigger the right hotkeys.
  • Improved the odds that Send from a "reg" hotkey such as ^m::Send x will restore the modifier state if Send is being called for the very first time. This makes it less likely to produce a different (and unexpected) result the first time it is held down, such as xmmm instead of xxxx.

New in AutoHotkey 1.1.26.01 (Jul 16, 2017)

  • Fixed RegDelete (with no args) failing when A_LoopRegSubKey is blank, such as when enumerating keys directly under the root key.
  • Fixed RAlt/LAlt:: sometimes failing to prevent menu activation after the user alt-tabs away from a window and reactivates it.
  • Fixed SC → VK translation for multimedia keys, CtrlBreak, Pause, LWin and RWin, with the exception that multimedia keys and CtrlBreak are still translated incorrectly on Windows 2000 and XP.
  • Fixed VK → SC translation for multimedia keys, CtrlBreak and Pause.
  • Fixed 'Wait commands such as RunWait to log extra lines for ListLines only when necessary to show that it is still waiting; that is, after resuming from an interruption which logged other lines.

New in AutoHotkey 1.1.26.00 (Jul 16, 2017)

  • Changed the format ListVars uses to display variables containing objects. The object's class name is now shown.
  • Added "class" and "clsid" modes to ComObjType().
  • Revised class names shown by the debugger and significantly reduced code size in the process.
  • Revised FileSetAttrib, FileSetTime and FileDelete to reduce code size. There should not be any changes in behaviour.
  • Made other minor optimizations to code size.
  • Fixed GetKeySC() with the key names Esc, Escape, ScrollLock and PrintScreen.
  • Fixed hotstring word detection of words containing nonspacing marks, such as Arabic diacritics.

New in AutoHotkey 1.1.25.02 (Jul 16, 2017)

  • Fixed GUI option strings being permanently truncated if an error is raised.
  • Fixed properties and class sub-variables to allow non-ASCII characters.
  • Fixed new operator to allow __New to throw or exit.

New in AutoHotkey 1.1.25.01 (Mar 5, 2017)

  • Fixed Send to allow other scripts to act on modifier state changes which immediately precede a special character, such as the Shift release in Send Mört.

New in AutoHotkey 1.1.25.00 (Mar 4, 2017)

  • Added Hotkey, If, % FunctionObject.
  • Fixed website address in Help menu.

New in AutoHotkey 1.1.24.05 (Feb 3, 2017)

  • Fixed WinSet AlwaysOnTop/Trans/TransColor to work on windows with 0 exstyle.

New in AutoHotkey 1.1.24.04 (Dec 18, 2016)

  • Fixed File.ReadNum() repeating old data if a prior File.Read() had stopped reading at the end of the buffer.
  • Improved buffer utilisation when File.Read() reaches the end of the buffered data.
  • Fixed GuiControl +Password to use the default bullet character on XP and later.
  • Fixed GuiControl +/-Password to redraw the control immediately.

New in AutoHotkey 1.1.24.03 (Nov 20, 2016)

  • Fixed COM exception messages to not end in `r.
  • Fixed {U+x} to support supplementary characters (x > 0xFFFF).
  • Fixed class properties which lack get{} to return an empty value instead of the internal Property object when the class has a base which does not define a value for the property. Properties defined in baseless classes already behaved correctly.
  • Fixed the background color of controls on a Tab3 control when the system has visual styles disabled (i.e. Windows Classic).
  • Fixed handling of thread-exit in functions which are called directly by an event (such as OnExit functions). This bug had no known effect except in the v2-alpha branch.
  • Fixed the debugger to detect disconnection immediately (i.e. when a client terminates without calling stop/detach).
  • Fixed the debugger to treat property_get -m 0 as "unlimited", as per the DBGp spec.
  • Fixed the debugger to expect base64 for property_set -t integer/float, as per the DBGp spec.

New in AutoHotkey 1.1.24.02 (Oct 13, 2016)

  • Fixed OnMessage to pass lParam as unsigned on 32-bit.
  • Fixed Gui Name : to allow spaces before the colon.
  • Fixed identifying a Gui or GuiControl by HWND with a negative value.
  • Fixed ComObject to suppress any errors raised by disconnection of events after the script has released the object.
  • Fixed Gui Show causing the window to shrink if it had a multi-line menu bar.
  • Fixed LV_InsertCol(n, width) not causing ListView scrollbar to update on some OS versions.
  • Optimized code size of FileRecycleEmpty.
  • Added a Run with UI Access option to the installer.
  • Added documentation for Tab3 autosizing.
  • Fixed several Tab3 bugs:
  • Autosizing was not being triggered by the first call to Gui Show if the AutoSize or w and h options were used.
  • If a Tab3 control is empty when autosizing occurs, it now retains the default size instead of becoming unusable.
  • Autosizing now occurs immediately before creating another tab control, as though Gui Tab was called.
  • Autosizing failed if the tab control had negative screen coords.
  • Hiding a Tab3 control with GuiControl now also hides its dialog/background.

New in AutoHotkey 1.1.24.01 (Aug 2, 2016)

  • Changed Hotkey, If, Expression to raise an error if the unused third parameter is not blank.
  • Fixed &&, || and ternary to release any object used as the condition, as in if (a.subObject && b).
  • Fixed Gui/GuiControl failing to "check" radio buttons within a Tab3 control.
  • Fixed FileCreateShortcut to allow relative paths for the LinkFile parameter on Windows 10.
  • Fixed themed Tab3 control to not override the custom text color of its controls.
  • Fixed debugger mishandling continuation commands in some specific cases.

New in AutoHotkey 1.1.24.00 (May 22, 2016)

  • BREAKING CHANGES:
  • Passing SetTimer's Label parameter an empty variable or an expression which results in an empty value is now considered an error. The parameter must be either given a non-empty value or completely omitted.
  • Run-once timers are automatically deleted after running if they are associated with an object created by the script. This allows the object to be freed if the script is no longer referencing it, but it also means the timer's Period and Priority are not retained.
  • SetTimer, Hotkey, GuiControl and Menu now check the minimum parameter count of functions given by reference (not just by name, as in previous versions). If the function requires too many parameters, an error is raised or ErrorLevel is set (as appropriate).
  • BACKWARD-COMPATIBLE CHANGES:
  • If SetTimer's Label parameter is omitted and A_ThisLabel is empty, the current timer (if any) is used.
  • NEW FEATURES:
  • Added Tab3 control type, solving a number of issues with Tab controls.
  • BUG FIXES:
  • Fixed GuiControl to update controls when adding/deleting tabs. Specifically:
  • Selecting a new tab with || now works correctly.
  • Deleting all tabs now hides the controls of the former tab.
  • Fixed +Disabled/+Hidden losing effect on controls in a tab.
  • Fixed disabled tab controls to ignore Ctrl+Tab.
  • Fixed Gui Tab without parameters to start a new radio group if applicable. Gui Tab with parameters already had this effect.

New in AutoHotkey 1.1.23.07 (May 20, 2016)

  • Fixed Menu x, Insert, y, z, % object to use the object, not ignore it.
  • Fixed Menu x, Add, :item text, % object to use the object, not look for a submenu.

New in AutoHotkey 1.1.23.06 (May 16, 2016)

  • Fixed break label crashing the program if nested directly inside its target loop.

New in AutoHotkey 1.1.23.05 (Mar 28, 2016)

  • Fixed InputBox, MsgBox, FileSelectFile and FileSelectFolder sending an unwanted Alt-up if Alt is down. This was due to an error with the Ctrl/Shift workaround added in v1.1.22.01.
  • Improved the Ctrl/Shift workaround to avoid unnecessarily "masking" the Win key if Ctrl, Shift or Alt is also down.

New in AutoHotkey 1.1.23.04 (Mar 26, 2016)

  • Fixed LV_Modify to support omitting Options, as in LV_Modify(r,, col1).

New in AutoHotkey 1.1.23.03 (Mar 12, 2016)

  • Fixed __Delete meta-functions erroneously suppressing or prematurely re-throwing exceptions, when they are called during exception propagation.
  • Fixed load-time detection of function calls where a required parameter is blank, as in fn(x,,y).

New in AutoHotkey 1.1.23.02 (Mar 12, 2016)

  • Fixed RegDelete deleting the entire key instead of the default value.
  • Code maintenance; minor code size improvement.

New in AutoHotkey 1.1.23.01 (Jan 25, 2016)

  • Fixed a theoretical issue with loading scripts from weird/very long paths.
  • Ahk2Exe: Fixed Unicode in compiled scripts (broken by v1.1.23.00 release)

New in AutoHotkey 1.1.23.00 (Jan 16, 2016)

  • Added Menu Insert sub-command.
  • Added MenuGetHandle().
  • Added MenuGetName().
  • Added menu item options: Radio, Right, Break and BarBreak.
  • Improved the Menu command to allow identifying items by position: 1&
  • Added LoadPicture().
  • Added hicon/hbitmap: syntax for passing handles to commands which normally load an image from file.
  • Added built-in variables: A_CoordModeToolTip/Pixel/Mouse/Caret/Menu, A_DefaultGui, A_DefaultListView, A_DefaultTreeView, A_KeyDelayPlay, A_KeyDuration/Play, A_MouseDelayPlay, A_SendLevel, A_SendMode and A_StoreCapslockMode.
  • Added Ix Hotkey option to set the hotkey variant's input level to x.
  • Improved Picture control to support BackgroundTrans with icons.
  • Improved Picture control to reduce flicker when loading large images.
  • Small optimizations to the menu code and built-in var lookups.
  • Fixed conversion of menu items to/from separators.
  • Fixed A_ThisMenuItemPos to support duplicate item names.
  • Fixed sub-menus sometimes not being recreated after a menu is deleted.
  • Fixed AutoHotkeyXXX.exe to launch AutoHotkey.chm, not AutoHotkeyXXX.chm.

New in AutoHotkey 1.1.22.09 (Nov 11, 2015)

  • Fixed some issues with SetTimer Delete.
  • KeyHistory's timer count erroneously included deleted timers.
  • Calling KeyHistory within a thread started by a timer crashed the script if the timer had been deleted but not turned off.
  • Deleting the most recently created timer prevented subsequently created timers from working unless ALL timers were deleted.

New in AutoHotkey 1.1.22.08 (Nov 11, 2015)

  • Fixed For-loop to pass control correctly when _NewEnum/Next throws an exception.
  • Fixed Finally to suspend the pending exception until its body has been evaluated, not just until the first built-in function call.
  • Fixed load-time detection of invalid jumps from Finally blocks (broken by v1.1.20).

New in AutoHotkey 1.1.22.07 (Sep 27, 2015)

  • Fixed Gui control w-1 and h-1 options failing when DPI is 150+% and the Gui has not applied -DPIScale.
  • Fixed ~key up hotkeys to not perform an automatic Send {key down}. This was occurring only if the hotkey was turned on after the key was pressed down.

New in AutoHotkey 1.1.22.06 (Sep 13, 2015)

  • Fixed Input and hotstrings to catch Unicode/non-key character events.
  • Fixed auto-sizing of Edit controls to include the last line if blank.
  • Fixed handling of out-of-memory in ComObj functions.
  • Fixed ComObjArray to ignore excess parameters rather than crashing (only applies to dynamic calls).
  • Fixed GuiControl to append--not prepend--tabs, as documented.
  • Fixed XP64 support.

New in AutoHotkey 1.1.22.04 (Aug 19, 2015)

  • Fixed ObjRawSet() to return nothing.
  • Added Windows 10 supportedOS tag to the exe manifest (avoids some issues with the Program Compatibility Assistant and similar).
  • Added detection of syntax errors after ")" in a function declaration.

New in AutoHotkey 1.1.22.03 (Jul 13, 2015)

  • Fixed A_EndChar returning a truncated value for Unicode end chars.
  • Small implementation changes:
  • Changed A_Language to use GetSystemDefaultUILanguage().
  • Refactored Window Spy/help file launching from tray menu to improve code re-use.
  • Optimized Gui/Menu/Hotkey/Hotstring/OnClipboard message handling (minor).

New in AutoHotkey 1.1.22.02 (May 27, 2015)

  • Fixed TreeView to not raise * events for unknown notifications.
  • Fixed crashing/bad behaviour when a timer deletes itself.
  • Fixed RWin-up being masked in some rare cases where LWin-up wouldn't have been.

New in AutoHotkey 1.1.22.01 (May 25, 2015)

  • Fixed Text/Edit/Button control sizing to compensate for character overhang.
  • Fixed registry commands to allow : in the SubKey when combined with RootKey.
  • Fixed hotkey prioritization to take modifiers into consideration.
  • Refactored else/try/catch/finally handling to support hotkey::try cmd.
  • Added a workaround for the script's dialogs acting as though Ctrl or Shift is pressed after they are blocked by the keyboard hook.

New in AutoHotkey 1.1.22.00 (May 1, 2015)

  • Added SetErrorMode(SEM_FAILCRITICALERRORS) on program startup to suppress system-level error messages such as "There is no disk in the drive". Calling Drive or DriveGet no longer affects the process' error mode.
  • Changed MonthCal controls to have tab-stop by default on Vista or later.
  • Improved ComObjConnect to use IProvideClassInfo when available.
  • Fixed some issues with method/property definitions following an end brace on the same line.
  • Fixed Text/Link control auto-sizing to compensate for the +Border (WS_BORDER) style.
  • Fixed Break N when Loop is used directly below If/Else/Try/Catch.

New in AutoHotkey 1.1.21.03 (Apr 14, 2015)

  • Fixed detection of naming conflicts between properties and methods.

New in AutoHotkey 1.1.21.02 (Apr 4, 2015)

  • Fixed OnMessage(msg, fnobj, 0) to do nothing if fnobj wasn't previously registered.

New in AutoHotkey 1.1.21.01 (Apr 3, 2015)

  • Fixed StrReplace() to allow ReplaceText to be omitted.
  • Fixed class variables to allow non-ASCII names.

New in AutoHotkey 1.1.21.00 (Mar 28, 2015)

  • Added Loop, Reg, RootKey[\Key, Mode].
  • Added Loop, Files, FilePattern [, Mode].
  • Changed InputVar parameters to allow % expression (except with If commands).
  • Revised Object methods:
  • Added Object.InsertAt(), Object.Push() and ObjRawSet().
  • Added Object.Delete(), Object.RemoveAt() and Object.Pop().
  • Added Object.Length().
  • Added Ord() and updated Chr() to support supplementary chars (>0xFFFF).
  • Added StrReplace().
  • Removed the obsolete and undocumented 5-parameter mode of RegRead, which was exclusively for AutoIt v2 compatibility (the extra parameter was unused).
  • Changed RegRead, RegWrite and RegDelete so that the RootKey and SubKey parameters can optionally be combined.

New in AutoHotkey 1.1.20.03 (Mar 23, 2015)

  • Fixed MouseGetPos (OutputVarControl), GuiContextMenu and GuiDropFiles (A_GuiControl) to not ignore disabled controls [broken by v1.1.20.00].

New in AutoHotkey 1.1.20.02 (Mar 11, 2015)

  • Fixed add-first mode of OnMessage.
  • Fixed A_OSVersion for unrecognized OSes on x64 builds.
  • Fixed ExitApp to unpause the script before releasing objects in case a __delete meta-function is called.
  • Trivial optimizations and code maintenance.

New in AutoHotkey 1.1.20.01 (Mar 10, 2015)

  • Reverted the changes made in v1.1.20.00 to saving and restoring of ErrorLevel on thread interrupt, due to unintended consequences.
  • ErrorLevel is not reset or cleared when a new thread starts. Instead, it retains the value it had in the interrupted thread, as in v1.1.19 and older.
  • If ErrorLevel contains an object and the thread is interrupted, the object is replaced with an empty string when the thread resumes, as in v1.1.19 and older.
  • Re-fixed timers sometimes causing ErrorLevel to be formatted as hex.
  • Fixed class methods to retain a counted reference to the class.

New in AutoHotkey 1.1.20.00 (Mar 9, 2015)

  • New features:
  • Enhanced Hotkey, Menu, SetTimer, Gui events and Gui control events to accept a function instead of a label, if no label is found.
  • Enhanced Hotkey, Menu, SetTimer and Gui control events to accept a function object. Added a Delete sub-command for SetTimer to allow the object to be released.
  • Enhanced OnMessage() to allow any number of functions or function objects to monitor a single message.
  • Added OnExit() and OnClipboardChange(), which accept a function name or object.
  • Added capability to point hotkey labels at a function definition.
  • Added U/L/T modifiers to perform case conversion with Format().
  • Added the E option to the Input command, for handling end keys by character instead of keycode.
  • Added ** (stderr) support to FileAppend.
  • Added ObjBindMethod(obj, method, args*) and Func.Bind(args*).
  • Changes:
  • Changed the default behavior when the main script file is not found:
  • If no script was specified and the default script files are not found, show the new Welcome page in the help file.
  • If a script was specified or the help file is missing (or is named differently to the executable), just show an error message.
  • Changed WinActivate to restore the window if already active but minimized.
  • Changed WinActivate to look for a visible window to activate if DetectHiddenWindows is off and the active window is hidden, instead of doing nothing.
  • Changed the method used by A_CaretX/A_CaretY to retrieve the caret position.
  • Returns blank in more cases where the real caret position can't be determined, instead of returning the top-left of the active window.
  • Less likely to cause side-effects.
  • Works in console windows.
  • Changed A_OSVersion to use RtlGetVersion(), so that it can detect Windows 10 and hopefully future versions.
  • Changed A_OSVersion to return a version number of the form "major.minor.build" if it doesn't have a name for the OS.
  • Changed objects to support x[,y], x.y[,z] and x[](y).
  • User-defined objects can utilize this by specifying default values for parameters of properties and meta-functions. For __Call, the first parameter is omitted, as in x.__Call(,y).
  • COM objects invoke DISPID_VALUE if the member name is omitted. For example, x[] retrieves x's default property and fn[]() can be used to call JScript functions.
  • Several under-the-hood changes to fix bugs, reduce code size or improve performance, including:
  • Changes to preparsing of #if and static var initializers.
  • Changes to preparsing of { blocks }.
  • Bug-fixes:
  • Fixed VK to keyname conversions for keys 'A' to 'Z' to respect layout.
  • Applies to: GetKeyName, Hotkey control, A_PriorKey, KeyHistory and Input EndKey ErrorLevel (except where Shift key is required).
  • All other keys, including those that produce non-ASCII letters, were already translated according to AutoHotkey's current keyboard layout.
  • Fixed FileAppend to * (stdout) to respect the encoding parameter instead of always outputting ANSI text.
  • Fixed auto-sizing of GUIs with only one scrollbar.
  • Fixed Exception(m, n) crashing when n is too far out of bounds.
  • Fixed GuiContextMenu to set A_GuiEvent correctly on x64.
  • Fixed FileGetSize sometimes giving an indeterminate result if the file doesn't exist or can't be opened.
  • Fixed thread interrupts to save and restore ErrorLevel more fully, which fixes:
  • Strings longer than 127 chars being truncated.
  • Objects being discarded.
  • Interruption by a timer sometimes causing ErrorLevel to be given hexadecimal formatting.
  • Fixed ControlClick Pos mode to ignore disabled controls.
  • Fixed odd behaviour when Gui +MaxSize is smaller than +MinSize.
  • Fixed GuiControl/Get requiring a Gui name when given a control HWND.
  • Fixed meta-functions interfering with the line number reported by Exception().

New in AutoHotkey 1.1.19.03 (Feb 11, 2015)

  • Improved remapping to allow scXXX::Y when the current keyboard layout does not map scXXX to a VK code. However, Y must still exist on the current keyboard layout.
  • Fixed break n to work correctly when until is present, instead of terminating the thread.
  • Fixed ControlGetFocus disrupting the user's ability to double-click (thanks HotKeyIt).
  • Fixed ListView to not call the control's g-label for unsupported (and previously unknown) notifications such as LVN_GETEMPTYMARKUP.
  • Fixed #Include *i to exit the program as intended if X has a syntax error.
  • Fixed for var in expression sometimes crashing the program when expression calls a script function.

New in AutoHotkey 1.1.19.02 (Jan 26, 2015)

  • Removed the 16-color icons which were used on Win9x/Win2k.
  • Removed the separate tray icon resources.
  • Improved selection of icon size when loading icons from DLL/EXE files.
  • In short, prefer to downscale rather than upscale. This is especially helpful on systems with 125% or 150% DPI, where the system icon sizes are 20/40 or 24/48 instead of 16/32. If all of these sizes are present in the icon resource, this change makes no difference.
  • Fixed some issues with hotkey validation at load time.
  • Hotkeys which are never valid, like foo::, are now always treated as errors instead of giving a misleading warning about keyboard layout.
  • Hotkeys like ^!ä:: which are inactive because of the current keyboard layout are now allowed to have a same-line action, and the label is registered correctly (e.g. as "^!ä" and not as "^!ä:"). If the /iLib command line switch is used, the warning is suppressed.
  • Remappings which are inactive because of the current keyboard layout now show two warnings instead of an unrecoverable error.
  • If a Wheel hotkey is used as a prefix key, there is only one error message instead of two, and it respects /ErrorStdOut.
  • Fixed /iLib switch to write the file even if there's a syntax error.
  • Fixed return/break/continue/goto in try..finally.

New in AutoHotkey 1.1.19.01 (Jan 6, 2015)

  • Fixed Hotkey command crashing the program when trying to create new variants of existing hotkeys (broken by v1.1.19.00).
  • Made some minor optimizations to the Hotkey command and A_TimeIdle, relating to removal of Win9x support.

New in AutoHotkey 1.1.19.00 (Jan 5, 2015)

  • Added a name for Func.Call(). Func.() still works but is deprecated.
  • Fixed some issues with X.Y and X.Y(Z) in VBScript/JScript/C#:
  • If X.__Call contained a function name, it was being returned instead of called.
  • When X.Y(Z) returned a value, Z was ignored. Now it acts like X.Y[Z] when X.Y is not a function.
  • Fixed the Hotkey command ignoring the ~ (pass-through) prefix if Label was omitted.
  • Fixed the Hotkey command ignoring the $ (use-hook) prefix if the hotkey variant was already created without $.
  • Fixed %Fn%() syntax to work with JavaScript Function objects.
  • Fixed EXE manifest to disable UAC installer detection heuristics (broken by v1.1.17).
  • Improved the way threads are represented on the debugger's call stack.
  • The type of thread is shown instead of the label name, which is still available in the next stack entry. For hotkeys, the hotkey is shown instead.
  • The line number of the sub or function that the thread called is shown instead of the line the script was at before starting the thread.

New in AutoHotkey 1.1.18.00 (Dec 30, 2014)

  • Improved IDispatch implementation for AutoHotkey objects:
  • X.Y in VBScript and C# now returns X.Y if it is NOT a Func object; previously, it attempted to call X.Y() regardless of type.
  • X(Y) in VBScript, JScript and C# now returns X[Y] unless X is a Func object, in which case it is called as before.
  • X[Y] in C# now returns X[Y] if X is NOT a Func object; previously, it attempted to call X[Y]() regardless of type.
  • X.Y() in C# now returns X.Y if it is NOT a Func object, due to ambiguity in the C# dispatch implementation.
  • Unhandled exceptions are now converted to IDispatch exceptions.
  • Added support for creating new properties in JavaScript/IE DOM objects.
  • Fixed FileAppend, %VarContainingClipboardAll%, File causing crashes.

New in AutoHotkey 1.1.17.01 (Dec 29, 2014)

  • Fixed COM event handlers not receiving the final object parameter.

New in AutoHotkey 1.1.17.00 (Dec 27, 2014)

  • New features:
  • Added Format().
  • FileOpen() can now be used to read from stdin or write to stdout or stderr by passing "*" or "**" as the filename. AutoHotkey.exe * can be used to execute script text piped from another process instead of read from file. For an example, see ExecScript().
  • Added support for passing AutoHotkey objects to COM APIs as IDispatch.
  • Added support for VT_BYREF in ComObject wrappers. Use obj[] to access the referenced value.
  • Bug-fixes:
  • Fixed blue-screening on XP SP2.
  • Fixed owned ComObjArrays to be returned by value, not by pointer. That is, a copy of the array is returned instead of a pointer to an array which is about to be deleted.
  • Changed the URL in the sample script which is created when you first run AutoHotkey.
  • Fixed sc15D to map to vk5D/AppsKey (Send, GetKeyName, etc.).
  • Fixed Edit controls to not treat AltGr+A as Ctrl+A.
  • Fixed static class vars to not act as a target for labels which immediately precede the class.

New in AutoHotkey 1.1.16.05 (Sep 29, 2014)

  • Fixed x.y/[]/{} sometimes falsely being flagged as variadic.

New in AutoHotkey 1.1.16.04 (Sep 16, 2014)

  • Fixed a crash which occurred when overwriting a non-writable property.
  • Fixed a crash which occurred when a RegExMatch object is created with uncaptured subpatterns during a regex callout.

New in AutoHotkey 1.1.16.03 (Sep 12, 2014)

  • Fixed some bad behaviour in Abs() and Mod() caused by a broken bug-fix in v1.1.16.01.

New in AutoHotkey 1.1.16.02 (Sep 11, 2014)

  • Fixed parser to allow #include inside a class (broken by a6ea27f).
  • Fixed Clipboard returning binary CF_HDROP data in some instances.
  • Improved accuracy of FileGetSize on files which are still open.
  • Improved for-loop compatibility with COM objects.

New in AutoHotkey 1.1.16.01 (Sep 11, 2014)

  • Added syntax for defining dynamic properties in classes.
  • Added x+m and y+m options for Gui control positioning.
  • Added the #InputLevel of each hotkey to ListHotkeys (when non-zero).
  • Optimized RegExMatch with the O (object) option; capturing part of a long string is much faster than before in some cases.
  • Fixed objects to check for new methods after __Call completes (consistent with __Set and __Get).
  • Fixed some undefined behaviour occurring after VarSetCapacity fails.
  • Fixed FileRead to correctly report an error with files over 4GB, instead of truncating even when it wasn't requested.
  • Fixed FileRead *c to null-terminate correctly when byte length is odd.
  • Fixed some ClipboardAll issues and changed behaviour:
  • ClipboardTimeout is ignored for GetClipboardData(), since it never actually worked and it caused problems. This fixes timeouts and lost data when a file is on the clipboard (any file on Windows 8, or any file in a zip file or similar).
  • Zero-length clipboard items are allocated 1 byte upon restoring to the clipboard, since setting a zero-length item seems to always fail.
  • The presence of MSDEVColumnSelect/MSDEVLineSelect is now preserved when set by Scintilla, though any data set by VS is discarded.
  • When writing ClipboardAll directly to file, it now prefers Unicode (other usages of ClipboardAll have had this behaviour since v1.1.08).
  • ClipboardAll and FileRead *c on Unicode builds now round length up when odd. This increases the reported StrLen by 1, potentially avoiding truncation of the last byte.
  • Fixed A_EventInfo for TreeView items with negative screen coords.
  • Fixed a possible ListView/TreeView message filtering issue.
  • Fixed A_LineFile/A_LineNumber in #If expressions.
  • Fixed #If to add itself to ListLines (though as "If").
  • Fixed Abs(["-"]*) and similar crashing the program.
  • Fixed } funcdef(){ globally and }} ending a method/property/class.

New in AutoHotkey 1.1.15.04 (Aug 12, 2014)

  • Fixed a performance issue with &var_containing_long_string_of_digits.
  • Fixed built-in variables corrupting memory when an object is assigned.
  • Fixed parser to disallow continue where appropriate even if the current function is defined inside a Loop.
  • Fixed File.Encoding := x "-RAW" breaking encoding/decoding of non-ASCII characters. The -RAW suffix is now ignored.

New in AutoHotkey 1.1.15.03 (Aug 2, 2014)

  • Fixed meta-functions to exit the thread correctly after using Exit or Throw.
  • Fixed FileInstall to use A_WorkingDir when Dest is relative in a non-compiled script.

New in AutoHotkey 1.1.15.02 (Jul 7, 2014)

  • Fixed debugging negative integer keys in objects

New in AutoHotkey 1.1.15.01 (Jun 30, 2014)

  • Changed built-in error and warning dialogs to be always-on-top.
  • Fixed Until not breaking out of recursive file/registry loops.

New in AutoHotkey 1.1.15.00 (May 5, 2014)

  • Added A_OSVersion value WIN_8.1.
  • Changed the Hotkey command to apply/remove passthrough behavior on existing hotkey variants depending on whether the tilde (~) prefix is present.
  • Changed exe manifest to allow GetVersion/GetVersionEx to detect Windows 8.1.

New in AutoHotkey 1.1.14.04 (Apr 27, 2014)

  • Fixed DllCall() crashing the script when Function is pure integer 0.
  • Fixed IsFunc("ComObj(") to return false instead of throwing an exception.
  • Fixed ControlClick to send XButton1/XButton2 correctly.

New in AutoHotkey 1.1.14.03 (Feb 15, 2014)

  • Fixed a memory leak in new X when X.__Init aborts the thread.
  • Fixed breakpoints shifting onto class var initializers when they are interspersed with method definitions.

New in AutoHotkey 1.1.14.02 (Jan 30, 2014)

  • Fixed x:: and x up:: both firing on key-up if the state of the modifier keys prevented x from firing on key-down. The intended behaviour as of v1.1.14 is for both hotkeys to fire on key-up if x is also used in a custom combination like x & y::.

New in AutoHotkey 1.1.14.01 (Jan 16, 2014)

  • Fixed Try without Catch/Finally crashing if no exception was thrown.

New in AutoHotkey 1.1.14.00 (Jan 16, 2014)

  • Added Finally statement for performing cleanup after try/catch. [fincs]
  • Changed behaviour of ~ prefix with custom combos to be more intuitive.
  • Fixed x & y:: to fire both x:: and x up:: when x is released.
  • Fixed ImageSearch to set ErrorLevel=2, not 0, when a GDI call fails.
  • Fixed EnvGet crashing the program when the var exceeds 32767 chars.
  • Fixed a minor error-handling bug with StatusBarWait's ErrorLevel.
  • Fixed a cause of heap corruption with FileRead *c on ANSI builds.
  • Fixed passing of local vars in recursive calls to variadic functions.
  • Fixed script failing to load if the first line is an expression in parentheses.
  • Fixed PixelSearch Fast mode to set OutputVarX/Y only on success.

New in AutoHotkey 1.1.13.01 (Oct 11, 2013)

  • Fixed variadic function calls with named values for required parameters

New in AutoHotkey 1.1.13.00 (Aug 27, 2013)

  • Ported StrSplit() from v2 alpha.

New in AutoHotkey 1.1.12.00 (Aug 14, 2013)

  • Optional parameters can be omitted by writing two consecutive commas, as in InStr(a, b,, 2). Unlike previous versions, this now works for objects (including COM objects) and built-in functions. [a,,b] can be used to create a sparse array.
  • Object properties can now be set using variadic syntax, as in x[y*]:=z, where y contains an array of keys/indices or parameters.

New in AutoHotkey 1.1.11.02 (Jul 28, 2013)

  • Fixed GuiControl/Get to accept the ClassNN of a ComboBox's child Edit. Specifying the HWND of a ComboBox's child Edit was already supported as a means of identifying the ComboBox.

New in AutoHotkey 1.1.11.01 (Jun 25, 2013)

  • Fixed InputBox default width/height (broken by v1.1.11.00 - commit 7373cc6443).
  • Fixed DllCall arg type validation to handle SYM_OBJECT safely, and to respect #Warn UseUnset (when var name is not a valid type).
  • Changed VarSetCapacity(var) to never warn about uninitialized vars.

New in AutoHotkey 1.1.11.00 (Jun 21, 2013)

  • Added support for %A_LineFile% in #Include.
  • Reduced the file size of AutoHotkeySC.bin by reducing the resolution of the (rarely used) filetype icon.
  • Fixed class X extends Y to allow Y to be defined after X.
  • Developed by fincs: AutoHotkey is now DPI-aware. The Gui commands automatically compensate when DPI is not 96

New in AutoHotkey 1.1.10.01 (May 17, 2013)

  • Improved RegRead to support REG_BINARY values larger than 64K.
  • Improved RegWrite to support REG_BINARY/REG_MULTI_SZ values larger than 64K.
  • Fixed Process Close (and possibly other things) on Windows XP.

New in AutoHotkey 1.1.10.00 (May 11, 2013)

  • Added basic support for custom Gui control types.
  • Revised SoundSet, SoundGet and 'WaveVolume commands to better support Windows Vista and later.
  • Fixed Run "" to not pass the space as part of the args.
  • Fixed some issues with reading from console input (CONIN$).

New in AutoHotkey 1.1.09.04 (Mar 14, 2013)

  • Fixed Gui menu accelerator keys not working when the Gui itself (not a control) has focus.

New in AutoHotkey 1.1.09.03 (Feb 9, 2013)

  • Fixed two bugs which affected certain assignments where the target variable contains an unflushed binary number but has zero capacity.
  • Fixed GuiControl and GuiControlGet acting on the wrong control when given a HWND which does not belong to the current Gui. Instead, the condition is treated as an error.
  • Fixed OnMessage functions to set A_Gui and A_GuiControl correctly when the target Gui is a child window.

New in AutoHotkey 1.1.09.02 (Dec 27, 2012)

  • Fixed MsgBox to show an error message when given invalid Options, instead of silently exiting the thread.
  • Fixed syntax errors in class var initializers causing the program to crash without the proper error message.

New in AutoHotkey 1.1.09.01 (Dec 15, 2012)

  • Fixed AND/OR following a multi-statement comma, like ((x, y) and z).
  • Fixed RegExReplace to support duplicate subpattern names correctly.
  • Fixed Object.Remove() not freeing string keys.
  • Fixed base.Invoke() to not depend on dynamic variable resolution.

New in AutoHotkey 1.1.09.00 (Nov 7, 2012)

  • Breaking changes:
  • Removed .aut file compatibility and #AllowSameLineComments.
  • Removed undocumented AutoIt v2 commands.
  • Backward-compatible changes:
  • Allow optional parameters to be declared with := instead of =, for consistency with variable declarations and expressions.
  • Allow non-ASCII characters in unquoted keys ({key: x} and obj.key).
  • Changed name in version info from "AutoHotkey_L" to "AutoHotkey".
  • Bug-fixes:
  • Fixed instability caused by warning dialogs appearing part-way through evaluation of a command's args.
  • Fixed PixelSearch Fast mode treating "not found" as an error.
  • Fixed ahk_exe to allow other ahk_ criteria after it.
  • Fixed else continue 2 and similar requiring braces around the loop.
  • Fixed RegRead indicating failure after successfully reading binary data.
  • Fixed File.Length to compensate for or flush any buffered data.
  • Fixed Gui sizing to account for scrollbars when present.
  • Debugger:
  • Added support for asynchronous commands.
  • Improved handling of breakpoints on lines like else foo() or { bar() so that the debugger will actually break when appropriate.
  • Optimized code size, fixed several bugs and made the debugger generally more robust

New in AutoHotkey 1.1.08.01 (Aug 4, 2012)

  • Debugger: Fixed max_depth being either half the intended limit or unlimited

New in AutoHotkey 1.1.08.00 (Jul 18, 2012)

  • Breaking changes:
  • Changed the default script codepage to ANSI, as the previous behaviour was a common source of confusion. UTF-8 files must now have a byte order mark (BOM) to be recognized correctly. Notepad adds a BOM to any file saved as UTF-8.
  • Changed return x to preserve formatting of numeric strings; it is now equivalent to return (x).
  • Changed Gui, Name: New to set the new GUI as the default.
  • Other changes:
  • Changed ClipboardAll to prefer CF_UNICODETEXT over other text formats.
  • Changed Gui Show to allow floating-point numbers.
  • Changed A_OSVersion to return WIN_8 on Windows 8.
  • Changed AutoHotkey.exe file description to include "ANSI/Unicode 32/64-bit".
  • Changed the parser to allow lines like new MyObject() with no assignment.
  • Upgraded PCRE to 8.30.
  • Improved wording of some warnings and added a pointer to the documentation at the bottom of the warning dialog.
  • Improvements to the debugger:
  • Added basic support for inspecting Func, ComObject and RegExMatchObject objects.
  • Fixed the "attach debugger" message being ignored in some situations. See commit 83f0a0e.
  • New features:
  • Added support for the PCRE construct (*MARK:NAME) via RegExMatchObject.Mark.
  • Added support for classvar.x := y assignments in class definitions (after declaring classvar).
  • Added A_Is64bitOS.
  • Added SetRegView and A_RegView.
  • Fixes:
  • Fixed Func.() to merely skip the function call if mandatory parameters were omitted instead of causing the thread to silently exit.
  • Fixed Object.Remove() not releasing object keys.
  • Fixed key-down/key-up hotkey pairs to suppress input correctly when only one hotkey in the pair is enabled.
  • Fixed #Include to not affect the working directory used by subsequent #include directives.
  • Fixed objaddref() acting like ObjRelease() when called with a lower-case 'a'.
  • Fixed A_AhkPath in 32-bit compiled scripts to detect 64-bit AutoHotkey installations and vice versa.
  • Fixed TreeView controls with -Background option rendering incorrectly on older OSes.
  • Fixed error messages shown during execution of While/Until to identify the appropriate line.

New in AutoHotkey 1.1.07.03 (Mar 27, 2012)

  • Fixed Ctrl/Alt/Shift key-down hotkey breaking any corresponding key-up hotkey defined before it.
  • Fixed key-down hotkeys to always use the hook if defined after a key-up hotkey of the same key. If the key-down hotkey used the "reg" method, the hook would block the key-down event and trigger only the key-up hotkey.
  • Fixed load-time checks interpreting expressions with no derefs as raw text. For example, gosub % "foo" resolved to "foo": at load-time. Similarly, % "" was seen as invalid in various cases even if an empty string should be allowed.

New in AutoHotkey 1.1.07.02 (Mar 23, 2012)

  • Fixed a rare crash which can occur when GetClipboardData() fails.
  • Fixed ComObjArray() to return an empty string on failure instead of an arbitrary integer.
  • Fixed Object.Remove(i, "") affecting integer keys when !Object.HasKey(i).

New in AutoHotkey 1.1.07.01 (Mar 3, 2012)

  • Fixed FileRead to ignore #MaxMem when reading UTF-16 on Unicode builds.
  • Fixed dynamic function calls with built-in vars such as %A_ThisLabel%().

New in AutoHotkey 1.1.07.00 (Feb 29, 2012)

  • Enhanced %var%() to support function references, objects imitating functions and the default __Call meta-function.
  • Fixed ControlGet List to work for ListViews where the script and the target process aren't both 32-bit or both 64-bit.
  • Fixed SendEvent with a key delay of 0; a change introduced by v1.1.05.04 caused it to be slower than intended.
  • Fixed Object.Remove(i) not adjusting keys if Object[i] doesn't exist.
  • Fixed an error in ComObjType() which may have caused unpredictable behaviour when it is called via an alternative name.
  • Fixed ExitApp to exit the thread if an OnExit subroutine prevents the script from terminating, instead of resuming execution after the block which contained ExitApp.
  • Calling a function via an object no longer acts as a barrier to exiting the thread. Consequently, if Exit is used or a runtime error occurs within a class method, the entire thread exits instead of just the function.
  • Calling a base-class method using base.Method() or similar inside a class definition no longer causes a UseUnset warning if the method doesn't exist. Consequently, instantiating an object which has instance variables no longer causes a warning about the internal base.__Init method if the base class has no instance variables.

New in AutoHotkey 1.1.06.02 (Feb 13, 2012)

  • Fixed IniRead crashing when Section is omitted but Key isn't.
  • Fixed accuracy of FileGetSize with files which are 4GB or larger.

New in AutoHotkey 1.1.06.01 (Feb 13, 2012)

  • Fixed MsgBox smart comma handling to require numeric Options, not Title.

New in AutoHotkey 1.1.06.00 (Feb 13, 2012)

  • New features:
  • Integrated #InputLevel directive and SendLevel command by Russell Davis.
  • Integrated support for Link controls by ChrisS85.
  • Breaking changes:
  • Changed command parser to avoid trimming escaped characters such as `t or ` at the beginning or end of an arg.
  • Changed MsgBox's smart comma handling to improve flexibility and consistency.
  • % can now be used to make Options or Timeout an expression.
  • If the first arg is an expression, any unescaped comma which is not enclosed in quote marks or parentheses/brackets/braces will cause multi-arg mode to be used. These commas were formerly interpreted as multi-statement operators within the first-and-only arg (Text).
  • When Title is an expression, unescaped commas contained within the expression no longer interfere with smart comma handling.
  • If there are exactly two args and the first is empty or an integer, multi-arg mode is used. The former behaviour was to combine both into a single arg (Text).
  • Timeout can be a literal number or a single deref (and optionally part of a number; for example, %Timeout%.500). Contrary to the documentation, the former behaviour interpreted most other cases beginning with % as expressions (containing a double-deref).
  • Title can be an expression even if Text and Options are omitted.
  • Changed A_IsUnicode/A_IsCompiled to be defined as an empty string in ANSI versions/uncompiled scripts instead of being left undefined. This allows them to be checked without triggering #Warn warnings. Side effects include:
  • Attempting to assign directly to A_IsCompiled or A_IsUnicode always causes a load-time error. Dynamic assignments always fail, either silently or with an error dialog as appropriate. Previously assignments were allowed in uncompiled/non-Unicode scripts.
  • Attempting to take the address of A_IsCompiled or A_IsUnicode always fails.
  • A_IsCompiled and A_IsUnicode no longer appear in ListVars when referenced by a script which is not compiled/Unicode.
  • Changed Send and related commands to respect #MenuMaskKey when changing modifier keystates.
  • Other changes:
  • Changed GuiControl Choose to remove the ListBox/ComboBox/DDL's current selection when N=0.
  • Changed RegisterCallback to allow a Func object in place of a name.
  • Changed ListLines to show filenames (except when compiled).
  • Improved Run to output a process ID if possible when ShellExecuteEx is used.
  • Fixes:
  • Fixed handle leaks in RegRead.
  • Fixed x.y++ and similar to assign an empty string if x.y is non-numeric.
  • Fixed SendInput Win+L workaround causing Win key to "stick down".
  • Fixed Ahk2Exe auto-including the wrong file if an auto-include used #Include .

New in AutoHotkey 1.1.05.06 (Jan 4, 2012)

  • Fixed inc (++) and dec (--) having no effect when used on an object field containing a string.
  • Fixed inc (++) and dec (--) to cause a warning when used on an uninitialized variable.

New in AutoHotkey 1.1.05.05 (Dec 19, 2011)

  • Fixed continue n misbehaving when an inner loop has no braces.
  • Fixed RegExMatchObject[Name] to work correctly with duplicate names.

New in AutoHotkey 1.1.05.04 (Dec 8, 2011)

  • Fixed: Selected sub-command of ControlGet was unreliable on x64.
  • Fixed: CPU was maxed out while waiting if an underlying thread displayed a dialog (and possibly in other cases).

New in AutoHotkey 1.1.05.03 (Dec 1, 2011)

  • Fixed Loop Until VarContainingObject.

New in AutoHotkey 1.1.05.02 (Nov 21, 2011)

  • Fixed false detection of end-of-file when loading a compiled script in some cases.
  • Fixed SendInput to automatically release modifier keys when sending special characters or {U+xxxx} (which was broken by v1.1.00.01).
  • Fixed ComObjConnect to filter out non-dispatch interfaces instead of allowing the script to crash.
  • Fixed new %VarContainingClassName%().

New in AutoHotkey 1.1.05.01 (Oct 18, 2011)

  • Fixed class declarations to allow directives such as #Include.

New in AutoHotkey 1.1.05.00 (Oct 8, 2011)

  • Added Client coordinate mode.
  • Added object output mode for RegExMatch and RegEx callouts.
  • Added super-global declarations, which avoid the need to repeat global declarations.
  • Breaking change: Class declarations such as Class c now create a super-global variable instead of an ordinary global.
  • Added more detail to unhandled exception error dialogs.
  • Changed Gui +Owner to work even after the GUI is created.
  • Changed instance var declarations in class definitions to avoid leaving empty key-value pairs in the class object.
  • Changed #Include to use standard error message formatting when it fails (more detail; also respects ErrorStdOut).
  • Changed Throw to throw an Exception object by default when its parameter is omitted.
  • Changed format of runtime error messages slightly to improve consistency and code size.
  • Modified PCRE to use UTF-16 for input on Unicode builds, for performance.
  • Upgraded PCRE to 8.13.
  • Fixed thread not exiting as intended when an assignment in an expression fails.
  • Fixed #MaxMem preventing assignments to variables which don't require expansion.
  • Fixed inability of Try/Catch to catch COM errors.
  • Fixed GuiControlGet incorrectly treating parameter #2 as invalid in some cases.
  • Fixed input vars being resolved too soon, allowing them to be invalidated by an expression later on the same line.
  • Fixed RegEx callouts not causing matching to abort when an exception is thrown.
  • Fixed DllCall setting ErrorLevel to -4 when it should be -3.
  • Fixed While appearing twice in ListLines for its first iteration.
  • Fixed Try/Catch to allow If/Loop/For/While with no enclosing block.
  • Fixed enumerator object not being released when Until is used to break a For-loop.

New in AutoHotkey 1.1.04.01 (Sep 16, 2011)

  • Fixed FileRemoveDir setting ErrorLevel incorrectly.

New in AutoHotkey 1.1.04.00 (Sep 12, 2011)

  • Added exception handling support: try/catch/throw and Exception().
  • Added StdOut mode for #Warn.
  • Added Gui +HwndVARNAME option.
  • Added Gui, New [, Options, Title].
  • Added automatic support for keyboard accelerators such as Ctrl+O in Gui menus.
  • Changed handling of #Include when the /iLib command-line switch is present to resolve a problem with Ahk2Exe.
  • Changed GuiControl to retain the Progress control's current value when its style is changed.
  • Changed GuiControl and GuiControlGet to allow a HWND to be passed in the ControlID parameter.
  • Removed the 1GB limit from FileRead.
  • Improved error detection:
  • Hotkey, If, Expression, where Expression does not match an existing #If expression, is caught at load-time when possible.
  • Hotkey, IfSomething, where Something is invalid, is caught at load-time.
  • Class definitions with missing braces are detected as errors.
  • If a function call is used on the first line of a class definition, it is now correctly treated as an error.
  • GroupAdd now shows an error message when the group name is blank, instead of silently exiting the thread.
  • Removed some redundant "unset var" warnings which appeared when using the OutputDebug or StdOut warning modes.
  • If an unrecognized option is used with Gui, Gui Show, Gui New or GuiControl, an error message is shown and the thread exits unless try is used. This validation is not done at load-time due to complexity (it is common for the option parameters to contain variable references).
  • RegRead, RegWrite and RegDelete now set A_LastError to the result of the operating system's GetLastError() function.
  • +LastFoundExist is now treated as an error if it is combined with another option (+LastFound should be used in that case).
  • Fixed a bug affecting recursive variadic functions.

New in AutoHotkey 1.1.03.00 (Aug 29, 2011)

  • Added support for GUI names.
  • Added support for identifying a GUI by its HWND.
  • Added +Parent%ParentGui% Gui option.
  • Added support for external windows as Gui owners via +Owner%HWND%.
  • Added Name sub-command for GuiControlGet.
  • Added support for ActiveX controls via the Gui command.
  • Fixed: Empty hotkey control returned "vk00".
  • Fixed: Crashes and memory leaks related to COM events/ComObjConnect.
  • Fixed: GuiControlGet OutputVar, Subcmd, %OutputVar% always failed.
  • Changed "Missing (/[/{" error messages to "Unexpected )/]/}" for greater clarity.
  • Changed ListLines to display While and Until lines which are executed each iteration.
  • Changed ~= to have higher precedence than =/!=//= but lower than concat, and added it to the documentation.

New in AutoHotkey 1.1.02.03 (Aug 22, 2011)

  • Fixed (Debugger): numchildren attribute did not include Object.Base.

New in AutoHotkey 1.1.02.02 (Aug 22, 2011)

  • Fixed: Variable capacity was capped at 2GB on x64 builds.
  • Fixed: Last Found Window not set by #if WinExist(T).

New in AutoHotkey 1.1.02.01 (Aug 16, 2011)

  • Changed A_PriorKey to exclude key-up events.
  • Fixed process name/path retrieval in certain cases, including:
  • Retrieving name/path of a 64-bit process from a 32-bit script.
  • Retrieving name/path of an elevated process from a non-elevated process (UAC).

New in AutoHotkey 1.1.02.00 (Aug 7, 2011)

  • Added TV_SetImageList().
  • Characters which require non-standard shift states 16 and 32 now use a fallback method instead of producing the wrong keystrokes.
  • Revised handling of dead keys to solve problems which occur when multiple scripts with hotstrings are active.

New in AutoHotkey 1.1.01.00 (Jul 31, 2011)

  • Added support for instance variables in class definitions, using simple assignment syntax.
  • Added new built-in variables: A_ScriptHwnd and A_PriorKey.
  • Added new built-in functions: GetKeyName(), GetKeyVK(), GetKeySC() and IsByRef().
  • Added new sub-command: WinGet, OutputVar, ProcessPath.
  • Added the capability to specify a window by process name or path: ahk_exe %Name%.exe or ahk_exe %FullPath%.
  • Optimized ProcessName sub-command of WinGet.
  • Changed SetTimer to use A_ThisLabel if Label is omitted.
  • Updated ComObjConnect() to support using an object in place of a function name prefix.
  • Improved ComObjConnect() to allow the prefix/object to be updated without first disconnecting.
  • Improved parsing of continuation sections to allow expressions like (x.y)[z]() without escaping "(".
  • Replaced the method used to store script text in 32-bit compiled scripts; now consistent with 64-bit.
  • Fixed detection of AltGr in the active window's keyboard layout (on Unicode builds).
  • Fixed SendInput applying a redundant LCtrl-up some time after AltGr-up.

New in AutoHotkey 1.1.00.01 (Jul 18, 2011)

  • Fixed: Modifier keys weren't auto-released when sending special chars
  • Fixed: Scancode/modifier-key mapping conflicts such as sc1xx vs ^sc0xx
  • Fixed: $ and #UseHook had no effect if used only on the second or subsequent instance(s) of a hotkey
  • Fixed: Potential crash when returning a value from a __Delete meta-function
  • Fixed: "Uninitialized variable" warnings were triggered by the debugger
  • Changed: base.Method() no longer triggers a default meta-function or a warning
  • Changed: Gui +(Ex)Style no longer hides/shows the Gui
  • Changed the debugger to report type="undefined" for uninitialized variables
  • Added check to avoid incorrectly sending keystrokes for characters which actually require the "hankoku" key
  • Added support for integers as class variable names
  • Added "Static" keyword for declaring class variables

New in AutoHotkey 1.1.00.00 (May 3, 2011)

  • New features:
  • Implemented basic class definition syntax.
  • Implemented the new keyword for creating a derived object.
  • Added Func() for retrieving a reference to an existing function and improved IsFunc to recognize function references.
  • Added support for ++ and -- with object fields, such as x.y[z]++.
  • Changes:
  • Changed __Delete to not trigger __Call.
  • Changed OnClipboardChange to use AddClipboardFormatListener when available (i.e. on Windows Vista and later) to improve reliability.
  • Auto-concat with ( is more selective, so some invalid expressions like 12(34) will no longer work.
  • Fixes:
  • Fixed SetTimer Label, -0 to be treated as "run-once, very soon".
  • Fixed A_MyDocuments etc. to use SHGetFolderPath instead of undocumented registry keys.
  • Fixed non-empty ExcludeText causing windows with no text to be excluded.

New in AutoHotkey 1.0.97.02 (Apr 14, 2011)

  • Fixed misinterpretation of comma as an arg delimiter when enclosed in {} in an expression.
  • Fixed For-loop to set A_Index only after the Expression arg is evaluated, so that the outer loop's value can be used.
  • Fixed default script location to be based on the directory containing the EXE (as documented), not the working directory.
  • Improved load-time validation to detect invalid attempts to jump out of a function with Goto.

New in AutoHotkey 1.0.97.01 (Apr 4, 2011)

  • Fixed the 64-bit build to not truncate HWNDs or SendMessage/PostMessage params to 32 bits.
  • Fixed */:: being treated as an invalid hotkey (broken since L54).
  • Fixed the icons.

New in AutoHotkey 1.0.97.00 (Mar 28, 2011)

  • Added {key: value} as syntax sugar for Object("key", value).
  • Added [x, y, z] as syntax sugar for Array(x, y, z), which is a new function equivalent to Object(1, x, 2, y, 3, z).
  • Added slight optimization: resolve any reference to True, False, A_PtrSize or A_IsUnicode in expressions at load-time.
  • Fixed hotkey parser to treat x & ^y as an error instead of ignoring ^.

New in AutoHotkey 1.0.96.00 (Mar 22, 2011)

  • New features:
  • ComObjQuery: Queries a COM object for an interface or service.
  • ComObjFlags: Retrieves or changes flags which control a COM wrapper object's behaviour.
  • ComObjCreate allows non-dispatch objects to be created if an interface identifier (IID) is given.
  • COM arrays support for-loops and the Clone() method.
  • ListVars shows the inner variant type and value of each COM wrapper object, in addition to the wrapper's address.
  • Changes:
  • When a literal integer or variable containing both a numeric string and cached binary integer is assigned to a field of an object, an integer is stored instead of a string. This particularly benefits scripts calling COM methods which accept integers but not strings, or have different behaviour depending on the type of value.
  • NULL values are now allowed with ComObjParameter for the VT_UNKNOWN and VT_DISPATCH types.
  • Improved support for Common Language Runtime (.NET) objects via COM.
  • FileRecycle should now warn before deleting a file which is too large to recycle.
  • When a SafeArray created with ComObjArray is assigned to an element of another SafeArray, a separate copy is created. This prevents the script from crashing due to a second attempt at "destroying" the array. ComObjFlags allows this behaviour to be avoided.
  • Fixes:
  • Assigning to a COM array of VT_DISPATCH or VT_UNKNOWN crashed the script.
  • Break and Continue were tolerated outside of loops in some cases.
  • Standalone carriage-return (`r) was not correctly interpreted as end-of-line.
  • MouseMove miscalculated negative coordinates with the Input and Event send modes.
  • Selecting Edit This Script from the tray menu or using the Edit command crashed the script (broken by v1.0.95).
  • Error dialogs pointed at irrelevant lines of code in some cases.

New in AutoHotkey 1.0.95.00 (Mar 22, 2011)

  • All file I/O has been heavily optimized.
  • Added #Warn to assist with debugging; initial design by ac.
  • By default, if name_var contains a function name, name_var.() calls the function. This can be overidden via the default base object, as before.
  • Run supports verbs with parameters, such as Run *RunAs %A_ScriptFullPath% /Param.
  • If an operator which can accept either one operand (&x) or two numeric operands (x & y) follows a quoted literal string, auto-concat occurs and the operator is applied only to the right-hand operand. This is because quoted literal strings are always considered non-numeric and are therefore not valid input for numeric operators. For example, expressions like "x" &y and "x" ++y now work.
  • Fixed:
  • Wildcard hotkeys were not respecting modifiers such as ^!+ in specific cases.
  • File.Pos returned garbage for non-seeking file types; now it returns -1.
  • File.AtEOF was incorrectly true in some cases.
  • COM wrapper objects left A_LastError unset in some cases.
  • Gui submenu icons did not work on Windows 2000/XP/Server 2003.
  • SplashImage clipped the image if height > width.
  • ComObjConnect did not alert when the first parameter is invalid.
  • SplashImage now uses GDI+ only when the other methods fail, for compatibility.
  • Tilde in ~x:: now affects x & y:: in the same way that ~x & z:: would, instead of having no effect.
  • A_PriorHotkey and A_TimeSincePriorHotkey now have the expected values when used with #If.
  • RegExReplace did not advance through the string correctly after a match failure if the string contained non-ASCII characters.

New in AutoHotkey 1.0.92.02 (Jan 20, 2011)

  • Fixed a memory leak which occurred when the return value of an object invocation or built-in function was not used, such as file.ReadLine() or SubStr(x,y,z) alone on a line.
  • Replaced the fix from v1.0.92.01 with a better fix, which also fixes k::MsgBox(),x:=y and doesn't break if().

New in AutoHotkey 1.0.92.01 (Jan 20, 2011)

  • Changed: FileCreateDir now sets A_LastError.
  • Fixed: GuiControl() or similar was sometimes misinterpreted as a command.

New in AutoHotkey 1.0.92.00 (Jan 20, 2011)

  • Added support for compound assignments with objects, such as x.y += z.
  • Improved IniWrite in Unicode builds to prevent an empty line from appearing at the top of each new file.
  • Improved the parser to be more permissive about what can follow {/}/Else, especially when combined.

New in AutoHotkey 1.0.91.05 (Jan 20, 2011)

  • Fixed: Cleanup code in COM method calls was freeing the wrong parameters.
  • Fixed (ANSI): DllCall set incorrect length for wstr parameters on output.
  • Fixed: Variadic function calls were unstable when param object was empty.

New in AutoHotkey 1.0.91.04 (Jan 20, 2011)

  • Fixed (Unicode): RegExReplace omitted all text up to StartingPosition (broken by v1.0.90.00)

New in AutoHotkey 1.0.91.03 (Jan 20, 2011)

  • Fixed: RegEx callout subpattern vars - broken by v1.0.90.00

New in AutoHotkey 1.0.91.02 (Jan 20, 2011)

  • COM: Added protection against NULL IDispatch/IUnknown pointers.
  • COM: Skip QueryInterface for IDispatch if VT_DISPATCH is passed explicitly.
  • Minor fix for maintainability: obj.field := var now correctly yields SYM_STRING, not SYM_OPERAND.

New in AutoHotkey 1.0.91.01 (Jan 20, 2011)

  • Fixed: Unexpected results with File.Write(Str) after text-reading.
  • Fixed: UTF BOM check caused unexpected results in files without a BOM.
  • Fixed (ANSI): Parsing loops and File.ReadLine() treated Chr(255) as EOF.
  • Fixed (Unicode): RegExReplace errors where the UTF-8 and UTF-16 lengths differed.
  • Fixed: Disabling the last hook hotkey breaks Input.
  • Added: Simple optimization for RegExMatch/Replace.

New in AutoHotkey 1.0.91.00 (Jan 20, 2011)

  • Added: ComObjError now returns the previous setting.
  • Added: ComObjType(co) and ComObjValue(co).
  • Added: ComObjMissing().
  • Added: ComObjArray() and basic SAFEARRAY support.
  • Added: "Take ownership" parameter for ComObjParameter().
  • Changed: Values passed to COM functions via ComObjParameter are no longer freed in the process of calling the function.
  • Changed: ComObj.x() now falls back to PROPERTYGET if member 'x' is not found. This fixes for-loops for some objects.
  • Changed: Wrap unhandled variant types in an object rather than returning integer value.
  • Changed: Manage VT_UNKNOWN/VT_ARRAY lifetime automatically, by default.

New in AutoHotkey 1.0.90.00 (Jan 20, 2011)

  • Fixed: UrlDownloadToFile in Unicode builds on Windows < 7
  • Fixed: Upper-ANSI characters were sent as Alt+0 in ANSI build
  • Fixed: File.Pos was incorrect after attempting to read past EOF
  • Fixed: Escape sequences in #If expressions and static initializers
  • Fixed: ClipboardAll sometimes crashed the script with certain formats
  • Fixed: Transform HTML calculated length incorrectly for &#NNN; entities
  • Fixed: VarSetCapacity now correctly ignores #MaxMem for ByRef variables
  • Fixed: FileAppend,,file.txt set ErrorLevel=1 even on success
  • Fixed: Match length was miscalculated for RegEx callouts with the P) option
  • Integrated Sean's improvements to number handling in COM interop
  • Optimized RegExReplace and RegExMatch in Unicode builds

New in AutoHotkey 1.0.48.05 (Sep 25, 2009)

  • Fixed crash of SendMessage and PostMessage when wParam or lParam is omitted (broken by 1.0.48.04). [thanks Lexikos]

New in AutoHotkey 1.0.48.04 (Sep 25, 2009)

  • Fixed StringSplit to work properly inside functions of compiled scripts (broken by 1.0.35.01). [thanks engunneer & Lexikos]
  • Fixed SendPlay not to wait for the release of the Windows key prior to sending an "L" keystroke (broken by 1.0.48.01). [thanks Lexikos]
  • Fixed A_EndChar to be valid when the B0 option is present, and to be empty when there is no ending character (broken by 1.0.44.09). [thanks Al2000]
  • Fixed FormatTime to yield a valid time of day even when the specified month is out-of-range (broken by 1.0.48.00). [thanks silveredge78]
  • Fixed FileCreateDir to support a leading backslash even when it is the only backslash; e.g. dir. [thanks jaco0646]
  • Fixed GuiControl/GuiControlGet/Gui/SendMessage to work reliably even when they trigger a callback or OnMessage function. [thanks Lexikos]
  • Fixed RegExMatch() not to produce too few replacements when an empty-string match is followed by a non-empty-string match.
  • Changed "While()" to be recognized as a loop rather than a function. [thanks Crash&Burn]
  • Improved UrlDownloadToFile to support FTP and Gopher. [thanks Lexikos]
  • Improved the stdout/asterisk mode of FileAppend to write immediately rather than lazily to standard output. [thanks Lexikos]
  • Added full support for "if % expression". [thanks kenomby]

New in AutoHotkey 1.0.48.03 (May 4, 2009)

  • Fixed "ListLines On" not to erase the most recent log entry in the line history. [thanks Lexikos]
  • Fixed ListView to respond properly to mouse dragging when timers are running. [thanks Solar]
  • Fixed key-up hotkeys so that if one is created while its key is being held down, the release of the key doesn't trigger the wrong hotkey. [thanks Peter & engunneer]

New in AutoHotkey 1.0.48.02 (Apr 20, 2009)

  • Changed and fixed Gosub and GroupActivate so that when a function calls an external/public subroutine, that subroutine will treat all dynamic variables as globals, and will have outside-of-function GUI behavior. [thanks kenomby & Lexikos]
  • Improved performance of True/False/A_EventInfo in expressions by treating them as integers vs. strings.

New in AutoHotkey 1.0.48.00 (Feb 26, 2009)

  • Compatibility: The change most likely to affect backward compatibility is that floating point numbers stored in variables now have higher precision. Scripts that rely on tiny differences in precision would either need to be reviewed and updated, or have their compatibility improved by using "SetFormat Float" (e.g. SetFormat, Float, 0.6) anywhere in the script. "SetFormat Float" disables the higher precision, but gives up some of the new, faster floating point performance.
  • Performance: The main theme of this release is faster performance. Almost all scripts should run faster -- especially those that make heavy use of expressions and integer math/comparisons (which may run up to three times as fast). To achieve the full benefit, a script either should avoid using SetFormat or should use SetFormat's fast mode.
  • Performance improvements:
  • Expressions and function calls are compiled more heavily, making them much faster (especially complex integer expressions, including those with commas).
  • Binary numbers are cached for variables to avoid conversions to/from strings. This makes numerical operations involving variables much faster.
  • Literal integers in expressions and math/comparison commands are replaced with binary integers, which makes them faster; e.g. X+5 and "if x > 5".
  • LOOPs, IFs, and ELSEs that have blocks (braces) are faster due to skipping the opening '{'. A side-effect is that the '{' is omitted from ListLines.
  • Thread-creation performance is improved, which should help rapid-fire threads in OnMessage(), RegisterCallback(), and GUI events.
  • Changes that might affect existing scripts (other than higher-precision floating point described at the top)
  • When "SetFormat, Integer, Hex" is in effect, assigning a literal decimal integer to a variable also converts it to hex. Usually this is only a display issue.
  • For OnMessage() performance, the message number and HWND arrive as standard numbers rather than appearing unconditionally as hex. Usually this is only a display issue.
  • To achieve various improvements in performance, scripts now use slightly more memory (proportionate to the number of variables and expressions).
  • Changed and fixed "if var is time" and other uses of YYYYMMDDHHMISS date-time stamps to recognize that months outside the range 1-12 are invalid.
  • Changed and improved dynamic function calling to allow passing more parameters than defined by a function, in which case the parameters are evaluated but discarded.
  • Other improvements:
  • Added function IsFunc(), which indicates whether a function may be called dynamically.
  • Added the while-loop, which repeats its commands until its expression evaluates to false.
  • Added an assume-static mode for functions.
  • Added built-in variables A_IsPaused and A_IsCritical.
  • Improved NumPut() to support UInt64 like DllCall().
  • Improved mouse wheel support by adding WheelLeft and WheelRight as hotkeys and supporting them in Send, Click, and related commands. However, WheelLeft/Right has no effect on operating systems older than Windows Vista.
  • Upgraded compiled script compressor from UPX 3.00 to 3.03.
  • Fixes:
  • Fixed inability to use MsgBox's timeout parameter when the "Text" parameter had an expression containing commas.
  • Fixed "Menu, Delete, Item-that's-a-submenu" not to disrupt the associated submenu.
  • Fixed the GUI Hotkey control to return usable hotkey names even for dead keys (e.g. "^" instead of Zircumflex).
  • Fixed RegDelete so that it won't delete an entire root key when SubKey is blank.
  • Fixed registry loops to support subkey names longer than 259 (rare). In prior versions, such subkeys would either be skipped or cause a crash.
  • Fixed FileSelectFolder by providing an option to make it compatible with BartPE/WinPE.
  • Fixed window/control IDs (HWNDs), which in rare cases wrongly started with 0xFFFFFFFF instead of just 0x.
  • Fixed inability of Send commands to use the Down/Up modifiers with the "}" character.

New in AutoHotkey 1.0.47.06 (Mar 10, 2008)

  • Fixed crash when a function was called concurrently with an optional ByRef parameter omitted by one thread but not omitted by the other.
  • Fixed "Menu, Tray, MainWindow" to enable the menu items in the main window's View menu.
  • Added dynamic function calling.

New in AutoHotkey 1.0.47.05 (Nov 22, 2007)

  • Fixed the Sort command: 1) fixed the "function" option not to misbehave when it's the last option in the list; 2) fixed the "unique" option so that when the delimiter is CRLF, the last item can be detected as a duplicate even when it doesn't end in CRLF; 3) fixed the "unique" option not to append a trailing delimiter when the last item is a duplicate. [thanks Roland]
  • Fixed RegExMatch() and RegExReplace() to yield correct results even when Haystack and OutputVar are both the same variable. [thanks Superfraggle]
  • Fixed inability to pass a parameter that is "a variable to which ClipboardAll has been assigned". [thanks Joy2DWorld & Lexikos]
  • Updated RegEx/PCRE from 7.0 to 7.4. For a summary of the major changes, see www.pcre.org/news.txt. For full details of every change and fix, see www.pcre.org/changelog.txt.
  • Fixed the Sort command: 1) fixed the "function" option not to misbehave when it's the last option in the list; 2) fixed the "unique" option so that when the delimiter is CRLF, the last item can be detected as a duplicate even when it doesn't end in CRLF;
  • Fixed RegExMatch() and RegExReplace() to yield correct results even when Haystack and OutputVar are both the same variable. [thanks Superfraggle]
  • Fixed inability to pass a parameter that is "a variable to which ClipboardAll has been assigned". [thanks Joy2DWorld & Lexikos]
  • Updated RegEx/PCRE from 7.0 to 7.4. For a summary of the major changes, see www.pcre.org/news.txt. For full details of every change and fix, see www.pcre.org/changelog.txt
  • Added GUI control "Tab2" that fixes rare redrawing problems in the original "Tab" control (e.g. activating a GUI window by clicking on a control's scrollbar)

New in AutoHotkey 1.0.47.04 (Aug 28, 2007)

  • Fixed key-up hotkeys like "a up::" not to block the pressing of the "a" key unless the hotkey's #IfWin criteria are met.
  • Fixed Round(Var, NegativeNumber), which in rare cases was off by 1.
  • Fixed crash of scripts that end in a syntax error consisting of an orphaned IF-statement (broken by 1.0.47.00).
  • Eliminated the "GetClipboardData" error dialog. Instead, an empty string is retrieved when the data cannot be accessed within the #ClipboardTimeout period.
  • Changed GUI checkboxes and radio buttons to default to "no word-wrap" when no width, height, or CR/LF characters are specified. This solves display issues under certain unusual DPI settings.

New in AutoHotkey 1.0.47.03 (Aug 1, 2007)

  • Fixed expressions to allow literal negative hexadecimal numbers that end in "E"; e.g. fn(-0xe).
  • Fixed block syntax to allow a function-call immediately to the right of a '}'.

New in AutoHotkey 1.0.47.02 (Jul 20, 2007)

  • Fixed the Number option of Edit controls to properly display balloon tips when the user types something other than a digit.
  • Fixed WM_TIMER not to be blocked unless it's posted to the script's main window.
  • Fixed wildcard hotkeys not to acquire tilde behavior when the same hotkey exists in the script with a tilde.
  • Fixed declaration initializers not to retain whitespace at the end of literal numbers. Also, they now allow spaces between a closing quote and the next comma.

New in AutoHotkey 1.0.47.17 (Jul 10, 2007)

  • Fixed RunAs not to crash or misbehave when a domain is specified. [thanks Markus Frohnmaier]
  • Changed relational operators to yield integers even when the inputs are floating point; e.g. 1.0 < 2.0 yields 1 vs. 1.0. [thanks Lexikos]

New in AutoHotkey 1.0.47.00 (Jun 19, 2007)

  • Added support for function libraries, which allow a script to call a function in an external file without having to use #Include.
  • Added RegisterCallback(), which creates a callable address that when called, redirects the call to a function in the script. [developed by Jonathan Rennison (JGR)]
  • Added NumGet() and NumPut(), which retrieve/store binary numbers with much greater speed than Extract/InsertInteger.
  • Improved Sort with an option to do custom sorting according to the criteria in a callback function.
  • Improve OnMessage() with an option to allow more than one simultaneous thread.
  • Improved Critical with an option to change the message-check interval, which may improve reliability for some usages.
  • Changed Critical to put SetBatchLines -1 into effect.
  • Changed the error messages produced by #ErrorStdOut to contain a space before the colon.
  • Fixed OnMessage() functions that return one of their own local variables to return the number in that variable, not 0.
  • Fixed potential crashing of built-in variables that access the registry (e.g. A_AppData, A_Desktop, A_MyDocuments, A_ProgramFiles).

New in AutoHotkey 1.0.46.17 (Jun 1, 2007)

  • Fixed A_UserName

New in AutoHotkey 1.0.46.17 (Jun 1, 2007)

  • Fixed A_UserName (broken by 1.0.46.16).

New in AutoHotkey 1.0.46.16 (May 30, 2007)

  • Fixed "Gui, Tab, TabName" when used after a previous "Gui Tab".
  • Improved SetTimer to treat negative periods as "run only once".
  • Added "GuiControlGet Hwnd", which is a more modular/dynamic way to retrieve a control's HWND.
  • Added built-in variables A_ThisLabel and A_ThisFunc, which contain the names of the currently-executing label/function.

New in AutoHotkey 1.0.46.15 (May 9, 2007)

  • Fixed GuiControl, GuiControlGet, and "Gui ListView/TreeView" to support static variables and ByRefs that point to globals/statics.
  • Fixed FileInstall causing the Random command to become non-random in compiled scripts.
  • Reduced the size of compiled scripts by about 16 KB due to UPX 3.0. [thanks to atnbueno for discovering the optimal command-line switches]

New in AutoHotkey 1.0.46.14 (May 2, 2007)

  • Added the "require administrator" flag to the installer to avoid a warning dialog on Windows Vista.

New in AutoHotkey 1.0.46.13 (May 1, 2007)

  • Fixed hotkeys like *x to fire even when x is also a hotkey that is prevented from firing due to #IfWin.
  • Improved optional parameters to accept quoted/literal strings as default values.
  • Improved ByRef parameters with the ability to be optional (i.e. they may accept default values).

New in AutoHotkey 1.0.46.12 (Apr 25, 2007)

  • Fixed inability to recognize a literal scientific notation number that begins with 0, such as 0.15e 1. [thanks Laszlo]

New in AutoHotkey 1.0.46.11 (Apr 23, 2007)

  • Fixed inability to have a function-call as the first item in certain comma-separated expressions. [thanks Majkinetor]
  • Fixed WinTitles like "ahk_id %ControlHwnd%" in ControlGet's FindString/Choice/List, and Control's Add/Delete/Choose. [thanks Freighter & PhiLho]
  • Improved floating point support to recognize scientific notation; e.g. 1.2e-5 (the decimal point is mandatory). Also improved "SetFormat Float" with an option to output in scientific notation. [thanks Laszlo]

New in AutoHotkey 1.0.46.10 (Mar 23, 2007)

  • Fixed StringSplit inside assume-local functions so that it creates a local array even when OutputArray0 exists as a global but not a local.
  • Improved ListView's item-changed notification ("I") to indicate via ErrorLevel whether the item has been selected/deselected, focused/unfocused, and/or checked/unchecked.
  • Added an additional layer of protection to compiled scripts. It is recommended that scripts containing sensitive data or source code be recompiled with the /NoDecompile switch.

New in AutoHotkey 1.0.46.09 (Mar 4, 2007)

  • Fixed ":=" deep inside expressions when used to assign the result of a recursive function to a local variable (broken by 1.0.46.06).
  • Fixed inability to pass certain ternary expressions to ByRef parameters
  • Fixed "GuiControlGet, OutputVar, Pos" so that it doesn't make the OutputVar blank.
  • Changed and fixed continuation sections so that the "Comment" option doesn't force the LTrim option into effect.
  • Changed the Terminal Server Awareness flag back to "disabled" on AutoHotkey.exe and compiled scripts. This improves flexibility and backward compatibility.

New in AutoHotkey 1.0.46.08 (Feb 8, 2007)

  • Fixed unreliability of ComSpec and environment variables on Windows 9x (broken by v1.0.46.07).
  • Changed the Terminal Server Awareness flag back to "disabled" on AutoHotkey.exe and compiled scripts. This improves flexibility and backward compatibility
  • Changed: When AutoHotkey.exe is launched without a script specified, it will now run (or prompt you to create) the file AutoHotkey.ahk in the My Documents folder. The only exception is when AutoHotkey.ini exists in the working directory, in which case it uses the old behavior of executing that file.
  • Improved DllCall to support an integer in place of the function name, which is interpreted as the address of the function to call.

New in AutoHotkey 1.0.46.06 (Jan 17, 2007)

  • Applied minor fixes and improvements to regular expressions by upgrading from PCRE 6.7 to 7.0. One of the most notable improvements is the `a option, which recognizes any type of newline (namely `r, `n, or `r`n). Similarly, the R escape sequence means "any single newline of any type".
  • Changed and fixed all Control commands and StatusBarWait to obey SetTitleMatchMode RegEx as documented.
  • Changed RegExReplace() to return the original/unaltered string rather than "" when an error occurs.
  • Changed: Enabled the Terminal Server Awareness flag on AutoHotkey.exe and compiled scripts.
  • Improved performance when assigning large strings returned from user-defined functions.

New in AutoHotkey 1.0.46.05 (Jan 4, 2007)

  • Fixed the Input command to allow named end keys like {F9} to work even when the shift key is being held down (broken by v1.0.45).
  • Fixed inability of "Gui Show" to focus the GUI window when the tray menu is used both to reload the script and to show the GUI window.
  • Fixed inability to pass some types of assignments (:=) to a ByRef parameter.

New in AutoHotkey 1.0.46.04 (Jan 2, 2007)

  • Fixed inability to pass the result of an assignment (:=) to a ByRef parameter

New in AutoHotkey 1.0.46.03 (Dec 19, 2006)

  • Fixed ListView's floating point sorting to produce the correct ordering

New in AutoHotkey 1.0.46.02 (Dec 18, 2006)

  • Fixed environment variables to work properly as input variables in various commands such as StringLen and StringReplace (broken by 1.0.44.14).

New in AutoHotkey 1.0.46.01 (Dec 15, 2006)

  • Fixed comma-separated declaration initializers such as "local x = 1, y = 2" to work even when immediately below an if/else/loop statement.
  • Fixed comma-separated expressions so when the leftmost item is an assignment, it will occur before the others rather than after.
  • Changed and fixed function-calls so that any changes they make to dynamic variable names, environment variables, and built-in variables (such as Clipboard) are always visible to subsequent parts of the expression that called them.
  • Changed: When a multi-statement comma is followed immediately by a variable and an equal sign, that equal sign is automatically treated as a := assignment. For example, all of the following are assignments: x:=1, y=2, a=b=c
  • Changed comma-separated expressions to produce the following effects: 1) the leftmost /= operator becomes true divide rather than EnvDiv; 2) blank values are not treated as zero in math expressions (thus they yield blank results).
  • Improved the performance of expressions by 5 to 20% (depending on type).
  • Improved the new assignment operators such as .= to support the Clipboard variable (even in comma-separated expressions).
  • Improved the .= operator so that it doesn't require a space to its left.
  • Improved GUI controls to accept static variables as their associated variables (formerly only globals were allowed).
  • Added option HwndOutputVar to "Gui Add", which stores a control's HWND in OutputVar

New in AutoHotkey 1.0.46.00 (Nov 29, 2006)

  • Added function SubStr(), which retrieves the specified number of characters at the specified position in a string.
  • Added assignment operators //=, .=, |=, &=, ^=, >>=, and

New in AutoHotkey 1.0.45.04 (Nov 15, 2006)

  • Fixed crash on Windows 9x when a script doesn't actually run (e.g. due to syntax error) (broken by v1.0.45).
  • Changed "Control Style|ExStyle" to report ErrorLevel 0 vs. 1 when the requested style change wasn't necessary because it was already in effect.
  • Improved #Include to support %A_AppData% and %A_AppDataCommon%.

New in AutoHotkey 1.0.45.03 (Nov 12, 2006)

  • Fixed file-pattern loops not to crash when recursing into paths longer than 259 characters. In addition, such paths and files are now ignored (skipped over) by file-pattern loops, FileSetAttrib, and FileSetTime.
  • Fixed functions that call themselves and assign the result to one of their own locals (broken by v1.0.45).
  • Fixed crash of scripts containing regular expressions that have compile errors.
  • Fixed GuiControl not to convert checkboxes into 3-state unless requested.
  • Changed UrlDownloadToFile to announce a user-agent of "AutoHotkey" to the server rather than a blank string.
  • Improved continuation sections to support semicolon comments inside the section via the option-word Comments

New in AutoHotkey 1.0.45.02 (Nov 8, 2006)

  • Fixed StringUpper and StringLower to work when OutputVar is the clipboard (broken by v1.0.45).
  • Fixed the hotkeys ~Alt, ~Control, and ~Shift to fire upon upon press-down rather than release (broken by v1.0.44).
  • Background: Without the tilde, Alt/Control/Shift fire upon release to avoid taking over both the left and right key. But a specific left/right hotkey like LAlt or RShift fires upon press-down.

New in AutoHotkey 1.0.45.00 (Nov 6, 2006)

  • Although this release has been extensively tested and is not expected to break any existing scripts, several low-level performance enhancements were made. If you have any mission-critical scripts, it is recommended that you retest them and/or wait a few weeks for any bugs to get fixed.
  • Added support for regular expressions via RegExMatch(), RegExReplace(), and SetTitleMatchMode RegEx.
  • Improved performance and memory utilization of StringReplace.
  • Improved performance of the := operator for expressions and functions involving long strings.
  • Improved ControlClick with a new option "NA" that avoids activating the target window (this mode also improves reliability in some cases). In addition, it's been documented that SetControlDelay -1 can improve the reliability of ControlClick in some cases.
  • Changed GUI buttons to default to "no word-wrap" when no width, height, or CR/LF characters were specified. This may solve button display issues under some desktop themes.
  • Fixed "Transform HTML" for the following characters: &`n><
  • Fixed misinterpretation of lines starting with "if not is" such as "if not IsDone".
  • Fixed inability of "Gui Show" to move a window vertically downward to where its bottommost row of pixels is now.
  • Fixed inability to use GroupActivate as the only line beneath an IF or ELSE.
  • Fixed inability of the Input command to differentiate between end-keys enclosed in braces and their (un)shifted counterparts; e.g. '{' vs. '['.

New in AutoHotkey 1.0.44.14 (Oct 3, 2006)

  • Fixed loop-variables like A_Index when accessed in more than one of a line's parameters. The inaccuracy occurred only when one of those parameters called a function that returned directly from the body of a loop.
  • Changed ListVars to display ByRef parameters by their own name rather than the caller's.
  • Changed the Input command to do nothing on Windows 9x (not even setting ErrorLevel and OutputVar).
  • Raised the limit on the number of GUI fonts from 100 to 200.
  • Changed StrLen()/StringLen and internal string-handling to avoid calculating a string's length when possible. Although this enhances performance (especially for large strings), scripts that use DllCall to pass a string via the address operator (&) rather than as a str parameter should call VarSetCapacity(Var, -1) to correct the internally-stored length (if it changed).
  • Improved performance slightly (above and beyond the StrLen improvement).

New in AutoHotkey 1.0.44.13 (Sep 21, 2006)

  • Fixed ControlGetPos and ControlMove to work with "ahk_id %ControlHWND%".
  • Fixed #CommentFlag to affect the line beneath it the same way as other lines.
  • Changed A_OSVersion to report Windows Vista as "WIN_VISTA" rather than "".
  • Added options to set min/max size of GUI windows; for example: Gui MinSize320x240 MaxSize640x480

New in AutoHotkey 1.0.44.12 (Sep 14, 2006)

  • Fixed timers interfering with double-clicks in FileSelectFile.
  • Fixed mouse hook causing a delay when pressing a GUI window's title bar buttons.
  • Improved GUI windows to have CS_DBLCLKS so that OnMessage() can monitor double clicks via WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK, and WM_MBUTTONDBLCLK.
  • Improved ListViews to support logical sorting, which treats digits as numbers rather than mere characters.

New in AutoHotkey 1.0.44.11 (Sep 9, 2006)

  • Fixed FileSelectFolder and TreeView to respond properly to mouse clicks when timers are running.
  • Fixed inability of OnMessage() to consistently monitor certain messages such as WM_NOTIFY. [thanks NumEric]
  • Fixed inability of literal/quoted strings to contain `%.
  • Fixed continuation sections to support #EscapeChar, #DerefChar, and #Delimiter. [thanks Laszlo]
  • Changed GroupBox to default to "no word-wrapping". This can be overridden via Wrap.
  • Changed/improved the ** operator and "Transform Pow" to support negative bases when the exponent isn't fractional. [thanks Laszlo]
  • Improved GUI responsiveness during UrlDownloadtoFile (especially for slow downloads

New in AutoHotkey 1.0.44.10 (Aug 27, 2006)

  • Fixed OnMessage() when called from inside a monitor function for the purpose of disabling some other monitor.
  • Changed/fixed ImageSearch's TransN option to use RGB vs. BGR as documented.
  • Changed the installer to omit the "Run" verb for .ahk files. The "Open" verb is now the default (with a new display-name of "Run Script").

New in AutoHotkey 1.0.44.09 (Aug 10, 2006)

  • Fixed hook hotkeys like $^b not to fire twice when a similar, key-up hotkey exists (like "#b up" ).
  • Fixed one too many backspaces in asterisk hotstrings whose next-to-last character is a dead key
  • Fixed "Gui Color" to work after the background color was previously changed to "default".
  • Changed "if var is xdigit" to tolerate a 0x prefix.
  • Added command "Gui LabelMyGui" to support custom label names (e.g. "MyGuiClose" instead of "2GuiClose"). This also allows multiple GUI windows to share the same set of labels

New in AutoHotkey 1.0.44.08 (Jul 25, 2006)

  • Fixed "Gui Show" not to unmaximize a window unless the options require it.
  • Fixed GuiControl's /-Left/Right for buttons, checkboxes, and radios.
  • Fixed UpDown creation to widen its buddy only when the buddy had no explicit width.
  • Improved MsgBox/IfMsgBox to support Cancel/Try Again/Continue, as well as a Help button.

New in AutoHotkey 1.0.44.07 (Jun 17, 2006)

  • Fixed stack overflow when a registry-loop traverses deeply nested subkeys.
  • Fixed Hotkey command to report ErrorLevel 0 vs. 51 upon success for joystick hotkeys.
  • Changed ClipboardAll to exclude formats that cause Outlook's MS Word editor to display error dialogs.
  • Changed and improved UrlDownloadtoFile to retrieve the file from the remote server vs. the cache. There is a new option to override this.
  • Improved remapping to support destination characters that don't exist on the keyboard (such as F1::� in English).

New in AutoHotkey 1.0.44.06 (Jun 9, 2006)

  • Fixed remapping-to-modifier such as F1::Control (broken by 1.0.44.05).

New in AutoHotkey 1.0.44.05 (Jun 8, 2006)

  • Fixed mouse movement being off by 1 pixel for coordinates very near 0 (broken by 1.0.43).
  • Changed and improved remapping-to-modifier (such as F1::Control) to release the modifier during the script's other uses of Send

New in AutoHotkey 1.0.44.04 (Jun 4, 2006)

  • Fixed double-colon warning dialog appearing upon launch of certain scripts. (broken by 1.0.44.03)
  • Fixed combination hotkeys like "a & b" to work even if "b & a" and "b & a up" are also present.
  • Fixed buddyless UpDown controls to work even if a StatusBar is present.

New in AutoHotkey 1.0.44.03 (May 30, 2006)

  • Fixed FileExist() to report "X" rather than "" for files whose attributes are all undefined.
  • Fixed Tab controls so that the first Text control added to a new page is auto-positioned correctly even if the previously added control was a Text control on some other page.
  • Fixed ImageSearch so that a transparent color like TransBlack is as effective in variation mode as non-variation mode.
  • Fixed GetKeyState and KeyWait to accept characters that don't exist in the current keyboard layout (in case the keyboard layout changes after launching the script).
  • Fixed hotkeys that don't exist in the current keyboard layout (such as ^!�:: in English) to display a warning and end the auto-execute section.
  • Changed and improved ControlSend, Send, Hotstrings, Input, and AltGr handling to use the target window's language rather than the script's. If you use only one keyboard layout on your system, this should not affect anything.
  • Improved VarSetCapacity() to interpret a capacity of -1 as "update this variable's internally-stored length". This is useful in cases where a variable has been altered indirectly, such as by passing its address via DllCall().

New in AutoHotkey 1.0.43.10 (Apr 29, 2006)

  • Improved PixelGetColor with two alternate modes that work in a broader variety of windows and full-screen apps. [thanks TDMedia]
  • Improved StringMid to allow "Count" to be omitted to retrieve all characters. [thanks kapege.de]
  • Improved FileSelectFile to support special folders such as My Computer via CLSID strings (FileSelectFolder and Run already support them)

New in AutoHotkey 1.0.43.07 (Apr 13, 2006)

  • Fixed inability of "Menu, Tray, Icon" to load icon #1 from file types cpl/scr/drv/ocx/vbx/acm/bpl (broken by 1.0.43.03). Similarly, all icon-capable features have been improved to support these file types.
  • Fixed the following legacy commands to accept function-calls containing commas: EnvAdd/Sub, LeftClick(Drag), RightClick(Drag).

New in AutoHotkey 1.0.43.06 (Apr 10, 2006)

  • Changed ahk_id to operate directly on the specified HWND when it's a control (child). Previously, it operated upon the topmost sub-control if that control had any sub-controls.
  • Improved Post/SendMessage to fully support strings put into address variables by the receiver (e.g. PostMessage, Msg, &MyVar).
  • Improved support for control HWND as an alternative to control ClassNN: 1) Added a MouseGetPos option to retrieve control HWND; 2) Added "WinGet ControlListHwnd" to retrieve a list of control HWNDs; 3) Added "ControlGet Hwnd" to retrieve the HWND that corresponds to a control's ClassNN.
  • Added "GuiControlGet FocusV", which gets the focused control's variable name rather than its ClassNN.

New in AutoHotkey 1.0.43.05 (Apr 8, 2006)

  • Fixed and improved support for .ICL files (icon libraries), which was broken by 1.0.43.03.
  • Changed case sensitivity in hotkey names back to pre-1.0.43.03 behavior: high ANSI letters like � and � are treated as different hotkeys than their lowercase counterparts

New in AutoHotkey 1.0.43.04 (Apr 4, 2006)

  • Fixed crash of characters above Chr(127) in hotstring abbreviations and the locale-search-from-right mode of InStr() and StringGetPos (broken by 1.0.43.03).

New in AutoHotkey 1.0.43.03 (Apr 3, 2006)

  • Fixed distortion of 16x16 icons loaded via ahk2exe or Menu, Tray, Icon.
  • Fixed the following to ignore #MaxMem as documented: VarSetCapacity(), FileRead, ClipboardAll, and ControlGet (ListView).
  • Changed the following to use locale case insensitivity vs. "A-Z only" insensitivity: Hotkey names, Hotstring abbreviations, Menu names, Input's MatchList, and Gui Tab.
  • Changed the expression equal operator (=) and the case-insensitive InStr() to use locale case insensitivity when StringCaseSense is Locale or On.
  • Improved StringCaseSense with a new option Locale that makes string comparisons case insensitive according to the rules of the current user's locale. For example, most English and Western European locales treat the letters A-Z and ANSI letters like � and � as identical to their lowercase counterparts.
  • Improved the Sort command and ListView sorting with a locale-case-insensitive option.
  • Improved mouse wheel hotkeys (WheelDown/Up) to report the number of wheel turns in A_EventInfo, which allows distinguishing between fast and slow wheel movement.
  • Improved FileRead with an option to read only the leading part of a file.

New in AutoHotkey 1.0.43.02 (Mar 30, 2006)

  • Fixed raw-mode hotstrings not to send the extra string {Raw} (broken by 1.0.43).
  • Changed SendMode: 1) renamed InputThenEvent to Input; 2) added InputThenPlay, which is the same behavior as the former "Input". This was done because SendEvent is less likely to cause compatibility problems than SendPlay.

New in AutoHotkey 1.0.43.01 (Mar 29, 2006)

  • Fixed mouse clicking at unspecified coordinates in particular apps; e.g. Send {LButton} (broken by 1.0.43).
  • Fixed tilde hotkeys so that if they remove a hook, their own key doesn't get stuck down (e.g. Mouse Gestures script and ~LCtrl::Hotkey, RButton, Off).

New in AutoHotkey 1.0.43.00 (Mar 28, 2006)

  • Fixed AltGr hotkeys that use Send, such as !m::Send ^c. Also fixed AltGr remappings such as F1::RAlt
  • Fixed inability of VarSetCapacity to free the memory of a ByRef parameter.
  • Fixed hotstring option b0 to show the ending character where you typed it rather than at the end of the replacement.
  • Improved the speed and reliability of auto-replace hotstrings by defaulting them to SendInput mode. There is also a new hotstring option to change the sending mode.
  • Improved the reliability of mouse clicks/drags in cases where the user is physically moving the mouse during the event.
  • Added commands Click and Send {Click}, which are easier to use than MouseClick. They also compensate if the left/right mouse buttons have been swapped via the control panel.
  • Added command SendMode, which makes Send synonymous with SendInput or SendPlay rather than the default (SendEvent). It also makes Click and MouseMove/Click/Drag use the specified method.
  • Added two new methods for sending keystrokes and mouse clicks: SendInput and SendPlay. These are generally faster and more reliable. Also, SendPlay allows keystrokes and hotstrings to be accepted by a broader variety of games.

New in AutoHotkey 1.0.42.07 (Mar 10, 2006)

  • Fixed crash of functions that recursively pass ByRef parameters

New in AutoHotkey 1.0.42.06 (Mar 7, 2006)

  • Fixed crash of A_ScriptDir (broken by 1.0.42.01).
  • Fixed Run/RunWait's passing of an extra space character at the end of the parameter list when launching shortcuts.

New in AutoHotkey 1.0.42.04 (Mar 6, 2006)

  • Fixed ClipboardAll when used with apps such as Word and Excel (broken by previous version).
  • Fixed ClipboardAll to prevent appearance of bookmarks in MS Word.
  • Fixed A_TimeIdlePhysical being disrupted by simulated AltGr keystrokes.
  • Fixed Send{Blind} not to cause sticking Win/Ctrl/Alt/Shift when the user releases such a key in the middle of a Send.
  • Improved the Send command not to press and release the shift key after each uppercase letter (e.g. Send ABC).
  • Improved SoundSet/Get to support ComponentType "Headphones".