这个页面描述了新添加到 AutoHotkey_L 分支的功能,现在简称为"AutoHotkey 1.1".
警告: 近年来本文档已被忽视,可能会丢失一些最近的变化.
流程控制 | |
---|---|
Break LoopLabel | 退出一个循环或任意数目的嵌套循环. |
Continue LoopLabel | 继续循环, 即使在任意数目的嵌套循环中. |
For x,y in z | 从头到为尾循环对象的内容. |
Loop Until | 循环直到条件为真. 可用于任意类型的循环. |
Try...Catch...Finally | 提供结构化的异常处理机制. |
Throw | 抛出异常. |
命令 | |
FileEncoding | 为FileRead,FileReadLine,Loop Read,FileAppend和FileOpen设置默认编码. 也请参见: 文本编码 |
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 keyup 事件的按键. |
#Include <Lib> | 包含函数库文件夹中的脚本文件. |
#InputLevel | 控制热键和热字串是否忽略模拟的键盘和鼠标事件. |
#Warn | 启用或禁用为选择的情况提示开发者错误的警告. |
函数 | |
ComObjActive -- ComObjActive ComObjEnwrap/Unwrap ComObjParameter ComObjType | 获取一个注册的 COM 对象. 包装/解开 COM 对象. 把值和类型包装成参数传递. 获取 COM 对象的类型信息. |
ComObjArray | 创建用于 COM 的 SAFEARRAY. |
ComObjConnect | 连接 COM 对象的事件源到带有给定前缀的函数. |
ComObjCreate | 创建 COM 对象. |
ComObjError | 启用或禁用 COM 错误通告. |
ComObjFlags | 获取或改变控制 COM 包装器对象行为的标志. |
ComObjGet | 返回由 COM 组件提供的对象引用. |
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_RegView | 由 SetRegView 设置的当前注册表视图. |
A_ScriptHwnd | 脚本隐藏主窗口的唯一 ID (HWND/句柄). |
数据类型 | |
Ptr | 在 32 位版本中等同于 Int 而在 64 位版本中为 Int64. 由 DllCall, NumPut 和 NumGet 所支持. |
AStr, WStr | 仅 DllCall 支持,请参阅脚本兼容性. |
Unicode | |
Compatibility | 在 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 命令和相关部分进行了一些增强:
- 引用 GUI 时可以用 名称或 HWND 代替介于 1 和 99 之间的数字.
- Gui, New 创建新的匿名 GUI.
- 可以创建任意数目的命名或匿名 GUI.
- 新 GUI 选项: +HwndOutputVar, +ParentGUI
- GUI 的拥有者可以为任意窗口: +Owner%HWND%.
- Gui, Font 可以控制文本的反锯齿效果.
- 支持像 Internet Explorer WebBrowser 这样的 ActiveX 控件.
- GuiControlGet, OutputVar, Name 获取与 GUI 控件关联的变量名.
- 在 Gui menus 中使用像 Ctrl+O 这样的键盘快捷键时会自动得到支持.
- 字体品质 可以通过 Font 子命令控制.
静态变量
静态变量现在可以使用任意表达式进行初始化. 例如:
Sleep 500 MsgBox % Time() "ms since the script started." Time() { static Tick := A_TickCount return A_TickCount - Tick }
文本编码
FileRead, FileReadLine, Loop Read 和 FileAppend 支持 Windows 所支持的大部分文本编码, 而不限于系统默认的 ANSI 代码页. 可以用 FileEncoding 设置默认编码, 此设置在 FileRead 和 FileAppend 中可以使用如下方法覆盖:
FileRead, OutputVar, *Pnnn Filename FileAppend [, Text, Filename, Encoding]
此处 nnn 必须是数值的 代码页标识符, 而 Encoding 遵循与 FileEncoding 相同的格式.
另请参阅: 脚本兼容性
可变参数函数和函数调用
可变参数函数 可以通过数组接受可变数目的参数, 而 可变参数的函数调用 可以用来传递可变数目的参数给函数.
图标支持的改进
不常见的大小
可以从可执行文件中提取操作系统支持的任意大小的图标资源. 当图标组中存在多种大小的图标资源时, 则使用其中最合适的大小. 在修订号 17 之前的版本中, 系统先选择任意的图标资源, 接着调整到系统的大图标尺寸, 然后调整回请求的尺寸.
资源标识符
使用负数的图标编号可以标识可执行文件中的一组图标资源. 例如, 下面的语句设置托盘图标为 ahk 文件的默认图标.
Menu, Tray, Icon, %A_AhkPath%, -160