推荐一款极其强大的软件 – AutoHotkey

AHK

本文已转至深度论坛,感谢xbeta的点评

AutoHotkey这是一个很神奇的工具。是的,只能用神奇来形容。他的功能类似于按键精灵,可以帮助你完成一系列的动作。或许你已经用过按键精灵,但是在此之前你不会想到AHK是多么的强大。你可以让他帮助你迅速打开常去的几个网站并且登陆邮箱,或者迅速的运行那些藏的很深的程序,你可以用他来做网游的挂机程序,也可以来做格斗游戏中连续技的脚本。只有你有足够的想象力,没有什么是AHK做不到的。与之类似的还有一个AtuoIt3,不过他的代码看起来要郁闷一些,相比之下我还是更喜欢AHK。

如你所见,AHK的所有工作都是通过你所写的脚本来完成的。而这个脚本实际上就是一个普通的文本文件,AHK按照你所写的顺序一行一行的执行下去。写代码确实令人有些头痛,所以很多人对这个软件都望而却步。但是假如你愿意深入的研究一下,就会发现他的代码实际上非常简单易学。与之相对的是,软件自带了非常强大的帮助文件,可惜是英文的。所以我就写了这样一篇文章,希望可以让大家对AHK产生兴趣^_^

首先是转自__ Scripting Life __的官方文档翻译

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

  • 通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化。您可以自己编写 宏 或者使用宏录制器来生成;
  • 为键盘,游戏操纵杆和鼠标创建 热键。 事实上任何的按键、按钮或组合键都可以被设置为热键;
  • 当键入您自定义的缩写时可以 扩展缩写。例如, 键入“btw”就可以自动扩展为“by the way”;
  • 创建自定义的数据输入表格、用户界面、菜单等。详情请看 图形界面 部分;
  • 映射 键盘、游戏操纵杆和鼠标上的按键或按钮;
  • 运行现有的AutoIt v2脚本 并用 新功能 来增强它们;
  • 将脚本文件 编译 成EXE可执行文件,使得程序在没有安装AutoHotkey的机器上得以运行;
  • 借助 相关工具 以实现更强大的功能。

更多关于热键的说明
AutoHotkey 可令键盘、游戏操纵杆和鼠标的所有潜能都发挥出来。例如,除了典型的Control、Alt和Shift键之外,你还可以定义Win键(徽标键)和Capslock键作为调节键。 而实际上你还可以设置任意的键盘按键或鼠标按键作为调节键。详细内容请看 高级热键 部分。

其他功能

  • 调节音量、设置静音,以及其他 关于声卡的设置;
  • 令指定窗口变为 透明,顶层窗口,或改变 外形;
  • 用 游戏操纵杆 或 键盘 代替鼠标;
  • 监控 您的系统。例如,当您不希望见到的窗口出现时自动关闭它们;
  • 获取并改变 剪贴板的内容, 包括从资源管理器中复制的文件的名称;
  • 关闭或屏蔽 Windows自有的快捷键,例如Win+E和Win+R;
  • 取替Alt-Tab (通过按键、鼠标滚轮或按钮)从而减轻RSI(肢体重复性劳损 );
  • 使用您喜欢的图标、工具提示(ToolTip)、菜单项目和子菜单来自定义 托盘图标菜单 ;
  • 显示 对话框、工具提示(Tooltips)、气球提示 以及 弹出菜单,与用户交互;
  • 执行脚本动作来 响应 系统关闭或注销;
  • 检测系统 空闲时间。例如, 在系统空闲的时候执行高CPU负荷的任务;
  • 通过检测 图像 和 象素色彩来自动执行游戏中的动作;
  • 读取、写入 以及 解释 文本文件比起其他语言更容易;
  • 针对一组与 通配符 匹配的文件进行操作;
  • 可对 注册表 和 INI文件 进行操作。

首先下载AHK,这里是他的下载页面:http://www.autohotkey.com/download/。当然你也可以直接下载不用安装的ZIP包

搞定以后就可以开始写脚本了。任何地方点击右键-新建,选择AutoHotkey Script(AHK脚本),当然你也可以直接在文本编辑器里写好以后另存为.ahk文件。AutoHotkey会在关联后执行这些.ahk的文件,当然你也可以转换成exe的可执行文件(附带有此工具)。
新建ahk

这里开始,是我的一个示例脚本。平时我需要经常运行很多软件,很麻烦,所以就写了这样一个程序。
首先,我喜欢在上网的同时听歌,平时比较喜欢用foobar2000,所以打算在按下Win+1键时开始用它听歌;
其次,玩游戏的时候经常配合gapa这个颜色优化工具,他的效果非常好,不过每次都要按F4更改配色方案,现在我希望按一下Win+2就可以自动帮我完成;
然后,上网时候经常有需要记住的东西,所以我希望在按Win+3之后他可以把我当前复制的东西保存下来,也就是粘贴到记事本里去;
最后,这个程序可以方便的退出。
知道了要求之后,我们就来看看写出的脚本吧:

;这里是我的一个示例脚本
#InstallKeybdHook ;安装键盘钩子,不过其实这里可以不装
msgbox, 这是我的常用软件运行脚本 `n按Win+1运行Foobar2000,并且开始播放 `n按Win+2运行gapa色彩优化工具,并且设置配色方案 `n按Win+3运行将当前复制的内容粘贴入记事本 `n按Win+X退出
;只是一个弹出的对话框,`n是换行

#1:: ;按下Win+1键
Run, D:\foobar2000\foobar2000.exe, D:\foobar2000 ;运行我的Foobar2000,为了防止出现意外把他设置为所在目录启动,以下同
sleep, 500 ;还是稍微等一下吧,等程序运行
send, !p ;按Alt+P,开始播放的快捷键
return ;返回

#2:: ;这是Win+2
Run, %userprofile%\Desktop\色彩优化工具\gapa.exe, %userprofile%\Desktop\色彩优化工具 ;执行gapa,在桌面上
sleep, 500 ;再等待一下
send {F4} ;按下F4修改配色方案
return ;返回

#3:: ;这是Win+3
IfWinExist, Untitled - Notepad ;检测窗口是否存在,注意我的英文版xp记事本标题为Untitled - Notepad,如果你是中文版的话,应该为 未命名 - 记事本,下同
{
WinActivate ;如果存在就激活他
}
else ;否则
{
Run, Notepad ;运行notepad
WinWait, Untitled - Notepad ;等一下
WinActivate ;然后激活窗口
}
sleep, 500 ;继续等一下
send, {enter}{enter}^v ;加入两个回车(空行),然后按ctrl+v粘贴
return ;返回

#x:: ;这是Win+X
MsgBox, 4,, 你确定要退出吗 ;弹对话框,4,,是加入了Yes/No的选择
IfMsgBox Yes ;如果点了是
ExitApp ;退出当前脚本
else ;否则
MsgBox 程序还在运行中 ;弹出对话框
return ;返回

;号后面都是我的注释,每一行都做了注释,应该还能看懂吧^_^。他整体代码的感觉比较类似于JS,不是很难。更详细的说明都可以在帮助文件中找到。
另外,gapa这个程序我在每次退出时,都要按F6键返回默认配色,否则桌面时比较难受。所以可以继续做出如下修改:

#4:: ;按Win+4
send {F6} ;按下F6恢复默认配色
process, close, gapa.exe ;结束进程gapa.exe

瞧,是不是真的很容易的。如果有不知道怎样写的代码的话,就去看帮助文件好了~~~。可惜英文确实比较痛苦,好在已经看到有人在做汉化了,一起期待下吧。

最后PS.我是用Emeditor在编辑AHK的脚本,在他的安装文件夹\Extras\Editors里有各种不同编辑器的代码高亮配置,具体用法我就不说了,效果如下
emeditor-ahk

最后,附带转换好的exe程序,大家有兴趣可以体验一下^_^。
我的脚本.exe

推荐一款极其强大的软件 – AutoHotkey》上有19条评论

  1. 善用佳软

    很好的教程,前面的介绍既有说服力,又平易近人。
    排版再改进一下就更好了。
    AutoHotkey开版时,转载到深度吧。
    如果没有id,可给我发信,我把注册邀请发给你。

    Firefox 3.0 Firefox 3.0 Windows XP Windows XP
    回复
  2. 善用佳软

    通过留言,发现你大概启用了中文段首缩进的插件。
      我用过一段时间,发现效果不理想,停用了。

    Firefox 3.0 Firefox 3.0 Windows XP Windows XP
    回复
  3. wettuy 文章作者

    看到你这样的评价,我十分的开心。^_^
    那个中文首段缩进貌似是主题里用css实现的,一直没去研究,如果发到论坛上的话效果还是会好不少的

    Firefox 3.0.1 Firefox 3.0.1 Windows XP Windows XP
    回复
  4. Pingback引用通告: 公开eWStl的源码 | wettuy's blog

  5. 小明猪

    似乎挺有趣的,这种脚本语言或许可以弥补我想直接在WIN上写程序的想法? :04: 我没学过C++,这程序跟C++之流有关联嘛?

    Firefox 3.6.2 Firefox 3.6.2 Windows XP Windows XP
    回复
    1. wettuy 文章作者

      :14: 相当有趣,他实质上是一种脚本语言,只要调用内置的函数即可完成所需功能,和C++没有直接联系,可以迅速上手

      Minefield 3.7a4pre Minefield 3.7a4pre Windows 7 Windows 7
      回复
  6. 我要RP

    不太懂。
    有中文版本的吗?
    这样我可以一个一个试过来。。。。
    我连语言都不会写呢。
    句柄 是啥都不知道, :16:

    360Safe Explorer 360Safe Explorer Windows XP Windows XP
    回复
    1. wettuy 文章作者

      :20: 有中文的帮助文档,如果你真的有兴趣肯去学的话,这还是很容易上手的^_^

      Minefield 3.7a5pre Minefield 3.7a5pre Windows 7 Windows 7
      回复
  7. Curtisunoni

    Есть такая услуга – добровольное медицинское обслуживание (или ДМО).
    Она предполагает, что вы платите небольшую сумму за то, что посещает врачей в течение года не платя за каждый прием.
    Однако опросы показали, что лишь 3% жителей Санкт-Петербурга знают о ее существовании.
    По какой причине?
    Потому что клиникам намного выгодней брать плату за каждое посещение.
    А если какой-нибудь сотрудник клиники посоветует добровольное медицинское обслуживание клиенту – это сулит ему увольнением.
    Информация о ДМО уже вызвала множество возмущений, после того как информацию об этом рассекретил один возмущенный врач.
    Его уволили “по собственному желанию”, после того, как он посоветовал ДМО своему пациенту.
    Самое страшное, что информация по ДМО присутствуют в открытом доступе, просто натыкались на эту информацию только случайные люди.
    Как отстоять свои права?
    О правилах предоставления услуги и обязанностях частных клиник можно узнать, просто вбив в Яндекс фразу: “добровольное медицинское обслуживание”.
    Обязательно обслуживание, а не страхование.

    34j5c6h86

    Google Chrome 47.0.2526.111 Google Chrome 47.0.2526.111 Windows 10 x64 Edition Windows 10 x64 Edition
    回复
  8. VincentLer

    Существует такая услуга – добровольное медицинское обслуживание .
    Она предполагает, что вы вносите небольшую сумму за то, что посещает врачей весь год бесплатно.
    Однако опросы показывают, что лишь 4% жителей города знают об этом.
    По какой причине?
    Да потому что клиникам намного выгодней сдирать с людей деньги за каждый визит.
    А если честный врач попытается рассказать про добровольное медицинское обслуживание клиенту – это сулит ему увольнением.
    Информация о ДМО уже спровоцировала кучу возмущений, после того как информацию об услуге распространил один возмущенный врач.
    Его уволили , после того, как он посоветовал ДМО постоянному клиенту.
    Самое удивительное, что официальные положения по ДМО есть в открытом доступе, просто находили на эту информацию единицы.
    Как отстоять свои права?
    О правилах предоставления услуги и обязанностях клиник можно узнать, сделав запрос в Яндексе: “добровольное медицинское обслуживание”.
    Именно обслуживание, а не страхование.

    34j5c6h86

    Google Chrome 47.0.2526.111 Google Chrome 47.0.2526.111 Windows 7 x64 Edition Windows 7 x64 Edition
    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注