提供: AutoHotkey Wiki
移動: 案内検索
リファレンス > バージョン履歴 - 公式ドキュメント

目次 - 2014/02/14[編集]

  • 修正: 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. - 2014/01/30[編集]

  • 修正: 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::. - 2014/01/15[編集]

  • 修正: Fixed Try without Catch/Finally crashing if no exception was thrown. - 2014/01/15[編集]

  • 追加: 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. - 2013/10/11[編集]

  • 修正: Fixed variadic function calls with named values for required parameters. - 2013/08/27[編集] - 2013/08/14[編集]

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. - 2013/07/28[編集]

  • 修正: 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. - 2013/06/25[編集]

  • 修正: InputBox デフォルトの幅/高さ (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).
  • 変更: VarSetCapacity(var) にて初期化されていない変数を警告しない。 - 2013/06/21[編集]

  • 追加: #Include での %A_LineFile% に対して追加サポート。
  • 改訂: ファイルタイプアイコン(ほとんど使われない)の解像度を減らし AutoHotkeySC.bin のファイルサイズ削減。
  • 修正: class X extends Y Y を X の後に定義することが可能に。
  • 追加(開発 by fincs): AutoHotkeyが DPI-対応、DPI が 96 でない場合Guiコマンドは自動的に補正する。Gui -DPIScale を参照。 - 2013/05/17[編集]

  • 改良: RegRead の64Kを超えるREG_BINARY値をサポート。
  • 改良: RegWrite の64Kを超えるREG_BINARY / REG_MULTI_SZ値をサポート。
  • 修正: Fixed Process Close (and possibly other things) on Windows XP. - 2013/05/11[編集] - 2013/03/14[編集]

Fixed Gui menu accelerator keys not working when the Gui itself (not a control) has focus. - 2013/02/09[編集]

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. - 2012/12/24[編集]

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. - 2012/12/15[編集]

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. - 2012/11/07[編集]

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".


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.


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. - 2012/08/03[編集]

Debugger: Fixed max_depth being either half the intended limit or unlimited. - 2012/07/14[編集]

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.


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 <Lib> 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. - 2012/03/25[編集]

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. - 2012/03/22[編集]

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). - 2012/03/02
Fixed FileRead to ignore #MaxMem when reading UTF-16 on Unicode builds.
Fixed dynamic function calls with built-in vars such as %A_ThisLabel%(). - 2012/02/27[編集]

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. - 2012/02/13[編集]

Fixed IniRead crashing when Section is omitted but Key isn't.
Fixed accuracy of FileGetSize with files which are 4GB or larger. - 2012/02/12[編集]

Fixed MsgBox smart comma handling to require numeric Options, not Title. - 2012/02/12[編集]

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.


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 <Lib>. - 2011/12/31[編集]

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. - 2011/12/17[編集]

Fixed continue n misbehaving when an inner loop has no braces.
Fixed RegExMatchObject[Name] to work correctly with duplicate names. - 2011/12/05[編集]

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). - 2011/11/30[編集]

Fixed Loop ... Until VarContainingObject. - 2011/11/20[編集]

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%(). - 2011/10/16[編集]

Fixed class declarations to allow directives such as #Include. - 2011/10/08[編集]

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. - 2011/09/15[編集]

Fixed FileRemoveDir setting ErrorLevel incorrectly. - 2011/09/11[編集]

This release contains a number of potentially script-breaking changes.

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 <Lib> 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. - 2011/08/28[編集]

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. - 2011/08/21[編集]

Fixed (Debugger): numchildren attribute did not include Object.Base. - 2011/08/20[編集]

Fixed: Variable capacity was capped at 2GB on x64 builds.
Fixed: Last Found Window not set by #if WinExist(T). - 2011/08/13[編集]

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). - 2011/08/06[編集]

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. - 2011/07/30[編集]

Added support for instance variables in class definitions, using simple assignment syntax.
Removed var keyword used in class definitions; use static instead.
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. - 2011/07/17[編集]

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 "hankaku" key.
Added support for integers as class variable names.
Added "Static" keyword for declaring class variables. - 2011/05/01[編集]

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]++.


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.


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. - 2011/04/14[編集]

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. - 2011/04/02[編集]

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. - 2011/03/28[編集]

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 ^. - 2011/03/21[編集]

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.


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.


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. - 2011/03/12[編集]

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.

  • 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. - 2011/01/19[編集]

  • 修正: 「file.ReadLine()」や「SubStr(x,y,z)」のようにオブジェクトのメソッドや組み込み関数の戻り値が利用されないような単独利用の場合にメモリリークが発生してしまう件。
  • 修正: v1.0.92.01で修正したものをより良い修正に置き換え、「k::MsgBox(),x:=y」や「If()」
  • のようなものが正常に動作するように。 - 2011/01/18[編集]

  • 変更: FileCreateDir を実行した際、APIの返すエラーコードを A_LastError に格納するように。
  • 修正: GuiControl() のようなコマンド名と被る関数が、コマンドと解釈されないように。 - 2011/01/13[編集]

  • 追加: オブジェクトのフィールドに適応可能な演算子(x.y += 2 x.y .= "abc" 等)。
  • 改良: ユニコード版における IniWrite で、新規生成時に空行がファイル先頭にできてしまうのを回避するように。
  • 改良: スクリプト解析でスクリプトフローにおける 「{」「}」「Else」
  • 等をより柔軟に解釈できるように(特にこれらの組み合わせ時)。 - 2011/01/11[編集]

  • 修正: COMのメソッド呼び出しのクリーンアップ処理で異なるパラメタを解放していた件。
  • 修正(ANSI): WStr型の戻り値で不正な長さをセットしていた件。
  • 修正: 可変長関数でパラメタオブジェクトが空の場合に不安定な挙動をしていた件。 - 2010/12/29[編集]

  • 修正(Unicode): すべてのテキストで StartingPosition が無視されていた件。 - 2010/12/27[編集]

  • 修正: v1.0.90.00 で壊れた正規表現コールアウトのサブパターン変数の件。 - 2010/12/26[編集]

  • COM: NULLポインタに対する保護が効くように。
  • COM: 明示的に VT_DISPATCH が渡された場合に IDispatch の QueryInterface をスキップするように。
  • 微修正: 保守性のため、obj.field := var が SYM_OPERANDSYM_STRING として扱われるように。 - 2010/12/24[編集]

  • 修正: テキスト読み取り後の File.Write(Str) で予期せぬ結果が起きた件。
  • 修正: UTF BOM チェックが BOMなしファイルで予期せずクラッシュしてしまう件。
  • 修正(ANSI): Parsing loops と File.ReadLine() で Chr(255) を EOF として扱ってしまっていた件。
  • 修正(Unicode): RegExReplace で文字長が UTF-8 と UTF-16 とで異なる場合にエラーとなっていた件。
  • 修正: 直近のフックを使ったホットキーを無効にすると、Inputが中断されてしまう件。
  • 追加: RegExMatch/Replace のシンプルな最適化。 - 2010/12/21[編集]


  • 追加: ComObjError() で以前の設定を返すように。
  • 追加: ComObjType(co) 及び ComObjValue(co)。
  • 追加: ComObjMissing()。
  • 追加: ComObjArray() 及び基本的な SAFEARRAY のサポート。
  • 追加: ComObjParameter() における "Take ownership" パラメタ。
  • 変更: ComObjParameter() を用いて COM関数に渡す値が、該当関数のコール中に解放されないように。
  • 変更: メンバ "x" が見つからない場合の ComObj.x() の呼び出しは、PROPERTYGET よりも後回しに。これは特定のオブジェクトのForループの問題を修正する。
  • 変更: オブジェクト内の整数値そのままでなく、ハンドルされていないバリアント型をラップするように。
  • 変更: デフォルトで VT_UNKNOWN/VT_ARRAY の生存期間を管理するように。 - 2010/10/03[編集]

※ バージョンの付け方が変更された。v1.0,9x系は v1.1 へのプレビュー的位置づけとなる。なお、今後のバージョンアップのロードマップが公開された。

  • 修正: Win7未満の Unicode 版での UrlDownloadToFile が正常に動作しなかった件。
  • 修正: ANSI版においてANSI以外の文字が Alt+0 で送られていた不具合.
  • 修正: EOFを超えてファイル読み込みを行った際に File.Pos が不正となる件。
  • 修正: #If (式) と static 初期化でエスケープシーケンス(`r `t 等)が効かなかった件。
  • 修正: 特定フォーマットで ClipboardAll がスクリプトをクラッシュさせてしまう件。
  • 修正: Transform,HTML での実体参照が誤った &#NNN; を発行する件。
  • 修正: VarSetCapacity で ByRef で渡された変数が #MaxMem の影響を受けてしまっていた件。
  • 修正: FileAppend での空文字列出力( FileAppend,,file.txt )で成功時にも ErrorLevel が 1 となっていた件。
  • 修正: 正規表現コールアウトで P) オプションの利用時にマッチ長が誤って算出されていた件。
  • 修正(Ahk2Exe): x64版での InputBox の不正な挙動
  • 修正(Ahk2Exe): #Include が正常に動作しない件。
  • 拡張: SeanによるCOMでの数値ハンドリング改善の取り込み
  • 最適化: RegExMatch と RegExReplace のUnicode版への最適化(速度向上)。

Revision 61 - 2010/10/03[編集]

  • 追加: ObjClone(Object)。Object.Clone() の実装時に漏れていた。
  • 追加: ユニコード版における正規表現のユニコードプロパティのサポート。同時に正規表現エンジンを 8.10 にアップグレード。
  • 追加: Object.Remove(int, "")。Object[int] を他のキーへの干渉なしに削除可能に。 (※1)
  • 変更: ComObj.xyz() は常にメソッド呼び出しとなるようにした。
  • 変更: Var := 123 は統一性を重視して式として取り扱うように。これにより Var := 123 と Var := (123) は等価となった(過去のバージョンでは前者は文字列として格納されるのみで、後者は文字列として格納されるとともにバイナリ数値としてキャッシュも行われていた)。特に言うと、この変更によりCOMオブジェクトの型不一致エラーを引き起こすいくつかの勘違いを避けることが出来る。
  • 修正: 必須パラメタを持つ関数の動的かつ可変長引数で呼び出した場合の不具合。
  • 修正: 変数をデフォルトでグローバルとした可変長引数を持つ関数の最終パラメタが明示的なローカル宣言が必要だった不具合。
  • 修正: 変数の静的初期化がブレイクポイントの設置を妨げていた不具合。
  • 修正: 64ビット版におけるポインタサイズに起因する正規表現コールアウトのエラー。
  • 修正: Input コマンドの「M」オプションで、Ctrl-M (`r) が Ctrl-J(`n) として扱われていた件。
  • 修正: Object.Remove(n) で該当キーが存在しない場合に空文字列ではなく("")0 を返していた不具合


 obj.Remove(intKey) は、削除対象のキーよりも大きなキーを持つフィールドは、それぞれキーが1つずつデクリメントされる。 以下の例だと、1,2,3 のキーを持つ配列から、2 のキーを削除すると、2より大きな値の 3, 5 のキー はデクリメントされ、結果として、「1 : 100」「2 : 300」「4 : 500」と表示される。
 arr := Object(1, 100,  2, 200,  3, 300,  5, 500)
 For key, value in arr
   MsgBox, % key " : " value

一方、obj.Remove(intKey, "") の追加により、削除対象キーよりも大きな値を持つキーに干渉が無くなる。以下の例では、結果として「1 : 100」「3 : 300」「5 : 500」と出力されるようになる。

 arr := Object(1, 100,  2, 200,  3, 300,  5, 500)
 arr.Remove(2, "")
 For key, value in arr
   MsgBox, % key " : " value

Revision 60 - 2010/09/24[編集]

Added: File.Encoding for changing or retrieving the codepage in use by a File object.
Added: Variadic functions and function-calls and indirect mode for callbacks.
Added: Object.Clone()
Changed: ByRef parameters no longer require the caller to supply a variable.
Changed: Obj.foo := "" now frees foo's contents as originally intended (but still doesn't remove the field).
Changed: OnMessage functions now tolerate optional and ByRef parameters.
Changed: RegisterCallback now enables execute access on callbacks in 32-bit builds (already did in 64-bit builds).
Changed: RegisterCallback now treats explicit ParamCount="" as omitted.
Fixed: For-loop was treating non-expression "0" as true for scripted enumerators.
Fixed: ComEvent (ComObjConnect) not working on the ANSI build.
Fixed: ComEvent (ComObjConnect) not correctly backing up/restoring local vars when calling a function which is already running.
Fixed: Buffer overflow in A_EndChar when there is no end char.
Fixed: Func->mNextFunc not inititialized to NULL (used only by LowLevel scripts).
Debugger: Added the capability to retrieve an object's contents (with a supported debugger client).
Debugger: Fixed a few bugs.

Revision 59 - 2010/09/12[編集]

Fixed: #If expression should now evaluate each expression at most once per keypress in all cases.
Changed: SplashImage uses common image-loading routines; now supports PNG and similar, but results may differ from before for icon files.
Added: For x,y in z.
Added: Loop .. Until expression, usable with any Loop or For-loop.
Added: Named loops; continue outer_loop, break 2, etc.
Debugger: Encode stdout and stderr packets as UTF-8.
Debugger: Allow user to Abort, Retry or Ignore when the initial connection fails.
Debugger: Allow attaching a debugger client by sending the script a registered window message.
Debugger: Allow detaching debugger client by sending the "detach" DBGp command.

Revision 58 - 2010/09/05[編集]

Added: static var := expression

Revision 57 - 2010/09/04[編集]

Fixed Str*, WStr* and AStr* DllCall return types on x64.
Added functionality to InStr to bring it in line with StringGetPos:

  • If StartingPos is negative, the search is conducted right-to-left beginning at that offset from the end.
  • An additional parameter is available to specify which occurrence of the string to find.

Added #include <LibName> for explicitly including a script from a function library folder.
Added functionality to IniRead and IniWrite allowing an entire section to be read or written.
Added functionality to IniRead allowing a list of section names to be retrieved.
Added support for custom verbs to Run/RunWait: Run *verb file.
Made improvements to the way Run/RunWait extracts the action and its parameters from the Target parameter.
Changed NumGet/NumPut to allow Offset to be omitted entirely since Type is always non-numeric.
Removed the restriction that a label can't point to the end of a block.

Revision 56 - 2010/08/29[編集]

Added support for x64 compiled scripts. Requires Ahk2Exe_L and x64 AutoHotkeySC.bin.
Fixed: Deref operator (*addr) rejected addresses outside 32-bit range.
Fixed: #If expression memory allocation error on x64.
Fixed: Custom hotstring end chars with code points greater than U+00FF.
Fixed: Special characters being sent out of sequence by SendInput/Play.
Fixed: */ being discarded in continuation sections (see L54).

Revision 55 - 2010/08/19[編集]

Fixed: GroupActivate not setting ErrorLevel=1 if no Label was specified.
Fixed: Tab controls in x64 build.
Fixed: String-copy mode of StrPut when length is omitted; broken by L53.
Fixed: Data-alignment issues in x64 builds.
Changed: Set A_LastError for more File* commands to assist debugging.
Includes FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version and FileSetAttrib/Time.
Excludes FileCopyDir, FileRecycle, FileMoveDir, FileRemoveDir, FileRecycleEmpty, FileCreateDir and FileInstall as the APIs used do not consistently set or return a Win32 error code.

Revision 54 - 2010/08/15[編集]

Fixed: RunAs in Unicode build. [jackieku]
Fixed: RegisterCallback in x64 build. [fincs]
Fixed: Executables failing to run on Win2k and WinXP prior to SP2. Win2k requires SP4 and updates (probably KB 816542). XP not tested.
Fixed: Dialogs such as MsgBox became unresponsive when interrupted by another script thread. Message filter/workaround added in L45 had to be removed. [Bug report]
Fixed: Multi-byte characters in default ANSI codepage; this was also causing a memory leak. [Bug report]
Fixed: ComObject now allows purely numeric property/method names. [Bug report]
Enhanced usability and capabilities of FileOpen/File object.

  • FileOpen's Flags parameter accepts a human-readable string of flags.
  • FileOpen's "update" mode has been renamed "read/write" and now creates the file if it didn't already exist.
  • FileOpen sets A_LastError as appropriate.
  • File := FileOpen(handle,"h") wraps an existing file handle in an object.
  • File.Seek(n) defaults to SEEK_END when n is negative.
  • File.Pos (or File.Position) can be used in place of Tell and Seek.
  • File.Pos, File.Length, File.AtEOF and File.__Handle can be used without empty parentheses().
  • File.Length can be set, as in File.Length:=n.
  • File.ReadNum() and File.WriteNum(n) read or write a number, where Num is a NumGet-compatible type name.
  • File.WriteLine(s) is equivalent to File.Write(s "`n"), for symmetry with File.ReadLine().
  • File.Read() reads and returns the remainder of the file when used without parameters.
  • File object now returns "" for unrecognized methods and invalid syntax rather than the numeric address of "".

Changed: GroupAdd's Label parameter now applies to the whole group. [Discussion]
Changed: GroupActivate sets ErrorLevel on success/failure. (Same thread as above.)
Changed: */ at the beginning of a line is ignored if there was no /*. [Discussion]
Removed ToCodePage and FromCodePage subcommands of Transform.

Revision 53 - 2010/08/08[編集]

Merged AutoHotkey64 - COM support and x64 compatibility.
x64 (changes since AutoHotkey64):

  • Fixed floating-point return values and exception handling for DllCall.
  • Fixed RegEx callouts.
  • Re-enabled GetProcAddress optimisation for DllCall.
  • NumPut and NumGet default to "Int64" in x64 builds.

COM (changes since AutoHotkey64):

  • Allow ComObjParameter to wrap 64-bit values in 32-bit builds.
  • Implemented more standard ref counting conventions in ComObjActive.
  • Prevent extraneous AddRef for new ComObjects in certain cases.
  • Don't treat pdispVal==NULL return value from Invoke as an error.
  • Fail more predictably when given wrong type of object.
  • Require explicit second param in ComObjType, don't assume "IID".
  • Free local vars after ComEvent calls a function.
  • Remove pVarResult param from ComEvent; use return value instead.
  • Pass the original wrapper ComObject in each ComEvent call.
  • Add context to ComError dialog; let the buttons make more sense.

Implemented common syntax validation code for enumerators. Enum[] and Enum.Next() are now supported with or without parameters. Enum[]:=val and similar obscure forms which worked in AutoHotkey_COM/AutoHotkey64 are not allowed.
"Ptr" type is still signed (unlike AutoHotkey64), for maximum flexibility and consistency.

Other changes:

Added: Object.HasKey(key).
Added: Object(obj) increments obj's reference count and returns its address.
Added: ObjAddRef() and ObjRelease().
Fixed: A_ThisHotkey now has the expected value when used with #If.
Fixed: RunAs in Unicode build (fixed by jackieku).
Changed: Default script codepage for ANSI builds is now CP0 (ANSI).
Changed: x.y[] is now equivalent to (x.y)[] rather than x["y"].
Changed: Built-in methods can now be called with or without the underscore prefix (e.g. obj.MaxIndex() or obj._MaxIndex()).

Revision 52 (again) - 2010/07/10[編集]

Added support for built-in and environment variables in double-derefs.
Improved support for multi-byte characters in certain codepages (previously only 932, 936, 949, 950 and 1361 were supported).
Fixed: StrPut failed for codepages which don't support WC_NO_BEST_FIT_CHARS, such as UTF-7.
Fixed: Double-deref as object - literal%var%.literal.
Fixed: StrPut("", Encoding) null-terminated an invalid address.

Revision 52 - 2010/06/12[編集]

Fixed: ObjRemove's Key parameter is now optional, as with Object._Remove.
Fixed: Files were improperly locked while reading, unlike in older versions.
Fixed: Uppercase Hex format caused negative integers to become unsigned.
Fixed: RegExMatch was corrupting output array items when specific conditions were met. See bug report.

Revision 51 - 2010/04/11[編集]

Changed: Use <EXENAME>.ahk instead of AutoHotkey.ini or AutoHotkey.ahk.
Changed: Default to UTF-8 for script files; override with /CPnnn.
Fixed: Unpause when the script exits so that object __Delete meta-functions can run.

Revision 50 - 2010/03/27[編集]

Improved flexibility of Object._Insert.

  • Object._Insert(x) - inserts x at _MaxIndex()="" ? 1 : _MaxIndex() + 1.
  • Object._Insert(i,x,y,z) - inserts x,y,z at i,i+1,i+2.

Improved flexibility of Object._Remove.

  • Object._Remove(k) - removes and returns the value associated with k.
  • Object._Remove() - removes and returns the value at _MaxIndex().

Added file share mode flags to FileOpen [by jackieku].
Fixed: 'P' option of RegExMatch incorrectly output 1 for subpatterns which did not match anything.
Fixed: Object._SetCapacity(key,n) was not null-terminating in some cases.
Fixed: StatusBarGetText returned only half of the text in Unicode builds.

Revision 49 - 2010/03/14[編集]

Added obj._NewEnum().
Added ObjMethod(obj) for each built-in obj._Method().
Changed: ObjSet/Get/Call can no longer be called/overridden by script.
Fixed: Potential crash caused by VK_PACKET check added in L48.
Fixed: Character codes in VK_PACKET events were potentially misinterpreted as scancodes.
Fixed: ExcludeText was ineffective after the first matching control.

Revision 48 - 2010/02/21[編集]

Fixed: Standalone obj.() was not recognized as a valid expression.
ControlSend now uses WM_CHAR to support characters which have no associated keycode. For instance, this applies to "…" (en-US), "∞" in a Unicode build and {U+221e} in either build.
KeyHistory now shows the full 16-bit character code for VK_PACKET (VK=E7) events. Send may indirectly cause these to be generated for Unicode characters.

Revision 47 - 2010/02/13[編集]

Fixed (Unicode): ControlGet,List with ListView controls.

Revision 46 - 2010/02/11[編集]

Added A_FileEncoding, which returns the current default file encoding.
Added StrPut and extended StrGet with additional features.

Revision 45 - 2010/02/08[編集]

Added _GetAddress; _SetCapacity/_GetCapacity may now operate on a given field. [more info]
Added workaround for WM_PAINT infinite loop often caused by subclassing.
Allow obj.() as a means to call the default method of an object; equivalent to obj[""]().
Dev: Added solution and project files for MSBuild 4.0 & VS2010. [more info]
Fixed (Unicode): 'Running' column in ListHotkeys.

Revision 44 - 2010/02/07[編集]

Fixed: Attempting to set "nothing" crashed the script. For instance, x[]:=z.
Fixed (Unicode): Unable to find default script (Documents\AutoHotkey.ahk).
Fixed (Unicode): A_Desktop, A_ProgramFiles and several other built-in variables which read their value from the registry caused strings to be incorrectly terminated.
Fixed (ANSI): Characters in the range 0x80-0xFF couldn't be found by InStr or StringReplace. Changed (ANSI): Treat ToCodePage/FromCodePage like other unsupported/invalid subcommands.

Revision 43 - 2010/01/29[編集]

Fixed: obj.Func() resulting in a random integer when it should be an empty string.

Revision 42 - 2010/01/28[編集]

Merged with AutoHotkeyU.
Numerous bug-fixes and improvements, some relating to the merge.

Revision 41 - 2009/12/20[編集]

Fixed: Floating-point numbers were equivalent to an empty string when used as keys in objects. They are now converted to numeric strings in the current float format, as originally intended.

Revision 40 - 2009/12/13[編集]

Changed meta-functions and multi-param behaviour to improve flexibility. Meta-functions are now invoked *before* searching for an appropriate field in each base object; however, values in x.base will override meta-functions defined in x.base.base. Chaining meta-functions (inheritence) is now possible by avoiding "Return"
Improved Default Base functionality to be more consistent with real objects.
Changed (Debugger): While stepping through code, skip all braces except those which end a function.
Changed (Debugger): When stepping onto the hidden "Exit" at end of the script, consider it to be *below* the last physical line to avoid confusion.

Revision 39 - 2009/12/02[編集]

Fixed (Debugger): Error in Base64 decoding used by property_set.

Revision 38 - 2009/11/17[編集]

Added: #MenuMaskKey directive to change which key is used to mask Alt/Win keyup events. See this thread for background information.
Changed: If x[1,2]:=3 creates an object for x[1], it's base is no longer automatically set to x.base. See the documentation for a method of controlling this behaviour.

Revision 37 - 2009/11/07[編集]

Added: Support for obj[method_name](params) object-call syntax.

Revision 36 - 2009/11/04[編集]

Changed: If x.y or similar is immediately followed by an open-bracket ([), the right-most identifier preceding the bracket is treated as the first parameter of the operation. For instance, a.b.c[d] is equivalent to ObjGet(a.b,"c",d) and x.y[z]:=v is equivalent to ObjSet(x,"y",z,v). Previously each sub-expression preceding a bracket was evaluated separately.
Changed: If a method-call such as x.y() is followed immediately by an assignment, the parentheses are treated as brackets. For instance, x.y(z):=v is now equivalent to ObjSet(x,"y",z,v).
Fixed: If(expr) and While(expr) with no delimiting space or comma.

Revision 35 - 2009/10/25[編集]

Fixed: Standalone expressions beginning with two or more "dots", such as x.y.z(). (Broken by L34.) Note that '(' or '[' or ':=' is still required.

Revision 34 - 2009/10/24[編集]

Changed: Setting a value within an object to an empty string now stores the empty string rather than removing the key-value pair from the object. _Remove can still be used to completely remove key-value pairs.
Changed: Command names must be terminated with a space, tab or comma. The following characters no longer bypass this requirement: <>:+-*/!~&|^[]. For instance, syntax errors such as MsgBox< foo and If!foo are now caught at load-time.
Fixed: Return now properly handles expressions which result in a variable containing an object. For instance, Return x:=y, Return (x), Return x,... and similar should work now (Return x already worked).
Fixed: Multi-parameter get/set did not correctly support meta-functions for multiple objects (such as for x and x[y] in the expression x[y,z]).
Fixed: Cascading object-assignments such as the x[y]:=z in r:=x[y]:=z could not yield numbers or objects - broken by L33.
Fixed: x._Remove(y) crashed the script or removed the wrong item if x did not contain y.
Fixed: x.=y, if x.y=... and similar. /05/affect other expressions.
Fixed: Standalone ternary expressions no longer requires spaces. For instance, x? F(1) : F(2) is now allowed.
Debugger: On script exit, disconnect debugger *after* releasing objects to allow debugging of __Delete handlers.

Revision 33 - 2009/10/03[編集]

Fixed: Local variables were not automatically freed for functions which return objects or pure numbers.
Fixed: Two separate reference-counting errors related to ternary operator and Object().
Fixed: If a string returned by a scripted object function was assigned directly to a variable, the variable's length was set incorrectly.
Fixed: If the last operation in an expression retrieved a string from a temporary object, the object and string were freed prematurely.
Fixed: Numeric strings with special formatting were not preserved when returned from a function via a variable or passed to a recursive function.
Fixed: If the final result of an expression (other than for Return) is an object, correctly yield an empty string instead of silently aborting the thread.
Fixed: __Delete meta-functions sometimes overwrote temporary values in the deref buffer.
Added: An address retrieved via &object may be cast back into an object reference by using Object(address).

Revision 32 - 2009/09/26[編集]

Fixed: Send/PostMessage crash when less than three parameters were specified.

Revision 31 - 2009/09/26[編集]

Added: Object/array support and numerous minor changes to make this possible.
Added: Support for While(expression) with no delimiting space.
Added: Trim, LTrim, RTrim.
Added: A ~= B; equivalent to RegExMatch(A, B). /05/be removed in a future revision.
Fixed: An incompatibility with LowLevel.
Changed: Characters [, ] and ? are no longer valid in variable names. Consequently, ? (ternary) no longer requires a space on either side.
Changed: Optional parameters may now be omitted at any position in the parameter list of a non-dynamic function call. Since this works by automatically inserting the parameter's default value at load-time, it is not supported or allowed for dynamic function-calls.
Debugger: Various minor changes to make program flow easier to follow while stepping through code.
Optimization: If DllCall's first parameter is a literal string which identifies a function already present in memory, it is replaced with the actual address of the function.
Updated from v1.0.48.03 to v1.0.48.04.

Revision 30 - 2009/05/31[編集]

Updated from v1.0.48.02 to v1.0.48.03.

Revision 29 - 2009/05/02[編集]

All supported image formats may now be used as menu icons. Currently it is necessary to specify "actual size" when setting the icon to preserve transparency on Windows Vista and later. For example:
Menu, Icon, MenuItemName, Filename.png,, 0

Revision 28 - 2009/05/02[編集]

Improved average-case performance of dynamic function calls by implementing binary search for function name look-ups. This change also applies to other areas, such as load-time resolution of function references in expressions and run-time resolution by OnMessage, RegisterCallback, etc.

Revision 27 - 2009/04/26[編集]

Updated from v1.0.48.00 to v1.0.48.02.

Revision 26 - 2009/04/11[編集]

Fixed: Menu icons were not drawn on items which have sub-menus if owner-drawing was in use.
Fixed: Menu icons were not freed if all menu items were deleted at once.
Changed (Source): Renamed AutoHotkey.sln to AutoHotkey_L.sln to allow VS window to be identified more easily.

Revision 25 - 2009/03/30[編集]

Fixed: Send {U+xxxx} correctly sets modifier key-state as with any normal key.
Fixed: Send {U+..xx} no longer triggers hotkey SCxx.

Revision 24 - 2009/03/30[編集]

Added: Support for Send {U+xxxx}. SendInput() is used where available for proper unicode support, otherwise falls back to Alt+Numpad.

Revision 23 - 2009/03/30[編集]

Fixed: GuiControl, Enable/Disable now only resets focus if the focused control was disabled.

Revision 22 - 2009/03/26[編集]

Optimized If var [not] in/contains MatchList, especially for long lists containing shorter fields.

Revision 21 - 2009/03/16[編集]

Minor optimizations to While. [thanks Chris]
Fixed (Debugger): Revisions 19 and 20 omitted timer threads from the call stack.
Fixed (Debugger): XML-reserved characters were not escaped in most situations.
Fixed (Debugger): Incorrect command and transaction_id were used in the final response before exiting the script.

Revision 20 - 2009/02/27[編集]

Changed: If an icon cannot be loaded with the new method, fall back to the old method.

Revision 19 - 2009/02/26[編集]

Added: Gui, Font, qN option to set font quality/control anti-aliasing, where N is between 0 and 5.
Fixed: IL_Add now loads icons at the most appropriate size when multiple sizes exist.
Merged with AutoHotkey v1.0.48, introducing bug fixes, optimizations and other changes by Chris. Some AutoHotkey_L features were integrated into the mainstream release; changes to these features since previous revisions are as follows:

  • Legacy behaviour is no longer applied to While - e.g. "While %x%" is correctly interpreted as a double-deref rather than as "While x".
  • One-True-Brace style is now supported for While.
  • Static vars may now be declared and initialized in assume-static functions.
  • Passing too few parameters in a dynamic function call is no longer allowed, as it allows the function's caller to second-guess the function's designer, reduces the ability to detect script bugs at runtime, and may cause the application to crash if calling a built-in function.

Revision 18 - 2009/02/21[編集]

Fixed: Incomplete bug-fix in previous revision causing concat followed by assignment to skip the rest of the expression in some cases.

Revision 17 - 2009/02/20[編集]

Added: Menu icons via Icon and NoIcon sub-commands of the Menu command.
Changed: Negative icon numbers can now be used to indicate a resource ID within an executable.
Changed: Set default style of menus to include MNS_CHECKORBMP.
Changed: Load both small and large versions of custom tray icons to allow the correct icons to be shown in the appropriate places.
Fixed: Loading of icons from executable files at sizes other than the system small/large.

Revision 16 - 2009/02/04[編集]

Fixed: Deleting a menu item partially deleted its associated sub-menu.

Revision 15 - 2009/02/01[編集]

Fixed: SetFormat's presence in a *compiled* script was not disabling binary number write-caching. SetFormat should now work correctly in compiled scripts.

Revision 14 - 2009/02/01[編集]

Numerous bug-fixes and optimizations by Chris (pre-v1.0.48 beta).
Added: Support for regex callouts and the auto-callout option 'C'.
Changed: A_AhkVersion now includes the revision number. For instance, this is
Fixed: HWND's/window ID's were sign-extended to 64-bit. For instance, 0xb482057e became 0xffffffffb482057e.

Revision 13 - 2008/11/29[編集]

Fixed: Invalid DllCall types were treated as INT in some build environments.
Added: Workaround for GuiEscape issue when disabling focused control.
Changed version info: InternalName, ProductName and FileDescription are now "AutoHotkey_L" instead of "AutoHotkey".

Revision 12 - 2008/09/06[編集]

Fixed: Potential access violation when using property_get on a built-in variable. -- DBGP

Revision 11 - 2008/09/05[編集]

Fixed: Remove checksum from AutoHotkeySC.bin via post-build script (AutoHotkey must be installed).
Added: .L suffix to A_AhkVersion.
Added: Preliminary support for DBGp (interactive debugging).

Revision 10 - 2008/08/02[編集]

Fixed: WheelLeft/WheelRight support, which was broken in revision 9.

Revision 9 - 2008/07/29[編集]

Fixed: Allow Break/Continue in While.
Fixed: TrayTip in non-English Windows and possibly other side-effects of using Vista headers.

Revision 8 - 2008/07/27[編集]

Added: #IfTimeout directive to set the timeout for evaluation of #If expressions, in milliseconds. Default is 1000.
Added: Assume-static mode for functions. "Static" must precede any local/global variable declarations.
Added: One-true-brace support for While.
Changed: While now sets A_Index to the iteration about to begin.

Revision 7 - 2008/07/26[編集]

Added: IsFunc(FuncName) - Returns a non-zero number if FuncName exists in the script or as a built-in function.

Revision 5 - 2008/07/19[編集]

Cleaned up obsolete references to test scripts.
Added basic default test script.

Revision 4 - 2008/07/18[編集]

Added: #if (expression) - Similar to #IfWinActive, but for arbitrary expressions.
Added: WheelLeft, WheelRight - Support for WM_MOUSEHWHEEL, which was introduced with Windows Vista. (Requires Vista.)
Added: While, expression - Loop while a condition is true.
Added: A_IsPaused - True if the underlying thread is paused.
Added: A_IsCritical - True if the current thread has been marked uninterruptible by the "Critical" command.
Changed: Allow any number of parameters to be passed in dynamic function calls.
Fixed: Access Violation caused by WinGetClass and subclassed windows.
Fixed: Access Violation caused by empty dynamic function references.