这篇把我实测的“从资源文件提取到保存文件”和“添加文件到 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_ScriptDir、A_Temp,正式脚本也尽量不要写死个人电脑路径。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)