运行 脚本文件中的每个热键都在一个单独的线程中(每个热键的最大线程数 = 1)

Run each hotkey in a script file in a separate thread (with max threads per hotkey = 1)

我有一个带有 3 个热键的 .ahk 脚本文件。

每个热键都需要几秒钟才能完成。

当我 运行 热键 a 然后在 a 完成之前热键 b 时发生的事情是 a 被中断并且脚本继续b.

基本上我想要 ab 到 运行 同时。

我能做到吗?

AutoHotkey 中(尚)不存在单个脚本中的真正多线程。

虽然有一些方法可以尝试创建“假”多线程,但目前最好的解决方案是使用 Run 命令让每个热键 运行 拥有自己单独的 ahk 脚本文件。


希望这对您有所帮助;如果您想了解此类代码的示例,lmk 和我可以继续创建一个。

当我需要同时运行两个函数时,我制作了多个相互交互的脚本。不幸的是,Autohotkey 不支持多线程,所以这是唯一的方法。

一些想法:

  • 您可以使用 msgbox and/or GUI 在脚本之间传递变量。

  • 如果您需要一个函数,您也可以使用 msgbox 作为“等到” 等待对方完成一部分自动化。

  • 我有时用它来制作两个脚本“播放标签”以利用所有 网站加载期间存在的停机时间。其他 换句话说,我制作了两个与不同网站交互的机器人...... 在另一个等待其页面加载时自动化一个。

  • 我还使用了“控制面板”类型的设置 通过 GUI 控制子程序(其他脚本)的主脚本。你 然后可以使用按钮触发 运行 命令并提供 kill 每个子程序的按钮。这会给它一个完整的感觉 应用程序,如果你通过控件发送到一个隐藏的 gui 来完成这一切。这 然后主脚本可以跟踪所有需要的变量 像我之前提到的那样在子程序与 msgbox 之间进行交换。 但我认为那时你可能只想合并另一个 更强大的语言,如 python 或 Java.