前一段时间有个项目需要调用7zip做分段压缩, 现在总结一下:
1 7zip版本 9.20
开发环境vs2005
2 编译
单独的7zip程序工程在这个目录下: 7zip\CPP\7zip\Bundles\Alone, 工程文件Alone.dsw; 在2005下升级一下就可以了. 编译后生成文件c:\util\7za.exe
3 定制7zip
7zip的入口函数是 int MY_CDECL main(...), 但主要工作是在int Main2(...)中进行的。定制的代码可以插到此函数中。
主要做了如下定制:
(1)命令行参数(7za.exe通过CreateProcess调用)
通过命令行传入调用程序的信息,例如主窗口句柄等;
(2)输出
把7zip的输出定向到指定的文件;
//g_StdOut.Open(szLogPath);
(3)把压缩进度通过进程间内存读写输送到调用程序。
//WriteProcessMemory
//void CPercentPrinter::RePrintRatio() //获取进度的位置。
参考文档:
http://hi.baidu.com/yunhaisoft/blog/item/679d061022bd29efc3ce79bd.html