文档库 最新最全的文档下载
当前位置:文档库 › AHK语言

AHK语言

指南和概述

这个简短的介绍将帮助你马上开始编写你自己的宏和热键脚本。
指南目录
? 创建一个脚本
? 启动一个程序或文档
? 发送键击和鼠标点击
? 激活与操纵窗口
? 从用户使用的 MsgBox, InputBox 等命令来获取输入的数据
? 使用变量和剪贴板
? 一遍遍地重复一系列动作
? 操纵文件和文件夹
? 其他功能的概述
创建一个脚本
每个脚本都是一个包含命令的要被程序(AutoHotkey.exe)执行的纯文本文件。一个脚本也可能包含热键和热字串,甚至于全部由它们组成。不过,在没有热键和热字串时,一个脚本从它被启动时起,将从头至尾顺序地执行它的命令。
要创建一个新脚本:
1 打开 Windows 资源管理器并进入一个你选择的文件夹。
2 拉下文件菜单并选择 新建 >> AutoHotkey Script (或 新建 >> 文本文档)。
3 给文件键入一个名称,确保它以 .ahk 结尾。例如:Test.ahk
4 鼠标右键点击此文件并选择 Edit Script。
5 在一个新的空行,键入下述内容:
#space::Run https://www.wendangku.net/doc/b812703386.html,
符号 # 表示 Windows 键,因此 #space 意味着按住 Windows 键然后按下空格键来激活一个热键。符号 :: 意味着每次按下此热键时,随后的命令将会被执行,在此例中将转到 Google 网站。要试用此脚本,按下述内容继续操作:
6 保存并关闭此文件。
7 在 Windows 资源管理器中,鼠标双击来启动脚本。一个新的系统托盘图标出现。
8 按住 Windows 键并按下空格键。一个网页在默认浏览器中打开。
9 要退出或编辑此脚本,鼠标右键点击它的系统托盘图标。
注意:多个脚本能被同时运行,每个带有它自己的托盘图标。此外,每个脚本能拥有多个热键和热字串。
启动一个程序或文档
Run 命令用来启动一个程序、文档、URL(统一资源定位符) 或者快捷方式。这里有一些普通的例子:
Run Notepad
Run C:\My Documents\Address List.doc
Run C:\My Documents\My Shortcut.lnk
Run https://www.wendangku.net/doc/b812703386.html,
Run mailto:someone@https://www.wendangku.net/doc/b812703386.html,
一个热键通过包含一个热键标记能被分配给以上任何一个例子。在下面的第一个例子中,被分配的热键是 Win+N,而在第二个里是 Control+Alt+C:
#n::Run Notepad
^!c::Run calc.exe
上面的例子被称为单行热键,因为每个热键仅由单个命令组成。要通过一个热键执行多个命令,把首行放在热键定义的下面并让末行有一个 return。例如:
#n::
Run https://www.wendangku.net/doc/b812703386.html,
Run Notepad.exe
return
如果要运行的程序或文档没有与系统结合在一起,指定它的完整路径来使它启动:
Run %A_ProgramFiles%\Winamp\Winamp.exe
在上面的例子里,%A_ProgramFiles% 是一个内置变量。通过使用它而不是类似像 C:\Program Files,脚本将更便携,意味着它将很有可能在其他

计算机上运行。注意:命令的名称和变量都不区分大小写。例如,"Run" 和 "run" 是一样的,而且 "A_ProgramFiles" 也和 "a_programfiles" 是一样的。
要让脚本在继续执行前等待程序或文档关闭,使用 RunWait 代替 Run。在下述例子中,MsgBox 命令将不会执行,直到用户关闭了记事本之后:
RunWait Notepad
MsgBox 用户已完成(记事本已被关闭)。
要学习更多关于启动程序的内容--像传递参数、指定工作目录和了解一个程序的退出代码--点击这里。
发送键击和鼠标点击
键击通过使用 Send 命令发送到活动的(最前面的)窗口。在下述例子中,Win+S 变为一个热键去键入一个签名(确保在按下 Win+S 前,像一个编辑器或起草电子邮件信息的窗口是活动的):
#s::
Send Sincerely,{Enter}John Smith
return
在上面的例子里,所有的字符精确地发送,除了 {Enter},其模拟按下了 Enter 键。下一个例子说明了其他一些常用的特殊字符:
Send ^c!{tab}pasted:^v
上面这行发送了一个 Control+C 紧跟一个 Alt+Tab 紧跟字串 "pasted:" 紧跟一个 Control+V。要得到一个完整的特殊字符和按键的列表,请见 Send 命令。
最后,键击也能对你键入的缩写做出反应而被发送,这称为热字串。例如,每当你键入 Btw 紧跟一个空格或逗号,下述这行会把它替换为 "By the way":
::btw::by the way

鼠标点击:要对一个窗口发送一个鼠标点击,首先必须要定义将要点击的位置的 X 和 Y 坐标轴。这个能用 AutoScriptWriter 或 Window Spy 来完成,它们已包含在 AutoHotkey 中。下述步骤是适用于 Window Spy 的方法:
10 从脚本的托盘图标菜单或系统开始菜单启动 Window Spy。
11 通过鼠标点击感兴趣的窗口的标题栏、alt 标签栏或其他方法来激活窗口 (被设计好的 Window Spy 将处于 "置顶" )。
12 在目标窗口中移动鼠标指针到想要的位置并记下由 Window Spy 显示的鼠标坐标轴 (或按下 Shift-Alt-Tab 来激活 Window Spy 以便 "冻结的" 坐标轴能被复制和粘贴)。
13 在 Click 命令中使用上面发现的坐标轴。下述例子点击了鼠标左键:
Click 112, 223
要移动鼠标而不是点击,请用 MouseMove。要拖选鼠标,请用 MouseClickDrag。
激活与操纵窗口
要激活一个窗口 (使它在最前面),使用 WinActivate。要探测一个窗口是否存在,使用 IfWinExist 或 WinWait。下述的例子阐明了这些命令:
IfWinExist 无标题 - 记事本
{
WinActivate
}
else
{
Run Notepad
WinWait 无标题 - 记事本
WinActivate
}
上面的例子首先搜索标题以"无标题 - 记事本" (区分大小写) 开始的任何存在的窗口。如果这样的一个窗口被找到,它将被激活。否则,记事本被启动并且脚本等待无标题窗口出现,那时它将被激活。上面的例子也

运用了最近找到的窗口来避免需要在每个 WinActivate 右边指定窗口的标题。
其他一些常用的窗口命令是:
? IfWinActive: 检查指定的窗口当前是否激活。
? WinWaitActive: 等待指定的窗口变为活动的窗口 (典型地使用在发送一个窗口激活键击之后,例如按下 Control-F 来“查找”)。
? WinClose: 关闭指定的窗口。
? WinMove: 移动及(或)调整指定窗口的大小。
? WinMinimize, WinMaximize, WinRestore: 分别最小化、最大化或还原指定的窗口。
从用户使用的 MsgBox, InputBox 等命令来获取输入的数据
下述例子显示一个带两个按钮的对话框 (是 和 否):
MsgBox, 4, , 你想继续吗?
IfMsgBox, No
return
;否则,用户选择了是。
MsgBox 你按了是。
使用 InputBox 命令来提示用户键入一个字串。使用 FileSelectFile 或 FileSelectFolder 来让用户选择一个文件或文件夹。为了更高级的任务,使用 Gui 命令来创建自定义用户界面和数据输入表单。
提示:你也许已经从其他例子中注意到任何命令的第一个逗号可以被省略 (除了当第一个参数为空或者命令是单独在一个连续部分的顶端) 。例如:
MsgBox 这是可以的。
MsgBox, 这也是可以的 (它有一个明显的逗号)。
使用变量和剪贴板
一个变量是脚本储存文本或数字的一个内存区域。尽管所有变量将它们的内容存为字符串,一个仅包含数位的变量会在一个数学运算或比较需要时,自动地转换为一个数字。相反地,当一个数学运算的结果需要被存进一个变量时会被转换回一个字串。
除了在函数里的局部变量外,所有变量都是全局的;就是说,它们的内容可以在脚本的任意部分被读取或更改。另外,变量不需要声明;它们只在使用它们时存在 (并且每个变量都以空或空白开始) 。
要指定一个字串给一个变量,参照这些例子:
MyVar1 = 123
MyVar2 = 我的字串
要将一个变量的内容和一个数字或字串比较,参照这些例子:
if MyVar2 = 我的字串
{
MsgBox MyVar2 包含字串"我的字串"。
}
if MyVar1 >= 100
{
MsgBox MyVar1 包含 %MyVar1%,它是一个大于或等于 100 的数字。
}
在上面的 MsgBox 行, 注意那第二个出现的 MyVar1 被括在百分号内。它在那里显示了 MyVar1 的内容。相同的手法能用来复制一个变量的内容给另一个变量。例如:
MyVarConcatenated = %MyVar1% %MyVar2%
上面这行在变量 MyVarConcatenated 中储存了字串 "123 我的字串" (不含引号) 。
要比较一个变量和另一个变量的内容的用法,参考这个例子:
if (ItemCount > ItemLimit)
{
MsgBox 在 ItemCount 里的值,是 %ItemCount%,比 %ItemLimit% 大。
}
注意上面例子的首行包含圆括号。圆括号表示那 if-语句包含一个表达式。没有它们的话,

那行将被认作一个“非表达式的 if-语句”,并且因此它将需要让 ItemLimit 以百分号围住。这样的 IF 语句被限制为一个单独的比较运算符;也就是说,它们不能包含数学运算符或者像 "AND" 和 "OR" 这样的联合运算符。

数学: 要执行一个数学运算,使用冒号-等号运算符 (:=) 来指定一个表达式的结果给一个变量, 像下面的例子:
NetPrice := Price * (1 - Discount/100)
请见表达式来获得一个完整的数学运算符列表。

剪贴板: 名为 Clipboard 的变量是特殊变量,因为它包含了当前 Windows 剪贴板里的文本。即使如此,它也能像一个普通变量被使用。例如,下面这行将显示当前剪贴板的内容:
MsgBox %clipboard%
要改变剪贴板内容,参考下述例子,它用新的文本替换了当前剪贴板里的内容:
clipboard = 一行文本。`r`n第二行文本。`r`n
在上面这行,`r 和 `n (重音符紧跟着字母 "r" 或 "n") 被用来标明两个特殊的字符:回车和换行。这两个字符重新开始一个文本行就像用户按下了 Enter 键。
要追加文本到剪贴板(或任何其他变量),参照这个例子:
clipboard = %clipboard% 这里是追加的文本。
详见剪贴板和变量章节。
一遍遍地重复一系列动作
要连续地不止一次执行某物,一个 loop 就是答案。下述 loop 显示了三次 MsgBox :
Loop 3
{
MsgBox 此窗口将被显示三次。
}
你也能在单词 Loop 后面指定一个变量,它在脚本内部的某处其循环的次数被定义时是有用的:
Loop %RunCount%
{
Run C:\Check Server Status.exe
Sleep 60000 ;暂停 60 秒。
}
在上面例子里,loop 将执行指定的次数,除非 RunCount 是 0,在这种情况下,loop 整个被跳过。
一个 loop 也可以终止它自己,当一个或多个条件改变时。下述例子重复地点击鼠标左键,当用户按住 F1 键时:
$F1:: ;让 F1 键成为一个热键 ( $ 符号有助于下面 GetKeyState 的 "P" 模式)。
Loop ;由于没有指定数字给它,这是一个无限循环,除非在内部碰到 "break" 或 "return"。
{
if not GetKeyState("F1", "P") ;如果此状态为真,则用户已经物理地释放了 F1 键。
break ;打破循环。
;否则 (由于上面没有"打破"),保持点击鼠标左键。
Click ;在当前光标位置点击鼠标左键。
}
return
上面的例子和一个有时称为 "while...do" 的循环在功能上相同。短语 "while...do" 指的是当某个或某些条件仍然为真时,此循环重复地做某事的事实。在本例中,当 F1 键被按住的时候,此循环继续点击鼠标左键。当用户释放 F1 键时,此循环探测到此动作并通过 break 命令终止了它自己。Break 引起执行跳到循环的闭合大括号的下一行。
上面给出的例子是一般用途的循环。为了更具体的需要

,可参考下述的某个循环:
文件读写循环: 在一个文本文件内一次检索一行。此命令能用来在一行行的基础上将一个文件转换成不同的格式。它也能被用来按你的标准逐行搜索。
文件和文件夹循环: 一次检索一个指定的文件或文件夹。它允许每个文件或文件夹执行一个满足你的标准的操作。
分解循环: 从一个字串里一次检索一个子字串。它允许一个像 "红、绿、蓝" 这样的字串被简单地打断成它的三个组成部分。
注册表循环: 一次检索一个指定的注册表子键的内容。
操纵文件和文件夹
要添加文本到一个文件的末尾 (或创建一个新文件),使用在下述例子里出现的 FileAppend。注意它在后面使用 `n (换行) 来启用一个新的文本行:
FileAppend, 添加一行文本。`n, C:\My Documents\My Text File.txt
要覆盖一个存在的文件,在 FileAppend 之前使用 FileDelete。例如:
FileDelete, C:\My Documents\My Text File.txt
其他一些常用的文件和文件夹命令是:
? FileRead: 读取一个文件的整个内容给一个变量。
? 文件读取循环: 在一个文本文件里逐行检索。
? IfExist: 根据一个文件或文件夹的是否存在而做出决定。
? FileSelectFile和 FileSelectFolder: 为用户选择一个文件或文件夹显示一个对话框。
? FileDelete/FileRecycle: 删除或回收一个或多个文件。使用 FileRemoveDir 来删除一整个文件夹。
? FileCopy/FileMove: 复制或移动一个或多个文件。使用 FileCopyDir/FileMoveDir 来复制或移动一整个文件夹。
? 文件和文件夹循环: 一次检索一个被包含在一个文件夹下的文件和文件夹。
? FileSetAttrib和 FileSetTime: 改变一个或多个文件的属性或时间标记。
? IniRead, IniWrite 和 IniDelete: 创建、访问和修改标准格式的 INI 文件。
? RegRead, RegWrite, RegDelete 和 Registry Loop: 和 Windows 注册表一起工作。
其他功能的概述
获取每个命令的概述,请见命令列表。
翻译:天堂之门 menk33@https://www.wendangku.net/doc/b812703386.html, 2008年12月11日
Don’t Repeat yourself在编程领域成为DRY原则,是知道我们编写强壮代码的重要指导原则之一,但是,事实上在其他领域也是一样的(我也不知道此原则是否最先出现在编程领域)。Larry Wall的懒惰是程序员的美德的话我是记忆深刻。作为一个对计算机着迷,对程序无比投入的人,深知学海无涯,但是,正是因为学无止尽,更迫切的需要我们做追求效率的程序员,将重复的工作交给最擅长做重复工作的电脑去做,只有这样,我们才能将更多的时间节省下来,去干我们自己想干的事情。(虽然工作时不太可能-_-!但是起码能赢得一句手快的评价,再次-_-!)学习VIM,Bash,Python,Lua,Qt,SQL都是如此,在这条路上已经走了这么远的我们

,又何惧为了更加提高效率,再多学AutoHotkey这样一个小工具呢?既然选择了远方,就只顾风雨兼程,既然选择了编程,就只能忘了远方。-_-!敲自己的键盘,让别人走路去吧。
AutoHotkey的名字大家说不上如雷贯耳,久仰大名,起码也是早有耳闻了吧。让我们不惧艰险(又是一种脚本语言-_-!)将AutoHotkey作为饭后甜点好好品尝一下吧吧^^

AutoHotkey是什么
AutoHotkey简单来说是一个附带键盘宏录制的脚本工具,但是因为功能太过强大了,叫做自动化工具也许较为合适。从自动化工作这一点来看,AutoHotkey类似Linux下的Bash,都不以脚本语言的逻辑表达能力取胜,专门针对自动化工作设计,只不过Bash是命令行下的,对窗口一无所知,而AutoHotkey可以说是专门针对Windows的窗口平台的,有对快捷键和窗口环境的强大支持。(我见人将其称作GUI-Scripting,实在贴切)也许可以说AutoHotkey就是GUI环境下的Bash。既然Linux下Bash是必学的(的确应该学),那么AutoHotkey也就顺面学了吧。

安装配置
下载安装我就不多说了,真的不知道这里有个地址可以去看看。善用佳软的AutoHotkey 0级教程,顺面推荐下善用佳软,推崇并介绍了很多好用的免费软件,个人很喜欢。
AutoHotkey的脚本是以ahk为后缀的文本文件,用你自己最喜欢的编辑器编辑吧,对于vim来说,已经内置了对ahk的语法高亮,我习惯将AutoHotkey的安装目录添加进环境的PATH中,这样用vim编辑脚本的时候可以直接简单的通过!Autohotkey %来运行脚本。(事实上我将其map到了F5上)但是愿意的话,其实.ahk文件在AutoHotkey安装后是与其关联的,直接双击也可以运行此脚本。

初步
首先编个最简单的脚本,看看效果先。
Run https://www.wendangku.net/doc/b812703386.html,/vagrxie
将上一行的代码保存成文本,双击运行,或者用autohotkey运行之,会自动开启你机器上的默认浏览器登录我的博客,建议大家每天运行100次以上^^这个功能有点像Python的os模块的startfile函数,通过解析后面的字符串来判断应该使用什么与其关联的程序运行。当年工作的时候我有个开机脚本就是用Python此函数做的,功能就是开启工作需要的一大堆程序,VS,MSDN,TotalCommand自动一个一个开启并打开合适的工程或目录。现在这个功能也可以交由autohotkey来完成了。就是一条Run命名。
相对来说,对于特定用途的工具(比如Bash,autohotkey)来完成其擅长的事情是会比通用工具(比如Python)来的简洁的,此即一例,Python中虽然也能完成这样的工作(在没有学习Bash前,在linux下它都是我的脚本工具),但是,需要进行import模块,函数调用等一堆难看的东西,autohotkey只需要一个Run。这里之所以讲的多点,

是想说明一个特定工具哪怕并不是完成了什么不可能完成的任务,也许仅仅是将任务完成的更加简洁高效和优雅,也是一个工具的用途体现。至于值不值得为了这份优雅付出学习的代价,那就见仁见智了。
再看个例子:
Run c:\DirTest.txt
此脚本会自动的用你机器配置的文本编辑器开启此文件。(文件必须存在)
但是以下脚本
Run notepad.exe c:\DirTest.txt
无论文件存在不存在都会开始记事本,其中的区别,大家自己体会一下。事实上解析的强度比一般人能够想象的还要厉害,帮助文件中有这个示例:
Run mailto:someone@https://www.wendangku.net/doc/b812703386.html,
呵呵,什么意思大家都知道,牛吧。可惜我一般不用客户端写邮件-_-!

快捷键
AutoHotkey自然对Hotkey又特别支持啦,脚本中用符号表示快捷键,一次排列,几个常见的修饰键对应符号是#Win, !Alt,^Control,+Shift。那么什么叫依次排列呢?看下面的例子。
#space::Run https://www.wendangku.net/doc/b812703386.html,/vagrxie
以上的例子即将Win + space 键设定为访问我的博客,运行后发现没有直接的反应,不像上述例子,此时AutoHotkey以trayicon小图标的形式运行于右下角,当你输入Win + space的时候会触发其运行默认的浏览器开启网站,并且一直有效,直到你将其关闭。(此例也推荐大家每日运行100遍^^与前面第一个例子结合交叉运行效果更佳)同理,要ctrl+space就是^space,要ctrl+alt+space就是^!space。
事实上,一个快捷键可以对应多个命令,也可以多个快捷键对应一个命令,格式有点不多,见下例。
#space::
Run https://www.wendangku.net/doc/b812703386.html,/vagrxie
Run https://www.wendangku.net/doc/b812703386.html,/vagrxie
return
#^a::
#^b::
Run https://www.wendangku.net/doc/b812703386.html,/vagrxie
return
此例即是在按下Win + space时打开我的CSDN博客和空间两个网页,并且CTRL + WIN + A与CTRL + WIN + B都是打开我的博客。举这两个例子主要是告诉大家AutoHotkey的格式相对比较灵活,比如这里的一对多和多对一。当不是一对一并且写在一行时,需要以return来表示脚本的结束。

信息窗口
这也许是最先应该说的,MsgBox
MsgBox Text
即可以通过MessageBox弹出Text的信息,比较方便
可以通过MsgBox弹出Yes Or No等选项,并获取,以判断分支执行程序。
MsgBox, 4,?,Yes or No?
ifMsgBox Yes
MsgBox You Said Yes!
else
MsgBox You Said No?
分支执行的语法比较奇怪,通过if结合MsgBox构成一个IfMsgBox特别应对MsgBox的选择。

对窗口的控制
个人感觉,对窗口的控制是AutoHotkey的精髓所在,这也是为什么我将其比作GUI下的bash。这里我还是通过从简单到复杂的例子来描述。比如,我现在在编辑文档的时候常常会需要打开AutoHotkey的帮助文档查看,一般我的操作是用鼠标点击其最小化的窗口以激活,或者我也会

需要开启gvim以编辑示例程序,也是需要用鼠标去激活,因为用atl+Tab的方式还不如用鼠标快,有了AutoHotkey,我们就有更方便的Hotkey去完成这样的任务了。
SetTitleMatchMode 2
#tab::
ifWinNotExist, GVIM
{
MsgBox GVIM is not running
return
}
IfWinNotActive,GVIM
WinActivate,GVIM
else
WinActivate,Windows Live Writer
return
如上脚本,先判断是否有标题包含GVIM的窗口存在,不存在则报告GVIM没有运行,不然WIN+TAB键的效果就是在GVim与Windows Live Writer之间切换,非常方便。ifWinNotExist如其名,用于判断一个窗口是否存在,ifWinNotActive也如其名用于判断一个窗口是否激活,第一个参数都是表示窗口标题文字的匹配,匹配模式由SetTitleMatchMode决定。
1: A window's title must start with the specified WinTitle to be a match.
2: A window's title can contain WinTitle anywhere inside it to be a match.
3: A window's title must exactly match WinTitle to be a match.
我们使用的是2,表示任意位置都匹配,默认是1,速度最快,必须是开始位置匹配。if一组的函数都还支持其他参数,具体的请查看帮助文档了,我这里主要是展示一下用途。
实际上AutoHotkey对窗口的控制还有很多强大的功能,一篇小文无法一一尽数,这里再举个例子:
SetTitleMatchMode 2
Loop, 10
{
Random, x, 0, 50
Random, y, 0, 50
WinMove,GVIM,, %x%, %y%
WinHide,GVIM
Sleep, 100
WinShow,GVIM
}
上述程序运行后,GVIM窗口会变的疯狂。。。WinMove,WinHide,WinShow的意思都很明显,分别是移动,隐藏,显示窗口,这里有两个有新意的地方,一个是Random和x,y,有点编程知识的人都看出来了,AutoHotkey是允许设定变量的,此处的x,y就是,引用变量的方式是前后各1个百分号,与windows批处理程序的一样。另外就是Loop,10表示的循环结构了。

操作记录器
这个功能有点像国内一个也比较强大的软件键盘精灵的功能(当年玩那种泡菜网络游戏没有少用过它,单纯的键盘鼠标模拟功能不比AutoHotkey差),就是将键盘鼠标操作记录下来,自动生成AutoHotkey的脚本。省去了重复工作的脚本编写之苦。带GUI界面,截图如下:
点击左上角的Record按钮就开始记录键盘鼠标的操作了。然后通过点击录制时屏幕左上角的Stop停止录制。上面的脚本是我录制的一段激活Windows live Writer和最小化Windows live Writer的过程。
WinWait, ,
IfWinNotActive, , , WinActivate, ,
WinWaitActive, ,
MouseClick, left, 1159, 889
Sleep, 100
WinWait, xfsdlaf.ahk (E:\work) - GVIM,
IfWinNotActive, xfsdlaf.ahk (E:\work) - GVIM, , WinActivate, xfsdlaf.ahk (E:\work) - GVIM,
WinWaitActive, xfsdlaf.ahk (E:\work) - GVIM,
MouseClick, left, 908, 17
Sleep, 100
WinWait, ,
IfWinNotActive, , , WinA

ctivate, ,
WinWaitActive, ,
MouseClick, left, 33216, 32891
Sleep, 100
WinWait, Don’t Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer,
IfWinNotActive, Don’t Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer, , WinActivate, Don’t Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer,
WinWaitActive, Don’t Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer,
MouseClick, left, 1362, 10
Sleep, 100
MouseClick, left, 1387, 10
Sleep, 100
会发现自动生成的代码较人工的代码还是乱了很多-_-!机器嘛,不是那么聪明。上面代码很重要的一个就是通过MouseClick来模拟鼠标的点击,有了这个功能,想干什么都可以了………………顺面提及一下,也可以通过
Send Keys
SendRaw Keys
SendInput Keys
SendPlay Keys
SendEvent Keys
来模拟键盘的输入。下面是一个当你暂时离开机器却有不想锁屏时可以提出警告的脚本。:)
SetTitleMatchMode 2
SetKeyDelay 50
Words = WARNING{!} DO NOT OPERATE MY COMPUTER{!}
KeyWait, LButton, D
run,gvim YouAreUnderMonitored,,Max
WinWait,YouAreUnderMonitored
Send i%Words%{Esc}
此脚本等待鼠标左键单击,然后自动开启gvim并最大化,然后一个字一个字输入警告信息^^不明就里的人一看估计碰鬼了。

小结
对于AutoHotkey这样强大的东西,一篇3000来字的小文实在是无法详细尽数其功能,而本人的目的也就是提供给觉得AutoHotKey复杂而不去学习的人尝个鲜,知道了AutoHotkey没有那么难以后,伴随着使用,参考着帮助文档,慢慢的会发现AutoHotkey也是一个离不开的工具了。我就在网上看到很多人狂喊,Linux下什么都好,就是没有AutoHotkey-_-!(其实类似的言论非常多,比如也没有Windows Live Writer equivalent)


相关文档
相关文档 最新文档