【发布时间】:2020-07-26 18:30:22
【问题描述】:
希望 LZMA 在我的 Access 2000 应用程序中压缩加密文件。有谁知道在 VB6/VBA 中执行此操作的最简单方法或知道任何源代码?
【问题讨论】:
-
虽然不是 LZMA,但似乎 deflate/gzip/zip (LZ77) 应该很常见......或者可能是支持 7-Zip/bzip2 (LZMA) 的库? FWIW,LZMA2 于 2009 年推出 :-)
希望 LZMA 在我的 Access 2000 应用程序中压缩加密文件。有谁知道在 VB6/VBA 中执行此操作的最简单方法或知道任何源代码?
【问题讨论】:
你说你想压缩加密文件?压缩加密文件通常不会节省太多空间,因为加密过程会扰乱压缩工作的重复结构。所以我假设你的意思是压缩和加密文件。
有一个7-zip lzma SDK,但您需要编译代码并弄清楚如何将其转换为 windows dll 或您可以使用的东西。
我建议您将任务推送到命令行,即
Sub test()
Dim ProgramTaskID As Double
ProgramTaskID = Shell("c:\compress.bat c:\source.txt c:\dest.zip", VbAppWinStyle.vbNormalFocus)
End Sub
您不需要为此创建批处理文件,您可以直接提供命令。 Shell 函数将在程序启动后立即返回,因此您需要等待并测试输出文件是否出现,然后再尝试对其进行任何操作。
7-zip 是免费的,并提供您可以使用的命令行语法。
【讨论】:
这个不是免费的,在功能上可能有点矫枉过正(尽管您在问题中确实提到了加密 ;-):
也许,CryptoSys 的重要特征之一是它支持多种开发语言/平台,而不仅仅是 VB6 和 VBA。
【讨论】:
与 Stepen Turner 的回答类似,您可以使用 XZ Utils page 中的 xz.exe(请参阅 Windows 部分)。
代码将如下所示:
Sub LzmaCompression()
Dim ProgramTaskID As Double
ProgramTaskID = Shell("xz.exe --format=lzma test.txt", VbAppWinStyle.vbNormalFocus)
End Sub
【讨论】: