- 版本
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日
2021年10月12日补充
补充一个调用zip_utils_src库解压zip压缩包的例子
1.新建一个控制台项目(也可以参考下它自带的那个控制台例子是怎么搭建的)
代码
#include <windows.h> #include <tchar.h> #include <stdio.h> #include "zip.h" #include "unzip.h" int main() { //遍历压缩包内部文件名进行解压 SetCurrentDirectoryA("D:\\1");//将进程的工作目录移动到该参数所指的目录下,不设置的话,该目录为输出.exe的默认文件路径 HZIP hz = OpenZip("D:\\1\\1.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); //打印 printf(ze.name); printf("\n"); } CloseZip(hz); getchar(); return 0; }
演示
相关直接参考它自带的例子
阿飞
2021年10月12日