23 Mar 2012

windows API解压zip所有文件

完全使用windows自带api解压缩zip所有文件
适用于xp以后系统(不含xp,xp系统解压缩版本请看这里)


包含头文件:
// easy unzip
#include <windows.h>
#include <Shellapi.h>

调用:
SHFILEOPSTRUCT SHDirOp;
ZeroMemory(&SHDirOp, sizeof(SHFILEOPSTRUCT));
SHDirOp.hwnd = NULL;
SHDirOp.wFunc = FO_COPY;
SHDirOp.pFrom = "C:\\test.zip\\*.*";
SHDirOp.pTo = "C:\\test";
SHDirOp.fFlags = 
FOF_NOCONFIRMMKDIR|FOF_NOCONFIRMATION|FOF_SILENT|FOF_SIMPLEPROGRESS;

//The Copying Function
SHFileOperation(&SHDirOp);

flag具体看msdn说明:
http://msdn.microsoft.com/en-us/library/bb759795.aspx

update:
发现一个问题,传入string类型变量到SHDirOp.pFromhe SHDirOp.pTo结果无法完成copy,直接写路径就可以
这个问题必须使用LPCSTR做一次中转,解决办法:
char pfrom[200];
char pto[200];
ZeroMemory(pfrom,200);
ZeroMemory(pto,200);
strcpy(pfrom,(LPCSTR)from.c_str());
strcpy(pto,(LPCSTR)to.c_str());

No comments :

Post a Comment