AutoHotkey.dll 模块

目录

为什么需要 AutoHotkey 模块

多线程: AutoHotkey 本身并不是为多线程而设计的,而且很可能永远不会原生实现。使用 AutoHotkey.dll 仍然可以在一个进程中运行多个脚本;在多核系统上,甚至可以同时运行多个脚本。 为此,AutoHotkey 模块也需要被加载多次。请注意,这需要使用 MemoryModule,或者通过复制并重命名 AutoHotkey.dll 来使用多个 dll,例如 AutoHotkey1.dll、AutoHotkey2.dll ...

AutoHotkey 模块运行在自己的上下文中,使用独立的内存、函数和变量。你可以从另一个线程访问变量和对象。 AutoHotkey 模块导出了一些函数,可用于创建和操作新线程。

在其他程序中使用 AutoHotkey: AutoHotkey 模块也可以在 VB、C#、C++、Python、Lua 等许多其他编程语言中使用。 本身不支持加载 dll 的程序,可以使用 COM Interface(COM 接口)

AutoHotkey COM Interface: AutoHotkey.dll 也可以通过其 COM Interface 加载和操作。 使用该 COM Interface 之前,需要先注册 AutoHotkey.dll:

regsvr32 "C:\Program Files\AutoHotkey\AutoHotkey.dll"
若要取消注册 AutoHotkey.dll,请使用:
regsvr32 /u "C:\Program Files\AutoHotkey\AutoHotkey.dll"

AutoHotkey_H 还支持使用 ComObjDll 加载未注册的 dll。

COM Interface 内部始终使用 MemoryModule 创建新线程, 这允许多次加载同一个模块。当 COM 对象被释放时,AutoHotkey.dll 会自动释放该模块。

重新加载脚本但保持进程运行

使用 AutoHotkey 模块时,可以在线程之间共享变量、对象和内存。例如,可以在主线程中创建所有必需变量, 再使用 Alias 函数将它们共享给 AutoHotkey 模块。 每当需要重新加载时(例如接受新的热字符串和热键),可以只重新加载 AutoHotkey 模块,然后再次共享这些变量。