是一款免费的、Windows平台下开放原始码的热键脚本语言,是为游戏操纵桿和滑鼠创建的热键,是自动按键。也可以通过命令调用系统接口及程式,并创建基于简单语言的图形化界面的执行程式。
基本介绍
- 中文名autohotkey
- 类别热键脚本语言
- 用途为游戏操纵桿和滑鼠创建的热键
- 适用系统Windows
- 资费免费
平台简介
AutoHotkey 是一款免费的、Windows平台下开放原始码的热键脚本语言。
功能
通过传送键盘或滑鼠的键击动作命令来实现几乎所有操作的自动化。您可以自己编写 宏(AutoHotkey Script) 或者使用宏录製器(AutoScriptWriter)来生成;
为键盘,游戏操纵桿和滑鼠创建 热键。 事实上任何的按键、按钮或组合键都可以被设定为热键;
可以对Windows各类型视窗进行匹配以及相关属性调整(例如透明、隐藏、置顶、改变大小等);
当键入您自定义的缩写时可以 扩展缩写。例如, 键入“btw”就可以自动扩展为“by the way”;
创建自定义的数据输入表格、用户界面、选单等标準控制项以及ActiveX 组件(例如IE浏览器控制项)等。详情请看 图形界面 部分;
映射 键盘、游戏操纵桿和滑鼠上的按键或按钮;
运行现有的AutoIt v2脚本并用 新功能 来增强它们;
将脚本档案编译 成EXE执行档,使得程式在没有安装AutoHotkey的机器上得以运行;
藉助 相关工具 以实现更强大的功能;
更多关于热键的说明
AutoHotkey 可令键盘、游戏操纵桿和滑鼠的所有潜能都发挥出来。例如,除了典型的Control、Alt和Shift键之外,你还可以定义Win键(徽标键)和Capslock键作为调节键。 而实际上你还可以设定任意的键盘按键或滑鼠按键作为调节键。详细内容请看 高级热键 部分。
其他功能
基本用法
关闭或禁止Windows自有的快捷键,例如Win+E和Win+R;
取替Alt-Tab(通过按键、滑鼠滚轮或按钮)从而减轻RSI(肢体重複性劳损);
本机代码互操作
可以调用COM和DLL对象进行功能扩展;
可以创建机器码地址,当它被调用时会重定向到脚本中的函式;
可以複製字元串到记忆体地址或来自记忆体地址,并可以对其在指定代码页间进行转换;
档案、目录和磁碟管理
读取、写入、複製、删除、获取设定属性以及解释文本档案比起其他语言更容易;
提供面向对象的档案I/O操作;
支持驱动器弹出以及获取驱动器列表、容量、剩余空间、档案系统、卷标、序列号、类型、状态等;
可对IN档案(配置信息档案)进行读写操作。
流程控制
多种条件判断(字元项目、视窗、档案、进程、错误返回值等),条件下採用{}区块以及制表符进行分层级;
可以配合变数进行多级循环複杂操作;
可以与一般编程一样创建自定义函式并调用;
图形界面
使用您喜欢的图示、工具提示(ToolTip)、选单项目和子选单来自定义托盘图示选单;
显示对话框、工具提示(Tooltips)、气球提示以及弹出选单,与用户互动;
可以置顶自定义图片来做程式启动界面;
滑鼠和键盘
可以禁用或启用用户通过键盘和滑鼠对电脑进行操作而脚本不受影响。
用游戏操纵桿或键盘代替滑鼠;
可以对视窗中的指定控制项进行点击、改变文字等操作而不会出现滑鼠点击事件;
数学相关
可以进行一些科学运算(如三角函式、平方根、幂运算、e^N等);
萤幕管理
通过检测图像和象素色彩来自动执行游戏中的动作;
进程管理
执行脚本动作来回响系统关闭或注销;
使用RunAs方式指定运行用户身份;
可以对进程进行是否存在、列表、优先权、等待运行、等待结束操作;
注册表
可以循环读取注册表并操作;
可对注册表进行读写、删除操作。
声音命令
调节音量、设定静音,以及其他关于音效卡的设定;
可以播放wav音频;
字元串管理
可以定义字元串变数对字元串变数进行截取、替换、正则表达式匹配、大小写改变等处理;
可以生成随机数,用户可以根据随机数生成自定义随机字元;
获取并改变剪贴簿的内容,包括从资源管理器中複製的档案的名称;
针对一组与通配符匹配的档案进行操作;
视窗管理
可以检测视窗是否处于各种状态(激活、最大化、存在、隐藏等);
可以获取视窗的标题、ahk_class、文字等相关信息方便滑鼠等操作;
可以对视窗进行最大化、激活、隐藏、关闭、强制关闭、等待等相关操作;
其他
可以获取系统环境(如幕解析度、多显示器信息、系统对象的尺寸和其他系统属性)相关信息并执行预定操作;
监控您的系统。例如,当您不希望见到的视窗出现时自动关闭它们;
可以设定定时器并启用、停用该项目;
检测系统空闲时间。例如,在系统空闲的时候执行高CPU负荷的任务;
你只要有想像力,它可以完成更多工作。
兼容性
在 Windows 95/98/Me 下,一些 高级功能例如滑鼠热键和 热字串 -- 在Win9x 平台将失效。
在Window8/8.1环境下,BlockInput会失效。
在Windows RT作业系统上,需要越狱并下载指定编译版本Autohotkey,手动注册相关注册表项后
即可使用,不保证所用命令有效。
注意事项
1、在字元串赋值时,使用a=b这种方式时,“"”(英文双引号)、“,”(英文逗号)需要转义,转义符为“·”(Tab上面,1左边的字元),等同于其他语言的“\”。其他要转义的字元回车“`r”,换行“`n”,制表符“`t”,空格“%A_Space%”,非注释分号“`;”,非引用百分号“`%”。
2、AHKer在接触AHK可能接触过其他语言,会有书写方面的问题。建议按照标準书写风格书写并严格使用制表符以及区块进行分层。语句各属性项目严格使用英文逗号分隔而不是空格,这会大大减少错误情况。
3、使用AutoScriptWriter录製的脚本可能会用语句冗余以及操作时间不当等操作,可以作参考并适当添加win相关命令以及PixelGetColor、ImageSearch等命令在恰当的时机操作。
4、视窗以及像素相关操作(如滑鼠点击)默认为相对当前活动视窗,一些操作可能会错误。需要默认为全萤幕幕,请在脚本头添加
CoordMode,Pixel,Screen
CoordMode,Mouse,screen
CoordMode,Mouse,screen
5、脚本运行时,默认会有系统列图示及相关右键选单,如不需右键选单,请在脚本头添加Menu, Tray, NoStandard;如不需要显示系统列图示,请在脚本头添加#NoTrayIcon。
翻译进度
原英文帮助CHM档案被解压后,除去19个脚本页面,总计254个HTML网页档案。
待翻统计
命令220个共1.22M,剩79个共717K
杂项18个共172K,剩14个共156K
根目录下16个共366K,剩7个共221K
html 档案总计254个页面共1.75M
未翻100个页面共1.07M,约61.14%
已翻154个页面共0.68M,约38.86%
主分支的版本帮助已完全翻译完毕, 翻译详情及下载请至AutoHotkey中文论坛
AutoHotKey已推出中文版帮助,AHK版本v1.1.13.00。该中文帮助由 amnesiac 更新。
计画
(1)将官方论坛中Tuncay大大收集的Ahk Standard Library Collection(当前版本:201009181732)集成到帮助档案, 已放出第一个测试版, 欢迎下载及提供意见和建议!
(2)由于1.0.48.05版本主分支已经停止更新近一年, 而AutoHotkey_L分支持续更新, 增加了许多重要的特性, 接下来计画翻译其帮助档案.
新特性
流程控制 | |
---|---|
BreakLoopLabel | 退出一个循环或任意数目的嵌套循环. |
ContinueLoopLabel | 继续循环, 即使在任意数目的嵌套循环中. |
Forx,yinz | 从头到为尾循环对象的内容. |
Loop Until | 循环直到条件为真. 可用于任意类型的循环. |
Try...Catch | 提供结构化的异常处理机制. |
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 | 获取拥有指定视窗的进程的完整路径和名称. |
#Ifexpression | 类似于#IfWinActive,但可以是任意类型的表达式。 |
#IfTimeout | 设定计算单个 #If 表达式可以使用的最大时间。 |
#MenuMaskKey | 改变用来禁止 Win 或 Alt keyup 事件的按键。 |
#Include <Lib> | 包含函式馆资料夹中的脚本档案. |
#InputLevel | 控制热键和热字串是否忽略模拟的键盘和滑鼠事件。 |
#Warn | 启用或禁用为选择的情况提示开发者错误的警告。 |
ComObj...-- 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支持,请参阅脚本兼容性。 |
兼容性 | 在 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