首先去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); //获取当前解压文件大小