如何编写一个AutoHotkey脚本

AutoHotkey是一款出色而复杂的软件。最初旨在将自定义热键绑定到不同的操作,但现在是完整的Windows自动化套件。

对于新用户来说,AHK并不是特别难学,因为它的总体概念相当简单,但是它是一种完整的,具有图灵完备的编程语言。如果您具有编程背景或熟悉这些概念,则可以更轻松地掌握语法。

安装和使用自动热键

AutoHotkey的安装过程非常简单。从官方网站下载安装程序并运行它。选择“快速安装”。安装软件后,您可以右键单击任何地方,然后选择“新建”>“自动热键脚本”以创建新脚本。

AHK脚本是带有 .ahk 扩大。如果右键单击它们,您将获得一些选择:

  • “运行脚本”将使用AHK运行时加载脚本。
  • “编译脚本”将其与AHK可执行文件捆绑在一起,以使您可以运行EXE文件。
  • “编辑脚本”将在您的默认文本编辑器中打开您的脚本。您可以使用记事本编写AHK脚本,但是我们建议您使用SciTE4AutoHotkey,它是AHK的编辑器,支持语法突出显示和调试。

在脚本运行时(无论它是否是EXE),您都可以在Windows通知区域(也称为系统托盘)的后台找到该脚本。查找上面带有“ H”的绿色图标。

要退出,暂停,重新加载或编辑脚本,请右键单击通知图标并选择适当的选项。脚本将继续在后台运行,直到您退出它们。当然,当您退出Windows或重新启动PC时,它们也会消失。

AutoHotkey如何工作?

AHK的核心是做一件事-将操作绑定到热键。有许多不同的操作,热键组合和控制结构,但是所有脚本都将基于相同的原理进行操作。这是一个基本的AHK脚本,只要您按Windows + C就会启动Google Chrome:

#c ::运行Chrome返回

第一行定义一个热键。井号(#)表示Windows键, C 是键盘上的C键。之后,会有一个双冒号(::)表示操作块的开始。

下一行是一个动作。在这种情况下,该操作将使用以下命令启动应用程序: 跑步 命令。块以 返回 在最后。您可以在操作之前执行任意数量的操作 返回。他们将按顺序射击。

就像这样,您已经定义了一个简单的键到操作映射。您可以根据需要在其中放置任意数量的商品。 .ahk 文件并将其设置为在后台运行,始终寻找要重新映射的热键。

热键和修饰符

您可以在官方文档中找到AHK修改器的完整列表,但我们将重点介绍最有用(最酷)的功能。

修饰键均具有单个字符的简写。例如, # ! ^ + 分别是Windows,Alt,Control和Shift。您还可以使用来区分左右Alt,Control和Shift <> 修饰符,这为额外的热键打开了很大的空间。例如,+是右Shift。看一看密钥列表,您可以参考所有内容。 (扰流器:您几乎可以引用每个按键。甚至可以引用其他带有扩展名的非键盘输入设备)。

您可以将任意多个按键组合到一个热键中,但是很快就会用不完要记住的组合键。这是让您做更疯狂的事情的修饰符出现的地方。让我们从AHK文档中分解一个例子:

绿色的 #IfWinActive 被称为指示,并在脚本中物理地将附加上下文应用于热键。此条件之后的任何热键仅在条件为真时才会触发,并且您可以在一个指令下将多个热键分组。直到您按下另一个指令,该指令才会更改,但是您可以将其重置为空白 #如果 (如果这似乎很hack,欢迎来到AHK)。

这里的指令是检查是否打开了一个特定的窗口,该窗口由 ahk_class记事本。当AHK收到输入“ Win + C”时,它将在第一个 #IfWinActive 仅当指令返回true时,然后检查第二个指令是否返回。 AHK有很多指令,您可以在文档中找到所有这些指令。

AutoHotkey还具有热字符串,其功能类似于热键,只是替换了整个文本字符串。这类似于自动更正的工作原理(实际上,AHK有一个自动更正的脚本),但支持任何AHK动作。

仅当键入正确的字符串时,hotstring才会与该字符串匹配。尽管可以调整此行为,但它也会自动删除匹配的文本以替换热字符串。

动作

在AHK中执行操作是对操作系统产生外部影响的任何事情。 AHK有很多行动。我们可能无法解释所有这些信息,因此我们将挑选一些有用的信息。

  • 发送输入内容,无论是文字输入还是各种按键输入。
  • 左右移动鼠标。实际上,AHK有时会被错误地标记为视频游戏的作弊软件,因为人们已经使用它制作了功能齐全的瞄准机器人。
  • 单击鼠标,并相对于当前窗口定位。
  • 显示对话框菜单,其中包含表单和输入字段。
  • 移动窗口,调整大小以及打开和关闭。
  • 玩音乐。
  • 写入Windows注册表。对真的。
  • 修改剪贴板的内容。
  • 读取和写入文件。您可以遍历文件并在每一行上运行操作。 AHK甚至可以写信给 .ahk 文件并调整自己的代码。

这些操作大多数还将具有与之相关的面向信息的命令。例如,您可以写入剪贴板,但也可以获取剪贴板的内容以将其存储在变量中,并在剪贴板更改时运行函数。

通过控制结构将其全部捆绑

没有使图灵完备的所有控制结构,AHK就不会是这样。

除了 #如果 指令,您还可以访问 如果 在动作块内。 AHK有 为了 循环,花括号块, 尝试抓住 陈述等。您可以从操作块内部访问外部数据,并将其存储在变量或对象中以备后用。您可以定义自定义功能和标签。确实,您可以轻松地用另一种编程语言完成的任何事情,甚至可能在AHK中也可以完成,尽管有些头疼,而且可以浏览文档。

例如,假设您有一个令人厌烦的重复性任务,要求您连续单击多个按钮并等待服务器响应,然后再无限制地进行操作。您可以使用AHK自动执行此操作。您需要定义一些循环,以将鼠标移至特定位置,单击,然后移至下一个位置,然后再次单击。放入一些等待语句以使其不中断。您甚至可以尝试读取屏幕上像素的颜色来确定正在发生的事情。

可以肯定的是,您的脚本可能不会很漂亮。但是AutoHotkey都不是,这没关系。


$config[zx-auto] not found$config[zx-overlay] not found