ڼС
梦回起点
做你害怕做的事,你会发现:不过如此
本站基于WordPress—主题by 设计窝
冀ICP备15003737号
梦回起点
Copyright © 2015-2024 All rights reserved.

windows程序将资源释放到指定目录

下面的代码实现将资源释放到指定的目录:

/*
 * Copyright (c) 2017 initm.com All rights reserved.
 * 作者: 独行
 * 描述: 将模块资源释放到指定目录
 * 完成时间: 2017-11-2
*/
HMODULE GetSelfModuleHandle()
{
	MEMORY_BASIC_INFORMATION mbi;

	return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) 
		? (HMODULE) mbi.AllocationBase : NULL);
}

BOOL WriteBinarySourceToFileW(CONST LPCWSTR lpSouceName,CONST LPCWSTR lpSourceType, CONST LPCWSTR szFileName)
{
	//将图标文件复制到目标目录下
	HRSRC  hRsrc = FindResourceW(GetSelfModuleHandle(), lpSouceName, lpSourceType);
	if (NULL == hRsrc)
		return FALSE;//出错
	HGLOBAL hGlobal = LoadResource(GetSelfModuleHandle(), hRsrc);
	if (NULL == hGlobal)
		return FALSE;
	DWORD dwSize = SizeofResource(GetSelfModuleHandle(), hRsrc);
	if(0 == dwSize){
		return FALSE;
	}

	LPVOID pBuffer = LockResource(hGlobal);
	if (NULL == pBuffer)
		return FALSE;
	//打开文件
	HANDLE hFile = CreateFileW(szFileName, GENERIC_READ | GENERIC_WRITE, 0, 
		NULL, CREATE_ALWAYS, 0, NULL);
	if(INVALID_HANDLE_VALUE != hFile){
		DWORD dwCount = 0;
		if(WriteFile(hFile, pBuffer, dwSize, &dwCount, NULL)){
			FlushFileBuffers(hFile);
		}else{
			return FALSE;
		}
	}else{
		FreeResource(hGlobal);
		return FALSE;//出错
	}
	CloseHandle(hFile); 
	FreeResource(hGlobal);
	return TRUE;
}

2017-11-02
                         
暂无评论

发表回复