- 版本
VS2013
- 方法1
调用第三方WinRAR软件的接口直接生成压缩包
void CDemo1Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //开始打包 string cmd_str = ""C:\Program Files\WinRAR\Rar.exe"";//调用的winrar文件 string rar_path = "D:\1\111.zip";//生成的压缩包文件 //需要被压缩的文件 string rar_files = "D:\1\1.txt"; rar_files = rar_files + " " + "D:\1\2.txt"; //启动进程命令行传参调用 SHELLEXECUTEINFO ShExecInfo; string parameters = " a -k -m1 -ep1 -r -o+ " + rar_path + " " + rar_files; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = "open";//多种类别有 "explorer" "print" 等 ShExecInfo.lpFile = cmd_str.c_str();//exe 路径 ShExecInfo.lpParameters = parameters.c_str();//参数 ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_HIDE;// ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo); WaitForSingleObject(ShExecInfo.hProcess, 3 * 1000); }
- 演示
- 方法2
这个方法是网友小白鼠告诉我的,库文件也是从他论坛下载的,出处 http://www.vmould.cn/vip/forum.php?mod=viewthread&tid=550&extra=page%3D1
挺好用的。库文件也有自带的参考例子
附加一份别人博客的参考资料https://blog.csdn.net/wangshubo1989/article/details/52847891
问题1:
解决方法:将unzip.cpp和zip.cpp右键属性-设置成不使用预编译头
参考资料:https://blog.csdn.net/cindywry/article/details/89352591
问题2:
参考资料:https://blog.csdn.net/qq_38721302/article/details/82850292
解决方法是:找到【项目属性】,点击【C++】里的【预处理器】,对【预处理器】进行编辑,在里面加入一段代码:_CRT_SECURE_NO_WARNINGS。
编译通过
#include "zip.h" #include "unzip.h" void CDemo2Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //创建压缩包 HZIP hz; hz = CreateZip(_T("D:\1\simple1.zip"), 0); ZipAdd(hz, _T("这是1.txt"), _T("D:\1\1.txt")); ZipAdd(hz, _T("这是2.txt"), _T("D:\1\2.txt")); CloseZip(hz); }
void CDemo2Dlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 //遍历压缩包内部文件名进行解压 HZIP hz = OpenZip("D:\1\simple1.zip", 0); ZIPENTRY ze; GetZipItem(hz, -1, &ze); int numitems = ze.index; for (int i = 0; i < numitems; i++) { GetZipItem(hz, i, &ze); UnzipItem(hz, i, ze.name); //打印 AfxMessageBox(ze.name); } CloseZip(hz); }
- 演示
更多用法,看类库里自带的例子参考吧
Caesar卢尚宇
2021年2月6日