用 Autohotkey 编写自动控制程序

AutoHotkey 是一款免费的、Windows平台下开放源代码的热键脚本语言。它能以简单的脚本语言(宏)来完成常见的鼠标、键盘甚至是文件管理等操作。

有了它,你可以

  • 通过发送键盘键击和鼠标点击自动化几乎所有的操作。您可以手工编写宏或者使用宏录制器。
  • 为键盘,游戏杆和鼠标创建热键。几乎任何按键、按钮或组合键都可以设置为热键。
  • 在您键入缩写时扩展缩写。例如,键入 “btw” 能自动地生成 “by the way”。
  • 创建自定义的数据输入表格、用户界面和菜单栏。详见图形用户界面。
  • 重新映射您键盘、游戏杆和鼠标上的按键和按钮。
  • 通过 WinLIRC 客户端脚本对手执遥控器的信号作出反应。
  • 运行现有的 AutoIt v2 脚本,并用新功能增强它们。
  • 将任何的脚本转换为 EXE 文件,使其在没有安装 AutoHotkey 的计算机上也能运行。

官方网站 http://www.autohotkey.com/

中文社区 http://ahk.5d6d.com/

Autohotkey 中文社区提供汉化的手册,里面包含了详细的指令介绍。利用手册,新手也能很容易入门。

安装后程序会自动关联扩展名为 .ahk 的文本文件,双击 .ahk 文件即可运行脚本。也可以将写好的脚本编译为 exe 应用程序独立运行,配合 Autohotkey 强大的键盘鼠标控制能力,可以被有心用于制作厉害的整人程序。

Autohotkey 学习笔记

按下空格键,执行某个程序(打开某个网站)

space:: Run notepad

space:: Run www.google.com

多条语句顺序执行,使用 return结束

space::
Run notepad
Run www.google.com
return

组合键:# ^ ! +

# 表示 Win 键,#n 即 Win+n
^ 表示 Ctrl 键, ^n 即 Ctrl+n
! 表示 Alt 键, !n 即 Alt+n
+ 表示 Shift 键,+n 即 Shift+n
^!+n,可以表示 Ctrl+Alt+Shift+n

注释

;以英文分号起始的句子为脚本中的注释,不被执行

标签:标签名+:,可用于程序跳转

lable1:
lable2:

变量及赋值

a = 1 ;将数字1赋值给a,a为1
b = a ;将字符”a”赋值给b,b为”a”,而不是数字1,对比下面一句
b = %a% ;将a的值1赋值给b,b为1,使用 = 赋值时,以 %% 区别变量
c := a ;同上,使用 := 赋值时,自动识别变量

数组

;定义数组:
Array0 = element1
Array1 = element2
Array2 = element3

;引用数组
N=1
a := Array%N% ;相当于c语言的 Array[N]

条件语句

if(a>b){
;条件为真
}else{
;条件为假
}

等待

Sleep 1000 ;等一秒

定时器

SetTimer,run,1000 ;每一秒从run标签执行一次
run:
;要执行的脚本
return

SetTimer,run,off ;停止执行run标签

模拟按键:Send

Send ^c ;发送Ctrl+c组合键
Send abc ;连续发送abc三个键
Send {enter} ;发送回车键

剪贴板

a := Clipboard ;获取剪贴板的内容
Clipboard := a ;将内容复制到剪贴板
Clipboard = “” ;清空剪贴板

做了这么多笔记,来综合运用一下吧!
大家猜看看下面程序有什么非常无聊的用处 :D

Array0 := “正在输入”
Array1 := “正在输入.”
Array2 := “正在输入..”
Num = 3

^f::
Count = 0
SetTimer, run, 1000
return

^d::
SetTimer, run, off
return

run:
Click
Sleep 100
str := Array%Count%
clipboard = %str%
Count += 1
if(Count >= Num)
Count = 0
Send ^v
Send {Enter}
return

其实,Autohotkey 可以帮助我们完成一些很烦琐的或者是重复性很强的操作。运用的好的话,它能胜任各种工作——我曾经用它完成一些很极端的工作:

制作连续数字图片(样式同一)

曾经有一次,一个朋友让我帮他完成128张数字图片的美化。如果是手工的话,你必须一张一张修改数字,然后按不同的文件名保存到指定目录,这样简单的事情做上128次,直接死掉算了。但是有了autohotkey,我只要录制一次鼠标/键盘操作,然后稍加修改,加上数字变量自动递增,它就帮我完成了剩下120多张图片的制作。

玩游戏按开火键按到手酸?

有了Autohotkey,你只要按下设定好的启动键,接下来的由它帮你“按”住那个键就行啦 :)