· 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.
· 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)
· 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.
· 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 '}'.
· 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.
· 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]
· 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).
· Fixed A_UserName
· Fixed A_UserName (broken by 1.0.46.16).
· 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.
· 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]
· Added the "require administrator" flag to the installer to avoid a warning dialog on Windows Vista.
· 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).
· Fixed inability to recognize a literal scientific notation number that begins with 0, such as 0.15e 1. [thanks Laszlo]
· 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]
· 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.
· 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.
· 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.
· 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.
· 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.
· Fixed inability to pass the result of an assignment (:=) to a ByRef parameter
· Fixed ListView's floating point sorting to produce the correct ordering
· Fixed environment variables to work properly as input variables in various commands such as StringLen and StringReplace (broken by 1.0.44.14).
· 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
· Added function SubStr(), which retrieves the specified number of characters at the specified position in a string.
· Added assignment operators //=, .=, |=, &=, ^=, >>=, and
· 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%.
· 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
· 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.
· 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. '['.
· 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).
· 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
· 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.
· 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
· 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").
· 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
· 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.
· 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).
· Fixed remapping-to-modifier such as F1::Control (broken by 1.0.44.05).
· 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
· 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.
· 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().
· 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)
· 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).
· 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.
· 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
· 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).
· 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.
· 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.
· 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).
· 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.
· Fixed crash of functions that recursively pass ByRef parameters
· 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.
· 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".