AutoHotkey Lib DLL托管指南:如何在你的应用中嵌入AHK解释器 📅 发布时间:2026/9/19 14:46:05 👁 浏览次数: AutoHotkey Lib DLL托管指南如何在你的应用中嵌入AHK解释器【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkeyAutoHotkey 是一款经典的 Windows 宏创建与自动化脚本工具而它的Lib DLL是一项常被忽视的强大特性你可以把整个 AHK 解释器编译成一个动态链接库直接嵌入到自己的应用程序中运行脚本、分析代码。对于想开发 AHK IDE、脚本插件系统或想在 v2 进程中复用 v1 库的开发者来说这是一份从零开始的完整托管指南。什么是 Lib DLL两个核心使用场景从 2022 年起AutoHotkey 官方项目正式支持编译为 DLL与早年社区的 HotKeyIt/ahkdll 是不同项目目标是提供尽可能贴近原生 AutoHotkey 的托管接口。它主要有两大用途 场景说明典型应用托管执行脚本在你的进程中加载并执行 AHK 脚本尤其是让 v1 代码在 v2 进程中运行插件系统、混合版本脚本静态分析脚本只加载、不执行提取函数/变量/标签信息自动补全、CallTip、跳转到定义需要留意该 DLL仅支持 Unicode暂不支持 ANSI且官方标注其接口仍属实验性质API 可能随版本变化。 完整说明见 README-LIB.md接口定义见 source/ahklib.idl。一步到位如何编译出 AutoHotkey.dll编译过程非常简单只需选对构建配置获取源码仓库地址https://gitcode.com/gh_mirrors/au/AutoHotkey用Visual Studio 2022Community 版即可打开 AutoHotkeyx.sln在配置下拉框中选择Release.dll并选定平台Win32 或 x64点击生成调试时可选用Debug.dll配置并在项目设置中把调试命令行的目标 exe 指向你的宿主程序——若两者都是 Debug 构建可同时调试 DLL 与宿主。在 AutoHotkeyx.vcxproj 中可以看到任何带.dll后缀的配置都会自动将项目类型切换为DynamicLibrary输出即为你要嵌入的 DLL 文件。DLL 的实现入口位于 source/ahklib.cppCOM 交互逻辑在 source/script_com.cpp。两个入口函数Host 与 Main该 DLL 目前暴露两个导出入口Host(IDispatch **ppLib)—— 推荐入口。创建一个 Lib 实例并返回 COM 对象无需注册 DLL任何支持 COM 调用的语言都能直接使用int Main(int argc, LPTSTR argv[])—— 以与 AutoHotkey.exe 相同的方式执行脚本早期开发用于测试现主要供Lib.Main内部使用。由于 DLL 尚未内置 COM 类工厂暂时不能通过CoCreateInstance等机制激活Host是当前唯一推荐的获取方式。核心 Lib API 一览加载、执行与分析通过Host拿到的 Lib 对象提供了一组直观的方法完整 IDL 定义在 source/ahklib.idl 的IAutoHotkeyLib接口中执行相关Lib.Main(CmdLine)像 AutoHotkey.exe 一样执行命令行。若脚本是持久型的则不会返回Lib.LoadFile(FileName)只加载脚本文件、不执行。每个 DLL 实例只能调用一次热键不会在此阶段生效Lib.Execute()激活热键并执行自动执行区后返回可多次调用。跳过此调用即可实现只分析、不运行Lib.OnProblem(Callback)注册警告/错误回调接管所有未捕获的异常输出。信息提取相关Lib.Funcs/Lib.Vars/Lib.Labels返回描述函数、变量、标签的对象集合可获取参数列表、行号、是否只读等细节——这正是实现 IDE 补全与 CallTip 的基石 ✨。在你的 AHK 脚本中托管解释器最小示例如果你的宿主程序本身就是 AutoHotkey v2 脚本加载流程只有两行核心代码if !hmod : DllCall(LoadLibrary, str, dll, ptr) throw OSError() DllCall(dll \Host, ptr*, Lib : ComValue(9, 0), hresult)调用结束后用FreeLibrary卸载 DLL 即可再加载下一个脚本——这是官方支持的多脚本方案 ⚠️ 注意卸载前必须释放所有外部对象引用并确保键盘/鼠标钩子已解除例如先挂起热键否则 DLL 将无法卸载。已知限制与避坑清单官方文档坦诚列出了几个容易踩的坑嵌入前务必了解A_AhkPath指向宿主进程用它执行脚本可能不符合预期基于当前 exe 路径执行命令行的功能包括Reload可能行为异常跳过Lib.Execute()时在新伪线程中执行的事件可能导致未定义行为不支持枚举类需通过Lib.VarsLib.Script迂回实现且可能触发未知脚本执行存在一定风险目前一次只能加载一个主脚本文件切换脚本需重新加载 DLL。关键文件速查文件作用README-LIB.mdLib DLL 官方说明构建、API、已知问题source/ahklib.idlIAutoHotkeyLib等全部 COM 接口定义source/ahklib.cppDLL 入口与 Lib 对象实现source/script_com.cpp脚本 COM 互操作实现AutoHotkeyx.vcxproj含Release.dll/Debug.dll构建配置总结只要会选对构建配置、调对Host入口你就能在几天内给自己的应用加上完整的 AHK 脚本引擎——无论是做插件宿主还是打造带自动补全的 AHK 编辑器Lib DLL 都是目前官方路线下最顺手的方案。【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考