本文适合于:每天用电脑工作学习的朋友、游戏发烧手指又不灵敏的朋友、希望提高自己使用电脑效率的朋友。

本文将将告诉你AutoHotkey能做什么,并会一步一步地教会你轻易地使用它,但不会教你更多AutoHotkey的高级和复杂用法。不过对大多数人来说,我所教的这些也已经完全够用。

一、AutoHotkey是什么?

根据百度定义,如下:

AutoHotkey 是一款免费的、Windows平台下开放源代码的热键脚本语言。有了它,您就可以:

  通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化。您可以自己编写 宏或者使用宏录制器来生成;

  为键盘,游戏操纵杆和鼠标创建热键。 事实上任何的按键、按钮或组合键都可以被设置为热键;

  当键入您自定义的缩写时可以扩展缩写。例如, 键入“btw”就可以自动扩展为“by the way”;

  创建自定义的数据输入表格、用户界面、菜单等。详情请看 图形界面 部分;

  映射 键盘、游戏操纵杆和鼠标上的按键或按钮;

  运行现有的AutoIt v2脚本 并用 新功能 来增强它们;

  将脚本文件编译成EXE可执行文件,使得程序在没有安装AutoHotkey的机器上得以运行;

借助相关工具以实现更强大的功能。

二、AutoHotkey的安装

Autohotkey的安装:下载地址http://www.autohotkey.com/download/,大约2M大小,正常安装即可。

三、一步一步学会AutoHotkey[这个教程大约需要三十分钟]

第一课:Getting Started

先从一个小例子开始,按着一步步操作就好。

1、 在任意一个地方新建一个文本文件,打开,输入以下内容:

#n::run notepad

2、 更改文件名后缀为.ahk

3、 选择此文件单击右键,可以看到有个Run Script,单击它。此时可以看到在状态栏里有个绿色的H图标安静着躺着。你再试试按windows+n键,记事本程序启动了吧,那么没错,这就是AutoHotkey在工作。

回顾一下这个流程:写好ahk文件------>运行它-------->使用定义好的快捷键启动程序,很简单,不是嘛。试试将n换成另一个键m,当然结果就变成了windows+m打开记事本。试试将#号换成^,这下变成ctrl+n打开记事本啦。还可以这样写#^n,就是说要windows+ctrl+n打开记事本,常用组合键的标记符号是:ctrl:^,shift:+,windows:#,alt:!。(你还可以区分左右shift,ctrl等等,不过我在这里就不说了),它们可以任意组合起来。

第一课完毕,很简单,不是嘛!

第二课:启动更多程序

你自然不会只满足于用windows+z或者其它快捷键启动一个简单的notepad,所以,请再继续下去。

设想你的目的是用windows+Q打开我们常用的QQ程序,假设它所在位置是这个:D:\Program Files\Tencent\QQ\Bin\QQ.exe,那么现在把第一课的那个文件内容换成:

#n::run D:\Program Files\Tencent\QQ\Bin\QQ.exe

然后双击运行它,按下windows+Q,QQ又乖乖地启动了吧!

对于其它的许多程序,它们也可以这样加一句,比如像下面这样子,你可以写许多句这些语句在这个.ahk文件内:

#n::run notepad

#c::run Calc

还可以一个键打开多个程序,像这样子

#n::

run notepad

run calc

return

效果就是按windows+n会同时打开notepad和calc,注意后面的return必须要,不然它不知道什么时候结束。

在这一课的最后教你的一个高级技巧。

刚刚我们定义了一个快按键#n::run D:\Program Files\Tencent\QQ\Bin\QQ.exe,如果我们改天QQ装到了C盘呢,或者把这个文件弄到别人电脑上执行,那这时候就需要更改这句了吧,这么一句还好,要是我们有很多很多句,那工作就大了。所以,我们可以这样子做:

比如说在D盘新建一个文件夹,比如命名为QuickStart吧,现在把要启动的程序都建一个快捷方式在里面。然后,把#n::run D:\Program Files\Tencent\QQ\Bin\QQ.exe这句这样写:

PROGRAMDIR:= "D:\QuickStart"

#n::run % PROGRAMDIR %\QQ

简单地解释一下,第一句定义了一个变量,存着"D:\QuickStart"这个目录,第二句% PROGRAMDIR%引用了这个地址。这样的好处就是下次要改就只要改PROGRAMDIR这个变量了,不错吧。

第三课:任意组合按键

还是先看一个实例,把下面这句输入你的.ahk文件

+!h::

send Hi,what’s a nice day!{enter}

return

随意找一个可以输入文本的地方按shift+alt+h,是不是一下子就输出了Hi,what’s a nice day!这句话,还回车了一下。不用我说,现在你必定已经明白AutoHotkey可以干嘛了。

下面我再看了一个更实际的应用:

就说我现在所在的Word2007,如果我想插入一个目录,那么用鼠标的话,应该是在引用->目录->插入目录下,如果用按键的话,应该是先按Alt,再按s,再按t,再按i。自然,用Autohotkey可以把这些键定义为一个快捷键,像下面这样:

#1::

SetKeyDelay, 50

send {alt}styi

return

先试用一下,再看我讲解,第三句是发送按键,虽然写在了一行,但其它你也可以这样写:

send {alt}

send s

……

但这样较长,对吧,但这样你可以更加理解它们是一个一个地发送的。这里的关键在于第二句,它设置每个键发送间的延时是多少,-1一般表示0,0表示尽可能小的时差,数字表示ms,为更好理解,把这个数字设为1000,然后运行,现在再在Word里试一下,是不是像是在慢动作回放,话说这种感觉是不是很好哇!

如果这个值太小了,会达不到预期目的。因为从一个键按下后,Word程序接收了此按键及响应此消息都是需要时间的,就像你把10个字在1秒内向别人喊出来(如果你可以的话),那别人肯定听不明白。所以我们必须给它足够的反应时间,这个值设多大,与具体的程序有关,如果这些程序要进行复杂操作,响应时间可以较长,对于一般的程序,我觉得50应该是够了的。一般第一次使用可以不成功,第二次就可以了,原因应该很容易想明白。

本节的内容讲完了,使用本节的知识已经可以干许多许多事情了。比如说将游戏中的复杂按键定义为一热键,由于像拳皇那样的格式游戏,肯定也会很High的。

不过刚刚在前面说到输出Hi,what’s a nice day!这句,当时不忍心打断大家学习的思路,到这里,我要提出一个问题来:那就是,如果你把这句话换成中文或者哪怕只是一个中文标点,输出的就乱码。这个问题没有解决,因为我没有找到AutoHotkey有设置编码格式的地方,所以如果大家有解决方案请发邮件告诉我hejw06@gmail.com啊

第四课 更实用的两个例子

这是最后一课,我也写累了,所以不细解释了,看下面这个例子:

(;是注释符)

+!l:: ;切换到Lingoes

IfWinExist Lingoes

{

WinActivate

}

else

{

Run %PROGRAMDIR%\Lingoes

WinWait Lingoes

WinActivate

}

return

它实现了一个功能就是如果Lingoes已经打开了,则激活它,如果没有打开,则打开。

最后一个例子:

WinStatus:=0

#m::

if WinStatus=0

{

WinMaximize , A

WinStatus:=1

}

else

{

WinRestore ,A

WinStatus:=0

}

return

实现的功能是按Windows+M则将当前窗口在最大化与正常窗口间切换。使用了变量WinStatus为记录窗口状态,不过这样做这个问题就是切换到另一个窗口去控制时,可能第一次按键无效。我没有找到相关的接口获得当前窗口的状态,如果有人知道更好的解决方案的话一定要告诉我,我的邮箱是hejw06@gmail.com。

最后,如果你还有不懂的地方,可以和我一起讨论,如果希望学到更深,了解更多AutoHotkey的用法,或者希望获得别人的写的代码,可以去AutoHotkey的官方bbs: http://ahk.5d6d.com/bbs.php

更快的使用你的键盘:AUTOHOTKEY的更多相关文章

  1. 设计师和开发人员更快完成工作需求的20个惊人的jqury插件教程(上)

    [转] 设计师和开发人员更快完成工作需求的20个惊人的jqury插件教程(上) jquery的功能总是那么的强大,用他可以开发任何web和移动框架,在浏览器市场,他一直是占有重要的份额,今天,就给大家 ...

  2. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...

  3. 假如 UNION ALL 里面的子句 有 JOIN ,那个执行更快呢

    比如: select id, name from table1 where name = 'x' union all select id, name from table2 where name =  ...

  4. 【译】更快的方式实现PHP数组去重

    原文:Faster Alternative to PHP’s Array Unique Function 概述 使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一 ...

  5. ubuntu 12.04 LTS 如何使用更快的更新源

    装好ubuntu系统后的第一见事就是替换自带的更新源,原因是系统自带的源有些在中国访问不了,可以访问的速度又特别慢.幸好国内的一些公司和大学提供了速度不错的更新源.下面介绍如何使用更快的更新源 方法/ ...

  6. php提供更快的文件下载

    在微博上偶然看到一篇介绍php更快下载文件的方法,其实就是利用web服务器的xsendfile特性,鸟哥的博客中只说了apache的实现方式,我找到了介绍nginx实现方式的文章,整理一下! let' ...

  7. CSS 和 JS 动画哪个更快

    基于Javascript的动画暗中同CSS过渡效果一样,甚至更加快,这怎么可能呢?而Adobe和Google持续发布的富媒体移动网站的性能可媲美本地应用,这又怎么可能呢? 本文逐一遍览了基于Javas ...

  8. 为什么get比post更快

    引言 get和post在面试过程中一般都会问到,一般的区别: 1.post更安全(不会作为url的一部分,不会被缓存.保存在服务器日志.以及浏览器浏览记录中) 2.post发送的数据量更大(get有u ...

  9. CSS VS JS动画,哪个更快[译]

    英文原文:https://davidwalsh.name/css-js-animation 原作者Julian Shapiro是Velocity.js的作者,Velocity.js是一个高效易用的js ...

随机推荐

  1. Bash 字符串处理命令

    字符串长度 str="abc" echo ${#str} 查找子串的位置 str="abc" str1=`expr index $str "a&quo ...

  2. 10个经典的Java面试题

    这里有10个经典的Java面试题,也为大家列出了答案.这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之后一定会有所提高.让我们一起来看看吧. 1.Java的HashMap是如何工作的? ...

  3. Java对XML文档的增删改查

    JAVA增删改查XML文件   最近总是需要进行xml的相关操作. 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作. 读取XML配置文件 首先我们需要通过Do ...

  4. POI操作文档内容

    一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二. HSSF概况 HSSF 是 ...

  5. solr 在windows下的安装

    安装环境 Windows 7 64bit Apache-tomcat-8.0.9-windows-x64 Solr-4.9.0 JDK 1.8.0_05 64bit 安装步骤 Tomcat和JDk的安 ...

  6. iOS开发之监测网络状态

    一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户 ...

  7. 适配iOS7uinavigationbar遮挡tableView的问题

    //适配iOS7uinavigationbar遮挡tableView的问题 if([[[UIDevice currentDevice]systemVersion]floatValue]>=7.0 ...

  8. 关于 Head First SQL 中文版

    我想谈谈 我对于Head  First  SQL  中文版的一些看法 事实上关于我翻译的这个Head  First  SQL 中文版..我自觉得:的确翻译得非常烂.. 和翻译Head  First  ...

  9. springMVC3学习(二)--ModelAndView对象

    当控制器处理完请求时,一般会将包括视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet. 因此,常常须要在控制器中构造ModelAndView对象. ...

  10. 【剑指Offer学习】【面试题43 : n 个锻子的点数】

    题目:把n个骰子扔在地上,全部骰子朝上一面的点数之和为s.输入n.打印出s 的全部可能的值出现的概率. 解题思路 解法一:基于通归求解,时间效率不够高. 先把n个骰子分为两堆:第一堆仅仅有一个.还有一 ...