使用 AutoHotkey.dll 在当前进程中创建一个真正的附加 AutoHotkey 线程。
OutputVar := AhkThread(ScriptOrFile, Parameters, Title, ScriptIsFile, DllToUse)
函数示例: Thread := AhkThread("MsgBox Message from thread.")
用于存储新创建线程的对象的变量的名称。
使用这个对象,我们可以使用简单的对象语法调用所有 AutoHotkey.dll 函数。
要执行的 AutoHotkey 脚本。该参数可以是以下之一:
- 作为字符串传入的脚本,或包含脚本字符串的变量。
- ahk 文件路径。要从文件启动脚本,参数 ScriptIsFile 必须设为 true。
- 留空或省略时启动空脚本 ("#Persistent`n#NoTrayIcon")。
- 传入 0 表示只准备线程但不启动它。使用 ahkdll 或 ahktextdll 启动新线程。
命令行参数,可通过内置变量 A_Args 对象访问。
当未给出标题时,将在 MsgBox、Gui... 中显示的 dll 线程的标题(默认文件名)。
如果 ScriptOrFile 是磁盘或网络上文件的路径,则设置为 true 或 1。
将用于创建新线程的 AutoHotkey.dll 的路径或资源名称。
编译 AutoHotkey.dll 时,ahkdll 和 ahktextdll 的行为会有所不同。
当 ScriptOrFile 省略或为空时,将执行已编译的脚本。
要释放线程的资源,我们必须调用 ahkthread_free(obj) 并释放对象 (obj:="")。
obj.ahkterminate() 可以选择性地调用。
| ahkdll | 从文件加载新线程,当前线程将被终止。 |
| ahktextdll | 从字符串/内存/变量加载新线程,当前线程将被终止。 |
| ahkReady | 如果当前正在执行线程,则返回 1 (true),否则返回 0 (false)。 |
| ahkTerminate | 终止线程。 |
| ahkReload | 使用与以下相同的参数重新加载线程 ahkdll 或 ahktextdll. |
| ahkFunction | 通过 SendMessage 方法调用函数。主要与AutoHotkey.dll一起使用,调用dll脚本中的函数或从dll中调用主脚本中的函数。 |
| ahkPostFunction | 通过 PostMessage 方法调用函数(不等到函数返回)。也主要与AutoHotkey.dll一起使用 |
| ahkExecuteLine | 从给定的行指针执行脚本。 |
| ahkLabel | Goto (PostMessage) 或 Gosub (SendMessage) 标签。也主要与AutoHotkey.dll一起使用 |
| ahkFindFunc | 找到一个函数并返回它的指针。 |
| ahkFindLabel | 找到一个标签并返回它的指针。 |
| addFile | 添加并可选择执行文件中的其他脚本/代码。不适用于使用 AutoHotkeySC.bin 编译的脚本。 |
| addScript | 添加并可选择执行文本/内存/变量中的其他脚本/代码。不适用于使用 AutoHotkeySC.bin 编译的脚本。 |
| ahkExec | 暂时从文本/内存/变量执行一些脚本/代码。不适用于使用 AutoHotkeySC.bin 编译的脚本。 |
| ahkassign | 为变量或变量指针赋值。 |
| ahkgetvar | 从变量中检索值。 |
| ahkPause | 暂停脚本。 |
ahkdll:=AhkThread("#Persistent`nvariable:=`"Thread`"") ; 加载 AutoHotkey 模块并启动脚本。
While !ahkdll.ahkgetvar.variable
Sleep 50 ; 等待变量被设置。
MsgBox % ahkdll.ahkgetvar.variable ; 显示线程中变量的内容
ahkthread_free(ahkdll),ahkdll:="" ; 停止线程中的执行并释放资源。