AutoHotkey_L 新特性

这个页面描述了新添加到 AutoHotkey_L 分支的功能, 现在简称为 "AutoHotkey 1.1".

警告: 近年来本文档已被忽视, 可能会丢失一些最近的变化.

流程控制

特性 描述
Break LoopLabel退出一个循环或任意数目的嵌套循环.
Continue LoopLabel继续循环, 即使在任意数目的嵌套循环中.
For x,y in z从头到为尾循环对象的内容.
Loop Until循环直到条件为真. 可用于任意类型的循环.
Try...Catch...Finally提供结构化的异常处理机制.
Throw抛出异常.

命令

特性 描述
FileEncodingFileRead, FileReadLine, Loop Read, FileAppendFileOpen() 设置默认编码.
另请参阅: 文本编码
Gui请参阅后面的 GUI 增强.
IniRead/Write/Delete读取, 写入或删除整段, 或获取所有段名称组成的列表.
Menu, Icon设置或移除菜单项图标.
Run改进了参数的解析方式.
SendInput {U+nnnn}发送 Unicode 字符. 在 Unicode 版本中可以直接使用 Unicode 字符.
SendLevel控制热键和热字串是否忽略模拟的键盘和鼠标事件.
SetFormat, IntegerFast, h|H设置小写或大写的十六进制格式.
SetRegView, RegView允许 32 位脚本中的注册表命令访问 64 位注册表视图, 反之亦然.
Transform, HTML执行代码页或 HTML 转换.
WinGet, ..., ProcessPath获取拥有指定窗口的进程的完整路径和名称.

指令

特性 描述
#If expression类似于 #IfWinActive, 但可以是任意类型的表达式.
#IfTimeout设置计算单个 #If 表达式可以使用的最大时间.
#MenuMaskKey改变用来屏蔽 Win 或 Alt 键松开事件的按键.
#Include <Lib>包含函数库文件夹中的脚本文件.
#InputLevel控制热键和热字串是否忽略模拟的键盘和鼠标事件.
#Warn启用或禁用为选择的情况提示开发者错误的警告.

函数

特性 描述
ComObjActive检索一个注册的 COM 对象.
ComObjArray创建用于 COM 的 SAFEARRAY.
ComObjConnect连接 COM 对象的事件源到带有给定前缀的函数.
ComObjCreate创建 COM 对象.
ComObject包装要作为参数或返回值传递的值和类型.
ComObjEnwrap/Unwrap包装/解开 COM 对象.
ComObjError启用或禁用 COM 错误通告.
ComObjFlags获取或改变控制 COM 包装器对象行为的标志.
ComObjGet返回由 COM 组件提供的对象引用.
ComObjMissing创建一个 "缺失参数" 对象以传递给 COM 方法.
ComObjParameter包装要作为参数传递的值和类型.
ComObjQuery查询 COM 对象的接口或服务.
ComObjType从 COM 对象获取类型信息.
ComObjValue获取存储在 COM 包装器对象中的值或指针.
Exception创建用于 Throw 的异常对象(同时提供对堆栈的受限访问).
FileOpen提供面向对象的文件 I/O.
Func获取函数的引用.
GetKeyName/VK/SC获取按键的名称/文本, 虚拟按键码或扫描码.
InStr搜索字符串的 出现位置, 从左边或右边开始.
IsByRef判断变量是否是 ByRef 参数.
IsObject判断某个值是否为对象.
StrPut / StrGet复制字符串到内存地址或从内存地址复制, 可选地将其转换为给定代码页或从给定代码页转换.
Trim移除字符串的开始和/或末尾的某些字符.
RegEx (?CNum:Func)在正则表达式进行模式匹配期间调用函数.
函数库新的 "本地库" 和 #Include <LibName>.
可变参数函数函数可以通过数组接受可变数目的参数.
静态初始化静态变量现在可以使用任意表达式进行初始化.

对象

特性 描述
概述对象的常规行为和用法.
对象可以使用其他功能扩展的关联数组.
枚举器可以枚举容器中的项目.
文件提供访问文件的接口. FileOpen() 返回文件类型的对象.
Func表示可以被脚本调用的自定义或内置的函数.
ComObject请参阅上面的 ComObj 函数.

变量

特性 描述
A_Is64bitOS当操作系统为 64 位则值为 1(真), 为 32 位则为 0(假).
A_IsUnicode在 Unicode 版本中, 此变量值为 1(true). 在 ANSI 版本中此变量未定义, 所以等同为 false.
A_FileEncoding包含用于多种命令的默认编码, 请参阅 FileEncoding.
A_OSVersion支持 Windows 7 和 Windows 8, 请参阅 A_OSVersion.
A_PriorKey在最近按键按下或释放前最后按下的按键名称 ... (更多细节)
A_PtrSize包含指针的大小, 单位为字节. 此大小为 4(32 位) 或 8(64 位).
A_RegViewSetRegView 设置的当前注册表视图.
A_ScriptHwnd脚本隐藏主窗口的唯一 ID(HWND/句柄).

数据类型

特性 描述
Ptr在 32 位版本中等同于 Int 而在 64 位版本中为 Int64. 由 DllCall(), NumPut()NumGet() 所支持.
AStr, WStrDllCall() 支持, 请参阅脚本兼容性.

Unicode

特性 描述
兼容性在 DllCall() 中如何处理 Unicode 等.
脚本文件在脚本文件中使用 Unicode 编码.
SendInput在 SendInput 中使用 Unicode.

其他

特性 描述
ahk_exe窗口可以通过拥有此窗口的进程名称或路径(EXE 文件) 进行标识.
调试交互式调试功能(单步执行等).
错误处理Try/catch/throw 和增加的 A_LastError 可用性.
GUI 增强对 Gui 命令和相关部分的多方面增强.
图标支持资源标识符和改进的对各种图标大小的支持.
其他变更影响脚本兼容性的改变.
版本历史AutoHotkey_L 的修订历史.

错误处理

许多命令支持使用 try/catch 代替 ErrorLevel 进行错误处理. 例如:

try
{
    FileCopy, file1.txt, C:\folder
    FileDelete, C:\folder\old.txt
}
catch
    MsgBox An error occured!

此外, 后面的这些命令现在设置 A_LastError 来辅助调试: FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version, FileSetAttrib/Time, FileCreateDir, RegRead, RegWrite, RegDelete.

函数库

除了 %A_MyDocuments%\AutoHotkey\Lib 的用户库和在 AutoHotkey 目录的标准库外, 函数还可以从 %A_ScriptDir%\Lib 中的 "本地库" 自动加载. 想了解更多信息, 请参阅函数库.

#Include <LibName> 可以明确加载函数库中任意一个库文件.

GUI 增强

Gui 命令和相关部分进行了一些增强:

静态变量

静态变量现在可以使用任意表达式进行初始化. 例如:

Sleep 500
MsgBox % Time() "ms since the script started."
Time() {
    static Tick := A_TickCount
    return A_TickCount - Tick
}

文本编码

FileRead, FileReadLine, Loop ReadFileAppend 支持 Windows 所支持的大部分文本编码, 而不限于系统默认的 ANSI 代码页. 可以用 FileEncoding 设置默认编码, 此设置在 FileRead 和 FileAppend 中可以使用如下方法覆盖:

FileRead, OutputVar, *Pnnn Filename
FileAppend , Text, Filename, Encoding

此处 nnn 必须是数值的代码页标识符, 而 Encoding 遵循与 FileEncoding 相同的格式.

另请参阅: 脚本兼容性

可变参数函数和函数调用

可变参数函数可以通过数组接受可变数目的参数, 而可变参数的函数调用可以用来传递可变数目的参数给函数.

图标支持的改进

不常见的大小

可以从可执行文件中提取操作系统支持的任意大小的图标资源. 当图标组中存在多种大小的图标资源时, 则使用其中最合适的大小. 在修订号 17 之前的版本中, 系统先选择任意的图标资源, 接着调整到系统的大图标尺寸, 然后调整回请求的尺寸.

资源标识符

使用负数的图标编号可以标识可执行文件中的一组图标资源. 例如, 下面的语句设置托盘图标为 ahk 文件的默认图标.

Menu, Tray, Icon, %A_AhkPath%, -160