最近解析老版本office和qq的文件发现其中其实都是复合文档,故对复合文档进行了解析
头文件在这里
复合文档解析
使用方式
#include "ReadStorage.h"
using namespace std;
int main()
{
// WCHAR szPath[] = L"G:\\WorkSpace\\Registry.db";
// WCHAR szPathName[] = L"E:\\WorkSpace\\QQDcyt\\Registry.db";
WCHAR szPathName[] = L"E:\\文件夹测试目录\\文档\\20141012210616692.ppt";
// WCHAR szPath[] = L"E:\\WorkSpace\\QQDcyt\\Registry2.0.db";
IStorage* pIsStorage = NULL;
// 枚举复合文档
IEnumSTATSTG *iEnum = NULL;
IEnumSTATSTG* iEnumStub = NULL;
STATSTG stg = { 0 };
STATSTG stgStub = { 0 };
//判断是否为复合文档
if (isStorageFile(szPathName))
{
pIsStorage = openStorageFile(szPathName);
}
iEnum = getEnumStorageFile(pIsStorage);
stg = getNextEnumElements(iEnum);
//保存文件夹
std::wstring strPath = L"E:\\文件夹测试目录\\文档\\20141012210616692";
GetEnum(stg, pIsStorage, iEnum, strPath);
pIsStorage->Release();
// CoTaskMemFree(stg.pwcsName);
return 0;
}
本文介绍了一种解析老版本Office和QQ文件的方法,揭示这些文件实际上是复合文档。通过读取和枚举存储文件,利用IStorage接口操作,可以解析文件内容并保存文件夹。示例代码展示了如何打开和遍历复合文档,以及如何根据枚举元素创建文件夹。
1万+

被折叠的 条评论
为什么被折叠?



