BOOL ExtractFileFromResource(TCHAR *szFileName, TCHAR *szResourceType, DWORD dwResourceID)
{
BOOL bRet= FALSE;
HRSRC hResource = FindResourceEx(
NULL,
szResourceType,
MAKEINTRESOURCE(dwResourceID),
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL) );//Load for current lang
if(!hResource)
return FALSE;
if(hResource)
{
HGLOBAL hGlobalMem = LoadResource(NULL, hResource);
if(hGlobalMem)
{
DWORD dwFileSize = SizeofResource(NULL, hResource);
HANDLE hFile=CreateFile(szFileName,
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(INVALID_HANDLE_VALUE != hFile)
{
DWORD dwBytesWritten = 0;
WriteFile(hFile, hGlobalMem, dwFileSize, &dwBytesWritten, NULL);
bRet = (dwBytesWritten == dwFileSize);
CloseHandle(hFile);
}
}
FreeResource(hGlobalMem);
}
return bRet;
}