简单易学的AHK
作为一门脚本语言,本来可以按照通常的学习路径来学习:变量、控制语句、函数……但是因为它本身的特点,对于只想来满足自己的某些需求的人来说,也可以只从需求出发,学习需要的内容。同时,学习AHK可以得到很及时的反馈,让你很容易从中获得一些成就感。相比其他语言,你要做出一个GUI界面,恐怕需要一段时间的学习,当其他人还在控制台的黑窗口里接受用户输入的时候,使用AHK的你只需要一个MsgBox或是InputBox就可以弹出窗口来实现用户交互了。
脚本精选
(大部分来自帮助文档及官方论坛)
小众软件 AutoHotkey 专区:提供了一些贴合国内实际的脚本。
AHK 快餐店系列索引:包含在上一篇文末推荐的懒人包里。
1 Hour Software (1 小时软件) — 作者: skrommel: 这是大量有用的脚本集合, 带有简短的说明和截图地专业呈现出来.
Titan 的脚本: 这个集合包含许多有用的脚本, 例如:
1) XML 阅读器/写入器: 通过简单的界面来获取和写入 XML 文件中的值, 就像 JavaScript.
2) 锚: 让 GUI 控件紧贴可调整大小的 GUI 窗口的右边或底部的边缘.
3) 函数: 包装函数的集合, 其中的每个函数是从含有 OutputVar 的 AutoHotkey 命令包装而成.
4) 天气: 在托盘菜单中显示当前天气状况或在富 GUI 中显示预报。
Toralf 的脚本: 这个集合包含了有用的脚本, 例如:
1) AHK Window Info: 显示窗口, 控件等等的信息.
2) 电子节目指南: 浏览您当地的电视节目/时间表 (支持多个国家).
3) 自动语法整理器: 改变脚本中命令的缩进和大小写形式以使它使用一致的格式/风格。
Sean 的脚本: 包含有用的脚本, 例如:
1) 网络下载/上传流量计: 在小且置顶的进度条中显示网络下载/上传的流量 (单位为 KB).
2) StdoutToVar: 重定向命令或应用程序的输入到脚本的变量中.
3) 截取屏幕的矩形区域: 用来截取部分屏幕并保存为文件 (BMP/JPG/PNG/GIF/TIF) 的函数. 它也能截取透明窗口和鼠标指针.
4) 颜色放大器/选取器: 放大光标周围的区域, 允许选取单个像素并识别它的颜色.
5) 嵌入 Internet Explorer 控件: 嵌入 MSIE 控件到脚本的 GUI 窗口. 此控件能进行网页显示或其他兼容于浏览器的功能。
Using Keyboard Numpad as a Mouse (把小键盘作为鼠标使用) — 作者: deguix: 此脚本用您的键盘来实现鼠标操作, 几乎相当于真正的鼠标 (在一些任务中甚至更方便). 它支持多达五个鼠标按钮和鼠标滚轮的转动. 它还具有能自定义移动速度, 加速和 “轴反转” 的特点。
SKAN 的 N 个技巧提示:包含实实用效果和常用功能的示例代码和技术。
论坛的 Scripts & Functions 版块: 这是一个近 1000 个可运行脚本和函数的可搜索集合. 由 AutoHotkey 用户建立和维护, 这个存档每天都在增长和改进。
Rosetta Code AutoHotkey Category:演示了许多独辟蹊径的用法,很有趣。
JGPaiva’s AutoHotkey Coding Snacks:众多简单实用的小工具。
一键登录网站(以登录淘宝为例):因为淘宝现在使用账号密码登录需要点击一下右上角的按钮,所以先使用上面那个脚本获取屏幕坐标,然后根据自身情况调整参数就可以了。其他网站需要作相应的调整。
;获取鼠标坐标,用于下面的登录事件 :://xy:: MouseGetPos, xpos, ypos Msgbox, The cursor is at X%xpos% Y%ypos%. return ;一键登录淘宝 :://tb:: Run https://login.taobao.com WinWaitActive 淘宝网 - 淘!我喜欢 - Google Chrome sleep 5000 ;视网速调整等待的时间(毫秒) Click 1410, 378 ;不同分辨率的屏幕坐标不同,可使用上面的脚本获取屏幕坐标 sleep 100 send ^{Space} ;设置英文输入 Send {Tab}1515******* ;替换你的用户名 Send {Tab}****** ;替换你的密码 MouseClickDrag, left, 1645, 634, 1428, 634 ;拖动验证滑块 Send {Enter} return
AHK和Python的比较(GUI)
和Python相比,AHK更像是搭积木。你可以用极少的入门知识和查阅帮助文档来制作自己想要的GUI工具。以一个计时器为例,我同时用Python(Tkinter)和Autohotkey写了两个简单的计时器。用户输入一个时间数(分钟),计时结束后会弹窗提示时间到了。下面是各自的代码
Python:
import tkMessageBox from time import sleep from Tkinter import Tk, Entry, Label, Button, X, Y def time_counter(): time = Entry.get(time_et) root.destroy() sleep(int(time) * 60) label = tkMessageBox.showinfo("Attention!", "Time Over!") root = Tk() root.title("Counter") prompt_lb = Label(root, text="Enter a number(mintutes):") time_et = Entry(root) start_bt = Button(root, text="Start", command=time_counter) prompt_lb.pack() time_et.pack() start_bt.pack() root.mainloop()
运行结果:
AutoHotkey:
InputBox UserInput, Counter, Enter a number(minutes): IfEqual, Errorlevel, 0 { sleep UserInput * 60000 SoundBeep MsgBox Time Over! } return
运行结果:
代码的行数倒是次要,从学习量来说,后者大部分函数都帮你封装好了,只要你填几个所需的值就搞定了,而且默认的尺寸位置也比前者美观的多。在转换成exe文件上,Autohotkey也很方便。Autohotkey里甚至还有现成的splash函数。当然,这只是在简单的应用上,复杂的应用AHK就未必能很好的胜任了。
不同语言都有各自的优缺点。但对于使用Windows系统,不想花费大量精力学习编程,而又想制作些小工具满足日常需求的人,简单易学的Autohotkey是个好选择(说不定你对编程的兴趣就这样产生了)。
很不错,谢谢!