一、AutoHotKey介绍

AutoHotKey,一款小巧高效的Windows平台热键脚本语言程序,能够通过自定义脚本实现重复性强、技术含量低的自动化操作,仅需3M大小。访问官网(autohotkey.com/)了解详情。

创建脚本简易:官网下载安装AutoHotKey,参考官方指南。利用快捷键与热字符串实现高效操作。

autohotkey官网?AutoHotKey介绍

快捷键触发特定动作,如Ctrl+C、Ctrl+V的复制粘贴。常用快捷键如#c代表win键+c。热字符串扩展缩写,输入简写后自动替换,或启动脚本动作。使用::连接操作,热字符串需用两个::包围。

常用命令包括Run,用于启动程序、文档、URL或快捷方式。示例:win+c打开google.com;输入zy后空格输出zhangyi2099。更多高级操作参阅官方文档。

版本选择:避免使用已停止开发与维护的AutoHotkey 1.0.*及AutoHotkey_H。建议使用AutoHotkey 1.1.*,因为这个版本仍在维护,支持添加新功能与修复错误。对于不依赖旧代码库且愿意同步代码改动的用户,推荐使用AutoHotkey v2,可享受更一致的语法与更多新功能。

自写脚本:举例,为简化PS取色操作,创建鼠标悬浮取色快捷键;编写发货信息自动填充脚本,节省时间。通过脚本自动化,简化日常操作。

二、如何学习 autohotkey

AutoHotkey是一个神奇的工具。为了便于新人上手,xbeta写了此篇最最傻瓜的0级入门教程。

autohotkey官网?AutoHotKey介绍

1何为AutoHotkey

AutoHotkey是一个小工具软件,可以简化你的重复性工作。

比如要登录某论坛,你只要按一个键,AutoHotkey就会替你:打开浏览器、输入网址、输入用户名和密码、回车,完成登录过程。

只要有想像力,AutoHotkey可以完成更多工作,参见 AutoHotkey,让win+run如虎添翼,及更多文章。

2下载及安装

软件名称: AutoHotkey

软件版本: 1.0.96.00

软件大小: 2.5MB

软件授权:免费、开源

适用平台: Windows 98-Win7

下载地址:点击这里下载

安装:按提示操作即可。我习惯上装在 d:\program files\AutoHotkey

第1屏是欢迎;点Next。

第2屏是版权声明;点I Agree。

第3屏是版本选择,可根据操作系统、需求,选择合适版本。比如我在WinXP下选择了 Unicode(32-bit)。

第4屏是安装内容:如下图。建议全部选中。

接下来是安装目录、开始菜单设置、安装过程。

最后,是安装成功提示:是否看帮助文件。AutoHotkey的帮助文件,写得很细。有耐心的就认真拜读,想成高手的必须要研读。(更多中文译本见这里)

3应用例1:提示与访问网页

创建脚本文件

如下图,打开你的文本编辑器(notepad、或gVIM),新建一个文件,把下两行内容复制进去。

msgbox,这是我的第一个AutoHotkey脚本 `n我既关注效率,也尊重版权

run, http。/xbeta。info/autohotkey-guide.htm

先任意保存到一个地方(比如桌面),文件名任意(比如 new.ahk)

注意:①文件名后辍必须为ahk;②保存格式必须选为 UTF-8!。

运行脚本文件

这时,双击new.ahk看到效果了:

先弹出如下提醒

你点击“确定”按钮后,就会启动浏览器,打开本文网址。

原理解释:

所谓脚本,其实就是一个txt文件。它由用户编写,由AutoHotkey来执行。

第1句:msgbox是一个命令(或称为函数),AutoHotkey见到它,就知道要弹出一个消息窗口了。后面的文字是参数,在这一命令中,就是弹出消息的文字。其中的`n表示换行。中间用半角逗号分隔。

第2句:类似,函数是run,就是运行。后面的参数就是本文的url。也就是说,AutoHotkey的run功能,可以运行程序,也可以打开文档(如 d:\freeware-list.txt),也可以打开网址。

4应用例2:缩写

将下面的语句保存为 new2.ahk(提醒 UTF-8编码):

::test1::善用佳软。ひらがな平仮名;カタカナ片仮名。Korean/한국어/조선말。

运行后,在任何能正常显示 unicode字符的程序中(比如浏览器的地址栏、MS Word),键入 test1后,再加空格、或tab、或回车,就可以触发缩写,“善用佳软……”内容就上屏了。

通过这一例子,可以看到 AutoHotkey实现常用短语(地址、邮箱、密码、网址、签名)的缩写非常方便。

关于缩写功能,还有人用 AutoHotkey开发过一款专门用于缩写功能的Texter呢,详见这里。

5自动登录网站

将下面的语句保存为 new3.ahk(提醒 UTF-8编码):

#1::

run,

WinWaitActive,网易;;等待网页加载成功(至少title显示出来)

sleep, 1000;;保险起见,再等1秒(视网速而定)

send, user-id{tab}password{enter};;模拟键入用户名、密码、回车

return

运行脚本……但没有反应?没错,这是因为脚本中为相应命令定义了热键。#1表示Win+1键。

按下Win+1键,脚本会自动打开163信箱、输入用户名、密码,完成登录。

注意:本例有实际执行中有可能不成功。因为邮箱登录页面可能已经保存了用户名,甚至也保存了密码,导致初始输入焦点不准确。笔者实际在用的例子是登录Lotus Notes客户端,并输入密码。代码如下:

#n::

run,"c:\Program Files\lotus\notes\nlnotes.exe"

winwait,,输入口令

sendinput, mypassword{enter}

return

6后记

作为0级入门教程,就写到这里吧。只要大家边读、边动手实践,就不难从这些例子中发现 AutoHotkey的神奇作用。

如要再进步发掘 AutoHotkey的魔力,可以:

(1)阅读官方帮助文档。

(2)参见笔者使用AutoHotkey的更多实例,AutoHotkey|win run加它更方便,AutoIT3 vs AutoHotkey,AutoHotkey调用Irfanview把24位真彩图片优化到实际色深等。

(3)目前最全面的AutoHotkey学习资料,由 amnesiac整理:AutoHotkey学习指南

hotString别名:

AutoHotKey称之为hotStrings,我叫它别名,叫缩写也可以

比如下面的几个例子

以第一个

::btw::by the way

为例不论在什么地方,当你输入btw然后回车或空格或TAB之后,它会自动扩展为后

面的字符串by the way剩下的几个是公司几个同事的Ip地址,我访问他们的共享文件

时,只需要输入前面几个字母就可以了,而不用输入难记的IP.

::btw::by the way

::liuxjs::\\172.20.68.32

::lihts::\\172.20.68.55

::wanglins::\\172.20.68.51

::wangls::\\172.20.68.51

::kanban::

简单的键绑定

"#"表示Windows键

"^"表示Cntrl键

"!"表示Alt,

"+"表示Shift键。

详细内容看官网hotkey

Ctrl+鼠标中键关闭窗口,

^MButton::

SendInput{Alt Down}{F4}{Alt Up}

Return

你不必把鼠标移动到窗口右上方的关闭按钮,按下鼠标后然后鼠标中键点选窗口,就会

关闭当前窗口。

原理很简单,就是简单的模拟你按下Alt+F4,的操作,其实不必像上面那么复杂

^MButton::

SendInput!{F4}

Return

例如:我想让

Win+Esc关闭当前窗口:

;;我习惯于Win+Esc关闭窗口,而不是Alt+F4

#Esc::Send!{F4}

Send和SendInput,都是模拟用户按下键盘的函数

进行按键绑定,一般是“按键名称”后跟两个冒号,然后是你要进行的操作

如果只有一句,写在同一行,可以不写"return",否则得写return表示到此结束。

在资源管理器中,一键显隐隐藏文件

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;在资源管理器中,在隐与不隐间切换(隐藏文件)

;;主要通过修改注册表

(这一个在Xp下有用,在其他版的可能无用,这个功能网上流传的很广泛)

这里只是定义一个函数,将它与按键绑定即可。

toggle_hide_file_in_explore(){

;------------------------------------------------------------------------

; Show hidden folders and files in Windows XP

;------------------------------------------------------------------------

; User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]

; Value Name: Hidden

; Data Type: REG_DWORD(DWORD Value)

; Value Data:(1= show hidden, 2= do not show)

RegRead, ShowHidden_Status, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden

if ShowHidden_Status= 2

RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden, 1

Else

RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden, 2

WinGetClass, CabinetWClass

PostMessage, 0x111, 28931,,, A

Return

}

比如把上面的函数绑定为 Ctrl+Alt+h

^!h::toggle_hide_file_in_explore()

但是,上面有一个问题,如果当前窗口不是资源管理器,它依然会调用这个函数,虽

然不会造成什么恶果,但是原本这个程序的Ctrl+alt+h也绑定了一个功能的话,

这个功能就没法被调用到了,因为它被AutoHotKey拦截到了。解决办法就是只在资源

管理器中启用这个键绑定。

代码如下

SetTitleMatchMode Regex;可以使用正则表达式对标题进行匹配

#IfWinActive ahk_class ExploreWClass|CabinetWClass

^!h::toggle_hide_file_in_explore()

#IfWinActive

表示如果当前激活的窗口是"我的电脑"或者"我的文档"的话,就进行下面的操作。如

果不是,就不进行。#IfWinActive是一个结束标志,跟

#IfWinActive ahkclass ExploreWClass|CabinetWClass相对应。

IfWinActive/IfWinExists内容在这。它是判断“符合某些条件”的“窗口”是否存有的一个

函数。它可以通过窗口标题是否含有特定的字符串,来判断。

如果你用的是英文版的Windows的话,

IfWinExist Untitled- Notepad

^h::Send, hello

#IfWinActive

这段代码当你在新打开的记事本(也就是标题正好是“Untitled- Notepad”的窗

口,不能多一个字也不能少一个字)按Ctrl+h,的时候,会在其中插入"hello"这个单

词。依照正常人的思维,在中文系统里,相应的代码是

IfWinExist无标题-记事本

^h::Send, hello

#IfWinActive

但是,AutoHotKey对中文虽然支持,但支持的并不好。比如这个地方,中文就不好用。

刚才,进行窗口标题匹配的时候,要求整个标题必须完全匹配。,也可以做到只匹配

标题的一部分,

通过这个命令SetTitleMatchMode事先进行设置

比如:

SetTitleMatchMode 2

; OR:

SetTitleMatchMode RegEx

可以有 1 2 3 Fast Slow,RegEx,六种值

•1:表示前端匹配,

•2:表示部分匹配

•3:表示完全匹配

•RegEx:表示使用正则表达式进行匹配

SetTitleMatchMode 2

IfWinExist Notepad

^h::Send, hello

#IfWinActive

这个只需要标题中含有Notepad这几个字就可以。

一个窗口,除了可以用标题进行匹配之外,还可以用窗口所具有的其他属性来匹配

比如window ID,Window Class,进程ID.最常用的一个就是Window Class

但是怎样知道一个窗口的window class是什么呢? AutoHotkey提供了一个工具

“Window Spy”,运行这个工具,然后用鼠标点选目标窗口,就会出现这个窗口的一些

可用信息。包括window class.

比如这张图是鼠标点选“我的电脑”中地址栏后的探测结果

红色的圈起来的是“我的电脑”的window class.

#IfWinActive ahk_class ExploreWClass

只在"我的电脑"中起作用的代码写在这里

#IfWinActive

SetTitleMatchMode Regex;可以使用正则表达式对标题进行匹配

#IfWinActive ahk_class ExploreWClass|CabinetWClass

在"我的电脑"有“我的文档”中起作用的代码写在这里

#IfWinActive

三、autohotkey怎么不能运行脚本啊

您好,是这样的,如果您下载的是绿色版,需要添加文件关联的(即打开方式指向autohotkey.exe)。程序默认的示例脚本是需要按快捷键才能触发的,详见下方:

#z::Runwww.autohotkey.com;徽标键+z打开ahk网址

^!n::;Ctrl+Alt+n触发

IfWinExistUntitled-Notepad;如果存在“Untitled-Notepad”标题的窗口

WinActivate;激活窗口

else;否则

RunNotepad;打开记事本

return;返回即结束该部分

现在官方已经出了中文帮助手册,在官网下载页面“Other Downloads”下方。