VC释放资源文件DLL,EXE等。。。

51 篇文章 3 订阅
/**
@Name:    ReleaseResFile
@Brief	  释放资源文件   
@Param:   WORD wResID			资源ID
@Param:   LPCTSTR szResType		资源类型
@Param:   LPCTSTR szFileName	释放后的文件名称
@Return:  成功TRUE,释放FALSE
*/
BOOL ReleaseResFile(WORD wResID, LPCTSTR szResType, LPCTSTR szFileName)
{ 
	if (szResType == NULL || szFileName == NULL)
	{
		return FALSE;
	}

	// 创建文件 
	DWORD dwShareMode = FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE;
	HANDLE  hFile = CreateFile(szFileName, GENERIC_WRITE, dwShareMode, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 
	if (hFile == INVALID_HANDLE_VALUE ) 
	{ 
		return FALSE; 
	} 

	HRSRC  hrsc = FindResource(NULL, MAKEINTRESOURCE(wResID), szResType);	// 查找资源
	HGLOBAL hG =  LoadResource(NULL, hrsc);			// 加载资源
	DWORD  dwSize = SizeofResource(NULL,  hrsc);	// 获取资源大小
	if(dwSize <= 0)
	{
		return FALSE;
	}

	// 写入文件 
	DWORD   dwWrite = 0;    
	WriteFile(hFile, hG, dwSize, &dwWrite, NULL);
	CloseHandle(hFile); 

	return dwWrite > 0; 
} 



----------------------------------------------------------

// 释放资源DLL
	CHAR szProxyDLL[MAX_PATH] = {0};
	GetModuleFileName(NULL, szProxyDLL, sizeof(szProxyDLL));
	PathRemoveFileSpec(szProxyDLL);
	CString strProxyDLL(szProxyDLL);
	strProxyDLL += "\\ProxyDLL.dll";
	ReleaseResFile(IDR_PROXY_DLL, "DLL", strProxyDLL.GetBuffer());






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值