
AutoHotkey是一个基于Windows平台的开放源代码的热键脚本语言,这个脚本语言可以实现键盘和鼠标的自动按键和自动点击功能,通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化,可以简化很多重复性操作工作。
实现一个AHK脚本非常简单,先下载安装AutoHotkey,然后编辑一个文本文件,里面是相关脚本,将文件后缀修改为.ahk结尾,双击此文件即可运行,在任务栏通知区域会出现新的图标,要退出此脚本, 则在任务栏通知区域的绿色 "H" 图标上点击右键即可。
注释
在行首使用分号可以注释当前行脚本。例如:
; 这整行是注释.
也可以在命令的末尾添加注释,此时分号左侧必须至少有一个空格或tab。例如:
Run Notepad ; 这是和命令在同一行的注释。
此外,可以使用 /* 和 */ 符号注释整块代码,但仅当它们出现在行首时才有效。
标签
定义标签使用一个冒号结尾,语句块(代码段)以 return 结束, 使用 goto, gosub等调用。
myLabel: ;你的代码 return
函数
函数类似于子程序 (Gosub),不过它可以从调用者那里接受参数 (输入),同时,函数还可以返回值给其调用者。
函数名(参数1,参数2, 参数3="默认值", 参数4:="这样设置默认值也一样"){ ;你的代码 return "返回值";字符串需要引号 }
默认情况下,在函数中创建或访问的所有变量都是局部的。每个局部变量的内容只在它所在的函数中可见。因此,一个局部变量可以和一个全局变量有相同的名称却有着不同的内容。最后,所有的局部变量在每次调用函数时都以空值开始。
函数代码块以 { 开始并以 } 结束。
热键
热键有时也称为快捷键,能简便地触发动作,定义热键使用两个冒号结尾,以 return。
#n:: Run Notepad return
在定义热键时可以使用下列修饰符:
符号 | 说明 |
---|---|
# | Win (Windows 徽标键). |
! | Alt键 |
^ | Control键 |
+ | Shift键 |
& | 和符号可以用来组合任意两个按键或鼠标按钮, 让它们成为自定义热键. |
< | 使用成对按键中左边的那个. 例如 <!a 相当于 !a, 只是使用左边的 Alt 键才可以触发. |
> | 使用成对按键中右边的那个. |
* |
通配符: 即使附加的修饰键被按住也能激发热键. 这常与重映射按键或按钮组合使用. 例如: *#c::Run Calc.exe; Win+C、Shift+Win+C、Ctrl+Win+C 等都会触发此热键。 *ScrollLock::Run Notepad; 即使在按住其他修饰键时按下 ScrollLock 也会触发此热键。 |
~ |
激发热键时,不会屏蔽(被操作系统隐藏)热键中按键原有的功能。 |
$ |
通常只在脚本使用 Send 命令发送包含了热键自身的按键时才需要使用此符号, 此时可以避免触发它自己。 |
按键、鼠标按钮和操纵杆控制器的列表
鼠标 | |
---|---|
LButton | 鼠标左键 |
RButton | 鼠标右键 |
MButton | 鼠标中键或滚轮 |
高级 | |
XButton1 | 鼠标的第四个按钮。一般和 Browser_Back 执行相同功能。 |
XButton2 | 鼠标的第五个按钮。一般和 Browser_Forward 执行相同功能。 |
Wheel | |
WheelDown | 向下转动鼠标滚轮(向您的方向)。 |
WheelUp | 向上转动鼠标滚轮(远离您的方向)。 |
键盘 | |||
---|---|---|---|
CapsLock | 大小写锁定键 | ||
Space | 空格键 | ||
Tab | Tab 键 | ||
Enter (或 Return) | 回车键 | ||
Escape (或 Esc) | 退出键 | ||
Backspace (或 BS) | 退格键 | ||
光标控制 | |||
ScrollLock | 滚动锁定键 | ||
Delete (或 Del) | 删除键 | ||
Insert (或 Ins) | 插入改写切换键 | ||
Home | Home 键 | ||
End | End 键 | ||
PgUp | 向上翻页键 | ||
PgDn | 向下翻页键 | ||
Up | 向上方向键 | ||
Down | 向下方向键 | ||
Left | 向左方向键 | ||
Right | 向右方向键 | ||
Numpad | |||
NumLock 开启 |
|
||
Numpad0 |
|
||
Numpad1 |
|
||
Numpad2 |
|
||
Numpad3 |
|
||
Numpad4 |
|
||
Numpad5 |
|
||
Numpad6 |
|
||
Numpad7 |
|
||
Numpad8 |
|
||
Numpad9 |
|
||
NumpadDot |
|
||
NumpadDiv |
|
||
NumpadMult |
|
||
NumpadAdd |
|
||
NumpadSub |
|
||
NumpadEnter |
|
||
功能 | |||
F1 - F24 | 在大多数键盘顶部的 12 个或更多的功能键。 | ||
按键修饰符 | |||
LWin | 左边的 Windows 徽标键。对应的热键前缀为 <# 。 |
||
RWin | 右边的 Windows 徽标键。对应的热键前缀为 ># 。 |
||
Control (或 Ctrl) | Control 键。单独作为热键(Control:: )时它在弹起时触发。对应的热键前缀为 ^ 。 |
||
Alt | Alt 键。单独作为热键(Alt:: )时它在弹起时触发。对应的热键前缀为 ! 。 |
||
Shift | Shift 键。单独作为热键(Shift:: )时它在弹起时触发。对应的热键前缀为 + 。 |
||
LControl(或 LCtrl) | 左 Control 键。对应的热键前缀为 <^ 。 |
||
RControl(或 RCtrl) | 右 Control 键。对应的热键前缀为 >^ 。 |
||
LShift | 左 Shift 键。对应的热键前缀为 <+ 。 |
||
RShift | 右 Shift 键。对应的热键前缀为 >+ 。 |
||
LAlt | 左 Alt 键。对应的热键前缀为 <! 。 |
||
RAlt | 右 Alt 键。对应的热键前缀为 >! 。 |
||
多媒体 | |||
Browser_Back | 后退 | ||
Browser_Forward | 前进 | ||
Browser_Refresh | 刷新 | ||
Browser_Stop | 停止 | ||
Browser_Search | 搜索 | ||
Browser_Favorites | 收藏夹 | ||
Browser_Home | 主页 | ||
Volume_Mute | 静音 | ||
Volume_Down | 调低音量 | ||
Volume_Up | 增加音量 | ||
Media_Next | 下一首 | ||
Media_Prev | 上一首 | ||
Media_Stop | 停止 | ||
Media_Play_Pause | Play/Pause | ||
Launch_Mail | 打开默认的电子邮件程序 | ||
Launch_Media | 打开默认的媒体播放器 | ||
Launch_App1 | 打开我的电脑 | ||
Launch_App2 | 打开计算器 | ||
特别 | |||
AppsKey | 菜单键。这是调用右键上下文菜单的按键。 | ||
PrintScreen | 捕获屏幕 | ||
CtrlBreak | |||
暂停 | 暂停键 | ||
中断 | 中断键。由于此键和 Pause 含义相同,所以在热键中请使用 ^CtrlBreak 代替 ^Pause 或 ^Break 。 |
||
帮助 | 帮助键。此键可能在大多数键盘上不存在。它通常和 F1 不同. | ||
Sleep | 休眠键。注意在一些键盘上的 sleep 键可能不是休眠功能。 |
常用命令
SetTimer [, Label, Period|On|Off, Priority]
以指定的时间间隔自动并重复运行子程序。
标签
跳转的目标 标签 或 热键标签 的名称, 这样会执行 Label 下的命令, 直到遇到 Return 或 Exit
Period|On|Off
On: 以原来的 周期 重新启用之前禁用的计时器。如果计时器不存在,则进行创建 (使用默认的周期 250)。
Off: 禁用现有的计时器。
Priority
表示计时器的优先级。如果省略,则使用 0。
Sleep DelayInMilliseconds
在继续前等待指定的时间量。参数是要暂停的时间量 (单位为毫秒)。
Send Keys
发送模拟键击和鼠标点击到活动窗口。参数是要发送的按键序列。
Send Keys down
按住指定按键。
Send Keys up
释放指定按键。
Click
在鼠标光标的当前位置点击一次鼠标左键。
Click right
在鼠标光标的当前位置点击一次鼠标右键。
Click down
按下鼠标左键不放。
Click up
释放鼠标左键。
Click down right
按下鼠标右键不放。
Click up right
释放鼠标右键。
PixelGetColor, OutputVar, X, Y [, Alt|Slow|RGB]
获取指定的 x, y 坐标处像素的颜色。
Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]
运行外部程序。与 Run 不同,RunWait 会等待程序结束才继续往后执行。
Run Notepad Run C:\My Documents\Address List.doc Run C:\My Documents\My Shortcut.lnk Run www.williamlong.info Run mailto:someone@somedomain.com
参数是要运行的文档,URL,可执行文件 (.exe, .com, .bat, 等等),快捷方式 (.lnk) 或系统动词。
要让脚本等到程序或文档关闭后才继续执行,请使用 RunWait 代替 Run。在下面的例子中,一直到用户关闭记事本后 MsgBox 命令才会继续执行。
RunWait Notepad MsgBox The user has finished (Notepad has been closed).
WinWaitActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]
等到指定的窗口处于活动状态。
Run, notepad.exe WinWaitActive, Untitled - Notepad, , 2 if ErrorLevel { MsgBox, WinWait timed out. return } else WinMinimize; 最小化 WinWaitActive 找到的窗口.
WinWaitNotActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]
等到指定的窗口处于不活动状态。