从MFC资源文件获取压缩文件内存地址然后直接解压内存中资源文件到物理内存
2018-01-16 15:16
423 查看
第一步:
从MFC资源文件中获取资源文件内存中地址:
HINSTANCEhInstance=
GetModuleHandle(0);
HRSRChrsrc=FindResource(hInstance,MAKEINTRESOURCE(IDR_ZIP1),
L"ZIP");
HANDLEhglob=LoadResource(hInstance,hrsrc);
void*zipbuf=LockResource(hglob);
unsignedintziplen
=
SizeofResource(hInstance,hrsrc);
第二步:从内存中解压文件到指定路径文件夹:
voidCJFUtils::Unzip(void*zipbuf,constunsigned
int
ziplen,constTCHAR
*UnzipBaseDir)
{
HZIPhz;
hz=OpenZip(zipbuf,ziplen,
0);
SetUnzipBaseDir(hz,UnzipBaseDir);
ZIPENTRYze;
GetZipItem(hz,
-1, &ze);
intnumitems=
ze.index;
for(intzi=
0;zi<numitems;zi++)
{
GetZipItem(hz,zi,
&ze);
UnzipItem(hz,zi,ze.name);
}
CloseZip(hz);
}
PS:解压用的是:https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
这位大神的引擎:特点:不带dll和lib;使用方便;
第三步:Zip-utils 使用方法:
1、从这里下载:https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
下载后的目录截图:
2、用VS打开实例:D:\code\zip\zip_utils_src\examples\simple
3、研究实例中的压缩和解压方法:
第四步:zip-Utils使用:
1、将unzip.cpp、unzip.h、zip.cpp、zip.h四个文件拷贝到工程目录下;
2、将以上4个文件引入到自己的项目中;即可按照第二步的方式使用了。
参考文档:
1、https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
2、http://blog.csdn.net/shineorrain/article/details/26138129
3、https://www.cnblogs
7f2c
.com/qingtian224/p/5833456.html (编译报错:uafxcwd.lib
与 LIBCMTD.lib 冲突)
PS:该方法支持x64 和 x86; 该方法相对zlib和 7z 区别:
使用方便,使用不需要lib和dll.
从MFC资源文件中获取资源文件内存中地址:
HINSTANCEhInstance=
GetModuleHandle(0);
HRSRChrsrc=FindResource(hInstance,MAKEINTRESOURCE(IDR_ZIP1),
L"ZIP");
HANDLEhglob=LoadResource(hInstance,hrsrc);
void*zipbuf=LockResource(hglob);
unsignedintziplen
=
SizeofResource(hInstance,hrsrc);
第二步:从内存中解压文件到指定路径文件夹:
voidCJFUtils::Unzip(void*zipbuf,constunsigned
int
ziplen,constTCHAR
*UnzipBaseDir)
{
HZIPhz;
hz=OpenZip(zipbuf,ziplen,
0);
SetUnzipBaseDir(hz,UnzipBaseDir);
ZIPENTRYze;
GetZipItem(hz,
-1, &ze);
intnumitems=
ze.index;
for(intzi=
0;zi<numitems;zi++)
{
GetZipItem(hz,zi,
&ze);
UnzipItem(hz,zi,ze.name);
}
CloseZip(hz);
}
PS:解压用的是:https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
这位大神的引擎:特点:不带dll和lib;使用方便;
第三步:Zip-utils 使用方法:
1、从这里下载:https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
下载后的目录截图:
2、用VS打开实例:D:\code\zip\zip_utils_src\examples\simple
3、研究实例中的压缩和解压方法:
第四步:zip-Utils使用:
1、将unzip.cpp、unzip.h、zip.cpp、zip.h四个文件拷贝到工程目录下;
2、将以上4个文件引入到自己的项目中;即可按照第二步的方式使用了。
参考文档:
1、https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
2、http://blog.csdn.net/shineorrain/article/details/26138129
3、https://www.cnblogs
7f2c
.com/qingtian224/p/5833456.html (编译报错:uafxcwd.lib
与 LIBCMTD.lib 冲突)
PS:该方法支持x64 和 x86; 该方法相对zlib和 7z 区别:
使用方便,使用不需要lib和dll.
相关文章推荐
- 如何调用MFC中的函数打开一个系统资源面板,获取文件
- MFC 从资源中直接加载文本文件,资源释放到文件
- 使用资源文件中资源(从资源文件中获取文字图片等)
- MFC从资源文件获取png图片
- 【Delphi】从内存读取或解压压缩文件(RAR、ZIP、TAR、GZIP等)(二)
- 压缩文件上传,然后再解压。这是一段有bug的代码,供自己以后需求参考
- 将ZIP文件添加到程序集资源文件然后在运行时解压文件
- MFC笔记:从资源文件获取字体
- MFC 手把手 写一个文件播放小程序(这个是直接copy的 我会动手做一遍 然后发自己原创的)
- (一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
- 解压assets资源文件夹的压缩文件,并下载到SD卡中。
- SSZipArchive 解压前 获取压缩文件内的名字
- (一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
- webrequest请求JAVA servlet,webresponse获得返回的压缩后的XML文件,然后再解压处理
- 【C语言】【unix c】使用mmap将文件映射到进程的虚拟地址空间,然后对内存的操作直接反应到文件中
- 【VB.NET】利用SharpZipLib压缩与解压文件夹中的所有文件、内存中动态压缩解压数据、内存中压缩与解压文本
- 【转】 在内存中直接运行EXE类型的资源文件
- python代码:本地压缩文件,然后连接远端linux,上传文件,解压,安装
- delphi中基于内存流压缩和解压多个文件的经验
- 【Delphi】从内存读取或解压压缩文件(RAR、ZIP、TAR、GZIP等)(三)