使用7z.dll完成简单解压缩

这篇博客介绍了如何利用7z.dll通过COM接口进行文件的解压缩操作。重点讲解了CArchiveOpenCallback和CArchiveExtractCallback这两个回调类在解压过程中的作用,包括设置解压进度和获取文件流。同时,提到了创建对象、打开压缩文件以及初始化提取回调的步骤。
摘要由CSDN通过智能技术生成

首先去7z官网下载代码 7z的源代码或者lzma都可以,但是推荐下7z的源代码,里面东西比较全

7z.dll 通过 COM 接口工作。但是它并没有使用标准的 COM 接口 。如果有com基础的话 看他的代码会比较容易。

比较简单的例子是 /cpp/7zip/ui/client7z 里面有简单的 压缩 解压缩 和查看压缩包文件。 7z.dll的源代码在 bundles/7zformatf 里面

其中 clinet7z和 file manager的代码看起来比较好理解,可以自己一步一步跟着走。 // 晚上再更新 

7z.dll 采用com接口工作,但是它并没有使用标准的COM接口。

对文件的解压主要靠下面两个回调类

/ Archive Open callback class

// 压缩文件打开回调类  class CArchiveOpenCallback:

 public IArchiveOpenCallback,

 public ICryptoGetTextPassword,

 public CMyUnknownImp

 

// 解压回调类  class CArchiveExtractCallback:               

public IArchiveExtractCallback,

 public ICryptoGetTextPassword,

 public CMyUnknownImp

解压回调类中

// IProgress

 STDMETHOD(SetTotal)(UInt64 size); //获得加压文件总字节数

 STDMETHOD(SetCompleted)(const UInt64 *completeValue); //获取当前解压文件大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值