这篇把我实测的“从资源文件提取到保存文件”和“添加文件到 Zip 再解压”两个示例合并整理。它们都属于 H 版脚本发布时很常见的文件处理问题:资源怎么从 exe 里取出来,简单压缩包怎么生成。相关入口可以看 ZipCreateFile()UnZipRawMemory()AHK_H 帮助文档

资源提取的思路

H 版打包进去的资源,有时不是直接可写出的原始文件,需要先取资源,再按 H 版格式解压,最后用 RawWrite() 保存。实测脚本里的 ResGet() 是一段较长的 WinAPI 封装,适合单独放到公共库里;正文先看调用结构。

ResourceLoadLibrary 的回退

如果你的资源本来是 DLL,理想情况是直接用 ResourceLoadLibrary() 载入。但实测里也遇到过少数机器直接载入失败的情况,这时可以先提取到临时目录,再用 LoadLibrary 回退。

创建简单 Zip

ZipCreateFile()ZipAddFile()ZipCloseFile() 适合简单打包几个文件。参数 3 可以指定压缩包里的内部路径,这比直接把真实路径塞进去更干净。

边界要说清楚

  • H 版自带 Zip 接口适合简单文件,不适合把完整多层目录树当成成熟压缩软件来用。
  • 中文路径、中文文件名、带密码压缩包,在不同 H 版环境里可能有兼容差异,发布前一定要在目标机器测试。
  • 带密码 Zip 要注意算法兼容,很多旧接口只适合 ZipCrypto,和现代压缩工具的 AES 加密不是一回事。
  • 如果你要做完整目录压缩、复杂密码压缩、进度条、排除规则,建议考虑 Shell.Application、7-Zip 命令行或专门库。
  • 文章示例里的路径全部使用 A_ScriptDirA_Temp,正式脚本也尽量不要写死个人电脑路径。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。