欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

使用SetupIterateCabinet函数导出.cap文件

使用SetupIterateCabinet函数导出.cap文件

#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_INFO        pFileInCabinetInfo = (PFILE_IN_CABINET_INFO)Param1;
                        LPTSTR                                        pCabinetFile = (LPTSTR)Param2;
                        LPTSTR                                        pDir = (LPTSTR)Context;
                        TCHAR                                        szFile[MAX_PATH];
                        lstrcpy(szFile, pDir);
                        lstrcat(szFile, _T("\\"));
                        lstrcat(szFile, pFileInCabinetInfo->NameInCabinet);
                        lstrcpy(pFileInCabinetInfo->FullTargetName, szFile);//将导出的文件路径到FullTargetName里
                }
                return FILEOP_DOIT;
        case SPFILENOTIFY_FILEEXTRACTED://从cabinet导出文件
                {
                        PFILEPATHS                                pFilePathInfo = (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;
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功