使用SetupIterateCabinet函数导出.cap文件

来源:互联网 发布:贵州大数据产业规划 编辑:程序博客网 时间:2024/05/22 22:07
#include <Windows.h>#include <Stdio.h>#include <Tchar.h>#include <Setupapi.h>#pragma comment(lib, "Setupapi.lib")UINT CALLBACK MsgHandler(    PVOID Context,    UINT Notification,    UINT_PTR Param1,    UINT_PTR Param2){switch(Notification){case SPFILENOTIFY_FILEINCABINET://在cabinet里查找每个文件,返回FILEOP_SKIP跳过它、FILEOP_DOIT导出文件{PFILE_IN_CABINET_INFOpFileInCabinetInfo = (PFILE_IN_CABINET_INFO)Param1;LPTSTRpCabinetFile = (LPTSTR)Param2;LPTSTRpDir = (LPTSTR)Context;TCHARszFile[MAX_PATH];lstrcpy(szFile, pDir);lstrcat(szFile, _T("\\"));lstrcat(szFile, pFileInCabinetInfo->NameInCabinet);lstrcpy(pFileInCabinetInfo->FullTargetName, szFile);//将导出的文件路径到FullTargetName里}return FILEOP_DOIT;case SPFILENOTIFY_FILEEXTRACTED://从cabinet导出文件{PFILEPATHSpFilePathInfo = (PFILEPATHS)Param1;}return NO_ERROR;default:return NO_ERROR;}}int _tmain(int argc, TCHAR *argv[]){CreateDirectory(_T("C:\\123"), NULL);SetupIterateCabinet(_T("C:\\123.cap"), 0, MsgHandler, _T("C:\\123"));return 0;}