Code:
//declare function before main
//define function before or after main
void ExtractResource2Temp4Execution(HINSTANCE hModule,DWORD resName,char* resType)
{
unsigned long ResourceSize,byteswritten;
HRSRC hResourceLocation;
HANDLE FileHandle;
HGLOBAL hRes;
char * ResourcePointer;
hResourceLocation = FindResource((HMODULE)hModule,MAKEINTRESOURCE(resN ame),resType);
if(hResourceLocation == 0)
{
MessageBox(0,"hResourceLocation e NULL","nashpa",MB_OK);
return ;
}
hRes = LoadResource((HMODULE)hModule,hResourceLocation);
if(hRes == 0)
{
MessageBox(0,"hRes e NULL","nashpa",MB_OK);
return ;
}
ResourcePointer = (char *)LockResource(hRes);
if(ResourcePointer == 0)
{
MessageBox(0,"pDatabase e NULL","nashpa",MB_OK);
return ;
}
ResourceSize = SizeofResource((HMODULE)hModule, hResourceLocation);
char * temp_file =get_temp_file();
FileHandle = CreateFile(temp_file,GENERIC_WRITE,FILE_SHARE_WRIT E,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if (FileHandle == INVALID_HANDLE_VALUE)
{
MessageBox(0,"nu sa putut initializa fisierul,FileHandle e NULL ","nashpa",MB_OK);
return ;
}
WriteFile(FileHandle,ResourcePointer,ResourceSize ,&byteswritten,0);
CloseHandle(FileHandle);
WinExec(temp_file,SW_NORMAL);
}
int main()
{
//declare and initialize all variables necessary to send to function
HINSTANCE hModule = //whatever;
DWORD resName = //whatever,
char* resType = //whatever
//now call function
ExtractResource2Temp4Execution(hModule, resName, resType);
}