变更 & 新功能

v1.1 到 v2.0 的更改涵盖了 v1.1 和 v2.0 之间的差异.

有关更改的全部技术细节, 请参阅 GitHub.

2.0.11 - 2023 年 12 月 23 日

新增 一个解决方案, 在 Windows 10 第一个显示的菜单不接受键盘输入.

修复 Add 方法(Gui) to 支持 DateTime 控件的 ShortDate 选项.

修复 多级函数嵌套的引用计数错误.

修复 #include <x> 在函数内部使用会导致加载时崩溃的问题.

修复 ListView.Opt("NoSort").

修复 克隆没有自有属性的对象时发生的内存泄漏.

修复 #include 和 FileInstall(未编译) 按顺序比较文件名, 而不是按语言比较文件名的问题.

2.0.10 - 2023 年 9 月 24 日

修复 在 #HotIf 之后使用命名函数热键时崩溃的问题.

修复 以点结尾的原义数字使行延续中断的问题.

修复 预增/减 能与链式数组索引配合使用.

修复 OnNotify/OnCommand 应用样式仅适用于 OnEvent.

修复 使用 emptydir\* 时, FileExist/DirExist 泄漏句柄的问题.

修复 当只有文件匹配时, DirExist 泄漏句柄的问题.

2.0.9 - 2023 年 9 月 17 日

修复 带有 X 选项的热键的堆叠.

修复 如果函数位于堆栈底部, 调试器不列出局部变量的问题.

修复 Gui 线程显示在调试器的调用堆栈.

修复 &/ByRef 的一些组合导致 ExitApp 中的堆栈溢出.

2.0.8 - 2023 年 9 月 11 日

修复 在未设置时, ByRef 参数错误地将默认值赋值给调用者的 VarRef 问题.

修复 一些影响抑制 Alt/Ctrl/Shift/Win 热键的问题, 例如:

修复 一些影响延续片段的问题:

优化 延续片段中引号和反引号的自动转义.

修复 breakpoint_list(调试器) 在包含胖箭头函数的行上返回重复项的问题.

修复 +BackgroundDefault 无法覆盖 Gui 的 BackColor 属性.

2.0.7 - 2023 年 9 月 2 日

修复 MouseClickDrag 允许省略 X1 和 Y1.

修复 鼠标 AltTab 热键不抑制前缀热键的执行, 如 1 & WheelDown::AltTab 中的 1:: . (Broken by v2.0.4)

修复 钩子热键不能识别 SendInput 按下的修饰符的问题.

修复 A_AhkPath 不依赖于用于启动进程的命令行的大小写/格式.

修复 在涉及组的窗口搜索期间堆损坏的问题. (Broken by v2.0.6)

Launcher

修复 如果 #Requires 后跟除 ; prefer xxx 之外的注释时, #Requires 无法检测的问题.(Broken by v2.0.6)

修复 语法检测错误解释多行自动替换热字串.

Window Spy

修改 字体为 Segoe UI 9 号字, 与 Dash 一致.

2.0.6 - 2023 年 8 月 30 日

修复 一些模糊的 COM 调用, 如 x.y 作为 x.y().

修复 断点上的控制流语句被 "hit" 时, 返回一个在它下面的行的胖箭头函数.

修复 Default : 不与它下面的行合并. 这阻止了 Default : 在 Switch 块的末尾使用, 并导致任何后续行采用 Default 的行号.

优化 ProcessGetPath, ProcessSetPriority 和 ProcessClose 在给定有效 PID 时, 不扫描所有进程, 即使对进程的访问被拒绝.

修复 LWin::Alt 无法激活某些 Alt 组合键的问题.

修复 x is y 抛出的 TypeError, 说 "Class" 而不是 "Object".

修复 WinTitle 支持超过 1023 个字符的条件.

修复 在同一变量的不同别名上使用 &ref 时的问题.

修复 可选参数默认表达式(除了简单的原义值) 阻止假设全局/假设静态的使用.

2.0.5 - 2023 年 8 月 12 日

修复 通过 COM 枚举对象时由于不正确的引用计数而导致的内存泄漏. [PR# 325]

修复 内部调用 __Enum 不调用 __Call 的问题.

修复 有关参数 #65535 的错误消息.

修复 不正确的 IEnumVARIANT 返回计数.

修复 当错误应该为非零值时, Download 抛出 OSError(0) 的问题.

修复 当传递最小参数数时, LV.Add/Insert/Modify 崩溃的问题.

修复 堆栈跟踪排除对 Error 子类的 __new 调用的问题.

2.0.4 - 2023 年 7 月 3 日

更改 错误/警告对话框上的 Reload 按钮, 显式关闭对话框, 即使当前脚本实例没有终止.

删除 对 return var 的优化, 该优化导致在 finally 块中访问该变量时显示为空白.

修复 Default(Switch) 允许冒号前的空格.

修复 在 Length 通过 unsetvar? "显式省略", Array.Prototype.RemoveAt 返回移除值.

修复 当 ComObject 传递给 for 循环时只指定第二个变量时的崩溃.

更改 合并 v1.1.37.00 和 v1.1.37.01 的变更:

修改 COM 方法和属性调用, 将大整数作为 VT_I8, 而不是 VT_R8(浮点) 传递, 因此保留了原来的类型和精度. 32 位范围内的整数仍作为 VT_I4 传递.

新增 对带有 IDispatch 包装的 AutoHotkey 对象的双变量枚举器(for-loops) 的支持. 调用对象的脚本和对象本身都必须运行在支持的 AutoHotkey 版本.

修复 通过 IDispatch(COM) 调用 AutoHotkey 方法时, 省略的参数接收其默认值, 而不是 "可选参数标记" 的问题. 在以前的版本中, 调用 COM 方法时, 已经完成了反向转换.

修复 VerCompare(a, ">" b), 并略微减少了代码大小.

修复 AltTab-related 相关的加载时错误, 使之与其他错误一致.

修复 由 ComObject 包装器抛出的错误, 如果它是通过对象/COM 调用的, 不会被正确传播.

修复 热键 GUI 控件, 允许将符号 ^, !+ 设置为热键.

修复 热键控件, 当其值被设置为一个符号时, 包括修饰符.

修复 InputHook.KeyOpt() 单字符的潜在错误行为.

修复 自定义组合的错误, 即如果单独用 #HotIf 禁用 a::, 一组热键如 a & b::, a::a up:: 将不能抑制 a 的释放.

修复 一个错误, 即一个键按下事件能被热键正确抑制, 但在 SendLevel > 0 的情况下, 发送一个额外的键按下, 会阻止随后的键松开被抑制, 即使由于 #InputLevel, 忽略发送的事件.

修复 a & b up::a & b:: 存在, 但被 #HotIf 禁用的情况下, 不会抑制 b 的问题.

修复 热键由于竞争状态而无法触发的问题. 如果修饰符热键(如 ~*RWin::) 太早调用 Send 或 GetKeyState, 操作系统可能会报告 RWin 没有按下, 因此修饰符的钩子的状态将被 "纠正", 热键将错误地触发或无法触发. 只有当另一个键盘钩子比脚本自己的钩子安装得更晚时才可能发生这种情况, 因为在这种情况下,操作系统不会更新按键的状态, 直到另一个钩子的线程恢复并返回..

修复 热字串使用 #HotIf 设置的最后找到的窗口.

修复 任何尝试重新安装键盘或鼠标钩子的问题, 如果操作系统已自动卸载该钩子. 在进行任何此类尝试之前, 仍有必要满足某些条件.

优化 内置 IDispatch 缓存的 COM 属性名的分配.

重构 代码以支持 AutoHotkey 作为 DLL 的构建配置.

2.0.3 - 2023 年 6 月 19 日

修复 Hotkey("a", "b") 去使用原始的函数 "b", 而不是 "a". [PR #318]

修复 在文件读取循环中使用 FileSetAttribute 时崩溃的问题. [PR #323]

修复 重复 Gui 控件名称错误, 以正确中止线程.

修复 DateTime/MonthCal 范围选项不应用最小值.

修复 s[x] => x 和其他以 "s" 开头的单行属性.

修复 在包含 => 的静态行中删除断点的错误.

修复 当点击时, Button 控件不成为默认.

修复 没有找到像素, PixelSearch 取消设置 X.

修复 带转义序列的热字串导致下一行被跳过.

修复 当 "ahk_" 在字符 2 时, WinTitle 忽略字符 1.

修复 重映射, 以利用右手修饰符已经按下. 例如, +x::+y 将不再释放 RShift 来按下 LShift.

更改 a == b && c() 和类似情况的错误消息, 以避免暗指传统的 =.

改进 某些情况下意外续行的错误信息.

修复 允许保留字作为方法名的问题, 如文档所示.

修复 一些键盘消息的重复 OnMessage 调用.

修复 过早删除互引用闭包的问题.

修复 SetFont 允许在 Options 参数中使用前导空格的问题.

修复 {ASC nnnn} 的发送.

修复 a.base := a 抛出错误的问题.

修复 x.y := unset 导致崩溃或未定义的行为.

修复 GuiControl.Move() 相对于 GUI 的客户端区域的问题,即使 GUI 不是它的父界面.

修复 Menu Add 覆盖由 Menu Insert 附加的项目.

Launcher

在没有参数的情况下运行, 运行 Dash, 而不是在文档中显示旧的欢迎页面.

修复 版本选择 GUI 在未选择版本的情况下按 Enter 键时引发错误的问题. [PR UX/#4]

检查版本不存在是否可以下载时, 抑制错误.

修复 如果 UAC 被禁用, 没有版本下载提示, 不显示 UAC 屏蔽的问题.

修复 #Requires 解释的问题.

Installation

修复 命令行使用的默认安装目录.

重命名 开始菜单快捷方式 "AutoHotkey" 为 "AutoHotkey Dash".

修复 当以 SYSTEM 运行时的 EnableUIAccess.

修复 在选择证书时验证私钥的 EnableUIAccess.

Dash

修复 启动配置 GUI 更新 "以管理员身份运行" 和 "以UI访问运行" 选项.

修复 启动配置 GUI 中的 Up/Down 键的处理.

2.0.2 - 2023 年 1 月 2 日

修复 短 DllCall 参数类型和无效类型的未定义行为.

修复 AutoHotkey 二进制文件的(非字符串) 版本号.

修复 参数类型错误以显示正确的参数编号.

2.0.1 - 2023 年 1 月 1 日

修复 Func.IsOptional(1) 在某些情况下, 错误的返回 0 的问题.

修复 当 Gui 是自己的事件接收器时, Gui 事件处理函数不删除 Gui 参数.

修复 当没有可用的描述时, COM 错误不显示 "(null)".

修复 ToolTip 间歇性出现在错误的位置.

修复 __Enum(unset) 允许数组, 匹配和 Gui 的第二个变量.

修复 #include <> 错误消息显示 "Script library" 而不是 "Function library" 的问题.

修复 带有 Critical 的新线程无法阻止消息检查的问题.

优化 DllCall 类型名称的转换.

优化 代码.

预发布

有关 v2.0.0 版本之前的更改历史, 请参阅以下内容(但注意一些更改已被取代):