简单释放程序中的资源到文件

/*
 @Desc:将程序中的资源解压
 @param1[in]:szResType:资源类型
 @param2[in]:dwResID:资源ID
 @param3[in]:szFileName:资源解压到此文件
 @param4[in]:bFailIfExists:为TRUE时,如果szFileName文件已经存在,则执行失败,否则强制替换
 @return:执行成功返回TRUE,否则返回FALSE
*/
BOOL WriteResToFile(LPCTSTR szResType,DWORD dwResID,LPCTSTR szFileName,BOOL bFailIfExists)
{
 if (bFailIfExists &&
  GetFileAttributes(szFileName) != INVALID_FILE_ATTRIBUTES)
  return FALSE;

 //查找资源
 HRSRC hResInfo = FindResource(NULL,MAKEINTRESOURCE(dwResID),szResType);
 if (hResInfo == NULL)
  return FALSE;

 //获得资源大小
 DWORD dwSize = SizeofResource(NULL,hResInfo);
 if (dwSize == 0)
  return FALSE;

 HGLOBAL hResData = LoadResource(NULL,hResInfo);
 if (hResData == NULL)
  return FALSE;

 HANDLE hFile = CreateFile(szFileName,GENERIC_ALL,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
 if (hFile == INVALID_HANDLE_VALUE)
 {
  FreeResource(hResData);
  return FALSE;
 }

 DWORD dwWritten = 0;
 LPVOID lpBase = LockResource(hResData);
 BOOL bRet = FALSE;

 if (lpBase != NULL)
 {
  BOOL bRet = WriteFile(hFile,lpBase,dwSize,&dwWritten,NULL);
  UnlockResource(hResData);
 }

 FreeResource(hResData);
 CloseHandle(hFile);
 return bRet;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值