All pastes #403763 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-03-20 16:44 UTC
rendered paste body
//---------------------------------------------------------------------------
bool LoadResources()
{
 // Load the .EXE whose resources you want to list.
 HANDLE hExe = LoadLibrary(Application->ExeName.c_str());
 if(hExe == NULL)
 {
	MainForm->DebugEvent("LoadLibrary() Failed!");

	// Add code to fail as securely as possible.
	return false;
 }

 //TEST!!
 MainForm->DebugEvent("EnumResourceNames()");

 // Find the names of all resources of type lpType.
 EnumResourceNames(hExe, RT_RCDATA, (ENUMRESNAMEPROC)EnumNamesFunc, 0);

 //TEST!!
 MainForm->DebugEvent("FreeLibrary()");

 // Unload the executable file whose resources were
 // enumerated and close the file created to contain
 // the resource information.
 FreeLibrary(hExe);

 return true;
}

//---------------------------------------------------------------------------
//    FUNCTION: EnumNamesFunc(HANDLE, LPSTR, LPSTR, LONG)
//    PURPOSE:  Resource name callback
//---------------------------------------------------------------------------
BOOL EnumNamesFunc(
    HANDLE hModule,   // module handle 
    LPCTSTR lpType,   // address of resource type 
    LPTSTR lpName,    // address of resource name 
    LONG lParam)      // extra parameter, could be 
                      // used for error checking 
{
	// Write the resource name to a resource information file.
	// The name may be a string or an unsigned decimal
	// integer, so test before printing.
	if((ULONG)lpName & 0xFFFF0000)
	{
		MainForm->ResList.push_back(lpName);
	}
	else
	{
		//TEST!!
		MainForm->DebugEvent("EnumNamesFunc()->sprintf(zsBuffer, \"%u\", lpName)");

		char szBuffer[100];
		sprintf(szBuffer, "%u", lpName);
		MainForm->ResList.push_back(szBuffer);
	}

	return TRUE;
}