Autohotkey介绍
Autohotkey介绍
Autohotkey是啥嘞?
是脚本语言!
脚本语言又是啥类?
是啥嘞?
反正一句话说不清楚,但是我们在浏览网页时经常会弹出对话框,说当下浏览的网页脚本出现错误,问是否要继续运行该脚本。*
那么“脚本”到底是啥嘞?
接下来,我们就谈一下脚本是啥玩意:
脚本(script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件的延伸,是一种纯文本保存的程序,基本看不懂是啥玩意!一个“脚本”还没搞清楚是咋回事,又整出俩名词,宏又是啥嘞?批处理文件又是啥嘞?没关系哈,我慢慢跟你解释,直到你清楚为止。
脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。
由此可见,Autohotkey脚本都是纯文本文件, 其中包含了可由程序 (AutoHotkey.exe) 执行的文本行,是面向普通电脑用户的自由开源的自动化软件工具,它让用户能够快捷或自动执行重复性任务。 脚本中还可以包含热键和热字串,甚至完全由它们组成.
特点
-
体积小巧、语法简明、易学易用。开发环境简单,只需要一个不足 1M 的解释器和一个顺手的编辑器,就可以开发了。
-
API 丰富。AHK 提供了很多桌面软件需要用到的 API,而且调用 Windows API 非常方便,这是很多其他脚本语言所无法比拟的。
-
AHK 对热键、热字符串有专门支持,写起来非常容易,而这在其他语言基本上都要费费尽周折。
-
AHK 没有官方自带或者第三方实现的完善的标准库,这样如果需要实现非内置的功能通常需要直接调用 Windows API 或寻找别人封装好的函数。AHK 语言本身并不强大,缺少很多现代语言所具备的高级特性,同时也缺乏对多线程等操作系统特性的支持。
AHK 的优点和缺点同样明显,我们需要慎重考虑,针对具体场景选择合适的工具。
脚本执行原理
程序会把脚本逐行加载到内存中, 每行最多可以包含 16,383 个字符. 在加载过程中, 脚本会被优化和检查. 将列出所有的语法错误, 更正它们后脚本才能运行.
脚本顶部 (自动执行段)脚本加载完成后,它会从顶行开始执行,直到遇到 Return 、Exit 、热键/热字串标签或脚本的底部(无论最先遇到哪个).脚本的这个顶端部分被称为自动执行段.
如果脚本不是持续运行的且不含有热键 、 热字串 、OnMessage 和 GUI。那么它会在自动执行段结束后终止. 否则, 它会以空闲状态继续运行, 从而对例如热键, 热字串, GUI事件 , 自定义菜单项和计时器 这些事件进行响应.
每个由热键,热字串,菜单项,GUI事件或计时器启动的线程都以在自动执行段设置的下列属性值作为默认值开始.如果没有设置,则使用标准的默认值(与下面每个页面中注明的一样): DetectHiddenWindows 、 DetectHiddenText 、 SetTitleMatchMode 、 SetBatchLines 、 SendMode 、 SetKeyDelay 、 SetMouseDelay 、 SetWinDelay 、 SetControlDelay 、 SetDefaultMouseSpeed 、 CoordMode 、 SetStoreCapslockMode 、 AutoTrim 、 SetFormat 、 StringCaseSense 、 Thread 和 Critical .
如果自动执行段执行了很长时间才结束 (或永不结束), 上面这些设置的默认值将在 100 毫秒后自动生效. 当自动执行段最终结束 (如果可能) 时, 在自动执行段末尾生效的那些设置才更新为默认值. 因此, 通常最好在包含热键,热字串,计时器或自定义菜单项的脚本顶部设置自己想要的默认值. 还要注意, 每个线程 会保存它自己的上述设置的集合. 在一个线程中对这些设置的改变不会影响其他线程 .
当前版本
AHK v1
AHK v1 是当前 AHK 的主流版本,也是官方网站下载地址中的版本。包含三个构建版本:
-
Unicode 32-bit。32 位 Unicode 版本,如无特殊需求,推荐使用此版本。
-
Unicode 64-bit。64 位 Unicode 版本,性能比 Unicode 32-bit 版本稍好,但占用更多内存。兼容性方面不如 Unicode 32-bit 版本。适合对性能敏感的场景使用。
-
ANSI 32-bit 。32 位 ANSI 版本,对历史遗留下来的老 AHK 脚本兼容性较好。如果写新脚本,无需关注此版本。
用法示例
; 热键示例,按 Win + g 启动计算器
#g::
Run, calc
return
; 热字符串示例,按 www 打开 AHK 官网
::www::
Run, http://ahkscript.org/
return