木匣子

Web/Game/Programming/Life etc.

用 autohotkey 编写自动控制程序

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

autohotkey

有了它,你可以

  • 通过发送键盘键击和鼠标点击自动化几乎所有的操作。您可以手工编写宏或者使用宏录制器。
  • 为键盘,游戏杆和鼠标创建热键。几乎任何按键、按钮或组合键都可以设置为热键。
  • 在您键入缩写时扩展缩写。例如,键入 “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,你只要按下设定好的启动键,接下来的由它帮你“按”住那个键就行啦 :) …