本页使用了标题或全文手工转换

AutoHotkey

维基百科,自由的百科全书
跳转至: 导航搜索
AutoHotkey
AutoHotkey logo.png
開發者 Chris Mallett(Chris),Steve Gray(Lexikos)
初始版本 2003年11月10日  (2003-11-10)
穩定版本 1.1.16.05[1] / 2014年9月28日(2個月前) (2014-09-28)
預覽版本 2.0-a055[1] / 2014年9月27日(2個月前) (2014-09-27)
開發狀態 活跃
编程语言 C++
操作系统 Microsoft Windows
语言 英语
类型 脚本语言自动化GUI
许可协议 GPL
網站 www.ahkscript.org请参阅#官方网站说明

AutoHotkey是面向普通电脑用户的自由开源自动化软件工具,它让用户能够快捷或自动执行重复性任务[2][3]。为了保持AutoHotkey自由开放、持续开发,2014年4月成立了AutoHotkey Foundation以提供组织、法务和财政上的支持。[4]

与同类工具比较,AutoHotkey体积小巧、语法简明使其易学易用,同时在热键、热字串实现的快捷、高效(同时也强大,这点其他语言也能做到)方面没有其他语言能超越,不过缺点同样明显,即没有官方自带或第三方实现的完善的标准库[5],这样需要实现未内置的功能时通常需要直接调用Windows API或寻找别人封装好的函数(注:命令行命令或COM等与Windows API在功能全面性上相差太远)。换句话说,普通人极容易使用,但熟悉后要提升以实现更强大的功能时困难重重,这点从大量用户选择该语言入手而后一些需求较高的用户则转向其他语言容易看的出来。[6]注:Folder Menu v2及之前的版本使用AutoHotkey,v3时换为AutoIt。

功能与定位[编辑]

特色功能[编辑]

通过热键或热字串触发是AutoHotkey脚本中执行操作最常见的两种方式,它们都很容易编写且使用方便,因此快捷高效。AutoHotkey对这两者的支持比同类工具强大许多。

热键[编辑]

热键是指通过按下预定义的某个按键或组合键执行特定操作的一种方式,常用于根据用户需要执行操作,例如:

LWin::return

在全屏程序中操作时(尤其是游戏),经常会误触Win键打开开始菜单而退出全屏,让人很无奈。现在只要打开全屏程序前先执行该脚本(这里屏蔽 Win键),在全屏时无需担心误触而退出了(这里只屏蔽左边的Win键)。

#g:: ; Win+g
   Run http://www.google.com/search?q=%clipboard%
Return

运行这个脚本后,只需把要搜索的内容复制到剪贴板,然后使用热键 Win+g就可以打开默认网页浏览器并自动通过Google开始搜索。 AutoHotkey中不仅支持把单键、组合键设为热键,同时还支持将鼠标和游戏杆按钮设为热键,例如:[7]

#If MouseIsOver("ahk_class Shell_TrayWnd")
WheelUp::Send {Volume_Up}
WheelDown::Send {Volume_Down}
 
MouseIsOver(WinTitle) {
    MouseGetPos,,, Win
    return WinExist(WinTitle . " ahk_id " . Win)
}

通过该脚本,我们可以在任务栏上滚动鼠标滚轮来快速调节音量。

AutoHotkey中热键的功能非常强大,支持几乎所有按键和按钮、上下文热键、自定义组合键、动态热键等,同时众多的修饰符提供了许多附加特性。[8]可实现其他工具不方便或难以实现的一些功能,如重映射键盘按键(甚至是键盘布局,如从QWERTY映射为Dvorak)、鼠标和游戏杆按钮。[9]

热字串[编辑]

热字串(有时也被称为“序列键”,类似Vim一些模式中的操作键)是指按顺序键入一些字符后触发对应操作的一种方式。它的典型应用是扩展缩写:

::wjbk::维基百科,自由的百科全书

执行这个脚本后,依次按下wjbk(“维基百科”四个字的拼音首字母)后会被替换为维基百科,自由的百科全书并输入到当前文本框中(实际使用时还需按下终止符才会替换)。这种功能常用于输入常用字符串、在邮件或论坛中签名、填写数据录入表单及纠正常见英文拼写错误等。

除了扩展缩写,热字串也像热键一样能执行任何自定义操作:

::rn::
Run, Notepad
return

这里依次按下rn后会打开记事本。

热字串的许多选项为其添加了丰富的特性和选择。[10]

其他功能简介[编辑]

AutoHotkey能快速实现的常见功能包括:

  • 重映射键盘按键、鼠标和游戏杆的按钮;
  • 发送键击及鼠标和操纵杆的点击几乎可自动化所有操作;
  • 启动程序或文档,操作与控制其他程序的窗口;
  • 处理字符串,支持正则表达式
  • 操作文件和文件夹、注册表和INI文件;
  • 设置静音,调节音量和声卡的其他设置;
  • 创建自定义图形用户界面程序,从用户或文件中获取输入;
  • 监视系统,当某些状态改变时自动响应;
  • 通过检测图像和像素颜色来自动操作游戏,以减缓肢体重复性劳损

脚本定位[编辑]

AutoHotkey语法宽松灵活、关键字不区分大小写、变量可直接使用(无需声明),且自带简明易懂的入门教程,[11]所以普通用户可通过它快速高效地实现自己的需求。

在网络中提到时常被作为生产力工具,不过正确的定位才能真正发挥出高效:利用它提供的热键和热字串功能实现目标操作。对于常见的任务(重映射键盘、操作窗口、字符串处理等),它直接能完成的很好;对于较复杂的操作,则把它当成桥梁操作其他工具来实现我们的需要。[12]

当前活跃分支[编辑]

下面简介AutoHotkey当前的活跃分支,详细的说明和历史分支介绍请参阅选择哪个分支?

AutoHotkey_L[编辑]

AutoHotkey_L指主要由Lexikos在AutoHotkey Basic基础上开发的分支,主要增加或增强了以下功能:[13]

  • 提供Unicode、COM和64位原生支持
  • 对象(可扩展的联合数组)
  • 增强的文件编码支持和错误处理
  • 面向对象文件I/O

这是目前的主流分支,建议所有用户优先选择。

AutoHotkey v2[编辑]

AutoHotkey v2[14]由Lexikos基于AutoHotkey_L代码开发,主要进行语法改进和功能整合。目前仍在测试过程中,语法、功能尚不稳定(与AutoHotkey_L差异较大[15]),欢迎用户参与测试协助完善[16],尚不推荐作为日常使用。

AutoHotkey_H[编辑]

AutoHotkey_H[17]是由HotkeyIt合并了原有AutoHotkey.dll并在AutoHotkey_L(及AutoHotkey v2)基础上开发的增强分支。它没有使用自己的版本号,一般与AutoHotkey_L(及AutoHotkey v2)并行开发。这个名称实际上包含了基于AutoHotkey_LAutoHotkey v2两种分支扩展后的AutoHotkey.exe(H版本)和AutoHotkey.dll及相关文件,功能有所增强,有经验的老用户可考虑使用。

其他内容[编辑]

辅助工具[编辑]

目前AutoHotkey的安装包中自带了英文帮助、ahk2exe(脚本编译器,即用于把脚本转换成可执行文件)、Window Spy(获取窗口和控件的信息),此外还有许多方便编写、提升效率的辅助工具:

  • 中文帮助[18]:英文帮助的中文翻译,目前能及时更新。
  • SciTE4AutoHotkey:基于SciTE的AutoHotkey脚本编辑器,包括语法高亮、自动补全、智能提示及其他专用于AutoHotkey的增强支持和辅助工具,推荐新手使用。
  • GUI Creator[19]:在图形界面中为AutoHotkey脚本创建GUI的工具,极大降低了图形用户界面命令的学习成本和创建难度。
  • Pulover's Macro Creator[20]:宏录制和自动化脚本创建工具。
  • iWB2 Learner[21]:从IE中获取网页元素信息的工具,在编写通过COM自动化操作IE的方便辅助。

实用脚本[编辑]

这里列出一些基于AutoHotkey编写的实用工具:

  • 屏幕密码锁[22]:屏幕密码锁软件,可以方便地锁住鼠标和屏幕。
  • AHK脚本管理器[23]:用于管理(包括启动、关闭、重载和编辑等操作)AutoHotkey脚本的工具。
  • Folder Menu[24]:在常用位置(我的电脑、打开/保存对话框、命令提示符TC等)快速切换文件夹的工具注:后来的版本改用AutoIt编写
  • HK4WIN[25]:针对Windows系统的快捷键增强软件。
  • VimDesktop[26]:让Windows桌面程序拥有Vim操作风格的辅助工具。
  • LINK[27]:用于管理、收藏、重命名各种快捷方式,以便你记忆并通过热字符快速启动程序。
  • 飞扬热键[28]:将画屏命令、快捷热键、快捷菜单以及命令窗口融为一体,达到快速启动程序、打开文档、自定义短语、模拟用户输入输出的目的。
  • Jumplist Extender[29]:让任意程序支持跳转列表。
  • Clipjump[30]:开源的剪贴板管理工具。
  • Candy[31]:根据包含文件类型和关联程序的配置通过简便的方式使用多种不同的程序打开选中的文件,代替系统中在目标文件上点击右键并从打开方式中选择目标程序的繁琐方式。[32]

官方网站说明[编辑]

AutoHotkey Basic时期,官方网站为www.autohotkey.com。当Chris Mallett(原作者)停止更新时宣布AutoHotkey_L为后续主分支。[33]不久网站转由polyethene管理,他对网站的决定与论坛中许多核心用户出现较大分歧[34][35]且不时失去联系[36],于是这些用户建立了ahkscripts.org作为AutoHotkey_L的支持网站[37],并成立了公司确保其正常运营。[38]

目前原官网的下载链接提供的仍为AutoHotkey Basic,已无法满足当前用户需求,所有用户都应到新官网中下载AutoHotkey_L。因此,在软件信息和外部链接中均不再提供原官网,以免误导新用户。

名称的大小写[编辑]

一般而言,普遍接受的全名大小写形式为AutoHotkey,即字母A、H大写,其余字母小写,注意这里的k也是小写的。有些时候可能看到autohotkey,即完全小写的形式,这是种较随意的写法。

对于简称,可写为ahkAHK,这里三个字母可大写可小写,但大小写形式必须保持一致。

开发历史[编辑]

Chris Mallett提议在AutoIt v2中集成热键支持未得到AutoIt社区响应[39][40]后,于2003年11月10日公开发布了AutoHotkey的首个测试版本。[41]作者以AutoIt v2的语法为基础并在一些命令和编译器中使用AutoIt v3的源码开始编写自己的程序。[42]随后,AutoIt v3的许可从GPL切换为闭源,原因是“某些项目重复窃取AutoIt的代码”和“建立了竞争者”。[43]

2010年10月10日,原作者在停止更新一年多后表示“失去了兴趣”并声明AutoHotkey_L为正在开发的分支,并把它放置在网页的下载部分的前面。[44]同时把原来的版本称为AutoHotkey Basic。[45]比起AutoHotkey Basic,AutoHotkey_L中增加了UnicodeCOM对象调试特性和其他功能。[13]

另请参阅[编辑]

参考资料[编辑]

  1. ^ 1.0 1.1 AutoHotkey Downloads. ahkscript.org. [2014-06-15]. 
  2. ^ Scott Hanselman. 2014年Windows平台软件推荐(中文译文). 知乎. [2014-03-17]. 
  3. ^ Prevent RSI with AutoHotkey. cedeq.com. [2014-03-02]. 
  4. ^ The AutoHotkey Foundation. ahkscript.org. [2014-06-29]. 
  5. ^ amnesiac. AutoHotkey中标准库缺失的问题. ahkscript.org. [2014-09-12]. 
  6. ^ ress. Folder Menu. sourceforge.net. [2014-09-08]. 
  7. ^ #If指令示例. AutoHotkey中文帮助. ahkcn.sf.net. [2014-06-16]. 
  8. ^ 热键入门和功能介绍. AutoHotkey中文帮助. ahkcn.sf.net. [2014-06-16]. 
  9. ^ 重映射按键和鼠标按钮. AutoHotkey中文帮助. ahkcn.sf.net. [2014-06-16]. 
  10. ^ 热字串和自动替换. AutoHotkey中文帮助. ahkcn.sf.net. [2014-06-16]. 
  11. ^ AutoHotkey入门指南. ahkcn.sourceforge.net. [2014-06-16]. 
  12. ^ 胡杨. AutoHotkey是什么?. AutoHotkey之美. 知乎. [2014-06-16]. 
  13. ^ 13.0 13.1 AutoHotkey_L的新增特性. ahkcn.sourceforge.net. [2011-12-28]. 
  14. ^ AutoHotkey v2. ahkscript.org. [2014-06-15]. 
  15. ^ 与v1.1比较v2.0的主要变化. ahkscript.org. [2014-06-15]. 
  16. ^ AutoHotkey v2 Development. ahkscript.org. [2014-06-15]. 
  17. ^ HotKeyIt. AutoHotkey_H. autohotkey.net. [2014-06-16]. 
  18. ^ AutoHotkey中文帮助. ahkcn.sf.net. [2014-06-16]. 
  19. ^ maestrith. GUI Creator. ahkscript.org. [2014-06-16]. 
  20. ^ Pulover's Macro Creator. macrocreator.com. [2014-04-08]. 
  21. ^ iWB2 Learner页面
  22. ^ Lock Screen Appinn –屏幕密码锁升级到1.4.7. 小众软件. [2014-04-08]. 
  23. ^ AHK脚本管理器. 小众软件. [2014-04-08]. 
  24. ^ Folder Menu 2.01 –瞬间切换文件夹. 小众软件. [2014-04-08]. 
  25. ^ 宋瑞华. HK4WIN官方网站. [2014-04-08]. 
  26. ^ VimDestop使用简介. github.com. [2014-04-23]. 
  27. ^ megalove. LINK第四版. ahk8.com. [2014-05-20]. 
  28. ^ teshorse. 飞扬热键发布. csdn.net. [2014-08-04]. 
  29. ^ DigiM29. Jumplist Extender - Add jumplists to any program!. www.neowin.net. [2014-08-10]. 
  30. ^ Avi. Clipjump : The Ultimate Clipboard Manager. ahkscript.org. [2014-08-21]. 
  31. ^ aamii. Candy. github.com. [2014-09-15]. 
  32. ^ 沙牛. 以简驭繁弹指神通–超绝神器Candy小窥. 善用佳软. [2014-09-15]. 
  33. ^ Chris. My status and website changes. AutoHotkey.com. [2014-06-15]. 
  34. ^ polyethene. Changes for AutoHotkey website. AutoHotkey.com. [2014-06-15]. 
  35. ^ sumon. Make AHK_L "main" version?. AutoHotkey.com. [2014-06-15]. 
  36. ^ tidbit. Basics as to why AHKSCRIPT exists. ahkscript.com. [2014-06-15]. 
  37. ^ tank. Welcome and if you need help. ahkscript.org. [2014-06-15]. 
  38. ^ The AutoHotkey Foundation. ahkscript.org. [2014-06-15]. 
  39. ^ Author Chris Mallett's post on the AutoHotkey Forums. Autohotkey.com. [2011-12-02]. 
  40. ^ An AutoIt / AutoHotkey nonfunctional comparison. Paperlined.org. [2011-12-02]. 
  41. ^ AutoHotkey Changelog for Years 2003-2004. Autohotkey.com. [2011-12-02]. 
  42. ^ Author Chris Mallett's post on the AutoHotkey Forums. Autohotkey.com. [2011-12-02]. 
  43. ^ Licensing Opinions - AutoIt Forums. Autoitscript.com. [2011-12-02]. 
  44. ^ Forum post by Chris, announcing AutoHotkey_L now main platform. Autohotkey.com. [2011-12-02]. 
  45. ^ Download page showing AutoHotkey_L as ongoing platform. Autohotkey.com. [2011-12-02]. 

外部链接[编辑]