【问题标题】:LZMA Compression For VB6/VBA?VB6/VBA 的 LZMA 压缩?
【发布时间】:2020-07-26 18:30:22
【问题描述】:

希望 LZMA 在我的 Access 2000 应用程序中压缩加密文件。有谁知道在 VB6/VBA 中执行此操作的最简单方法或知道任何源代码?

【问题讨论】:

  • 虽然不是 LZMA,但似乎 deflate/gzip/zip (LZ77) 应该很常见......或者可能是支持 7-Zip/bzip2 (LZMA) 的库? FWIW,LZMA2 于 2009 年推出 :-)

标签: ms-access vba lzma


【解决方案1】:

你说你想压缩加密文件?压缩加密文件通常不会节省太多空间,因为加密过程会扰乱压缩工作的重复结构。所以我假设你的意思是压缩和加密文件。

有一个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 是免费的,并提供您可以使用的命令行语法。

【讨论】:

    【解决方案2】:

    这个不是免费的,在功能上可能有点矫枉过正(尽管您在问题中确实提到了加密 ;-):

    CryptoSys - Purchasing

    CryptoSys - Features

    也许,CryptoSys 的重要特征之一是它支持多种开发语言/平台,而不仅仅是 VB6 和 VBA。

    【讨论】:

      【解决方案3】:

      与 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
      

      【讨论】:

        猜你喜欢
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多