VB icon

Extract stored executables and files in resource

Email
Submitted on: 1/4/2015 3:08:00 PM
By: Nexxeo Productions (from psc cd)  
Level: Intermediate
User Rating: By 6 Users
Compatibility: C, C++ (general), Microsoft Visual C++, Borland C++
Views: 766
 
     Extracts executables or other files stored as binary data in the resource of your executable
 

INCLUDE files:

Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
//**************************************
//INCLUDE files for :Extract stored executables and files in resource
//**************************************
windows.h
stdio.h
code:
Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
				
//**************************************
// Name: Extract stored executables and files in resource
// Description:Extracts executables or other files stored as binary data in the resource of your executable
// By: Nexxeo Productions (from psc cd)
//
// Assumes:resourcetype would be whichever type you put the binary data under, like binary, jpg, text, myfile, etc. Whatever you named it :).
It will also create a directory to put the file in if you want. If not, it will put it in the current directory with the exe.
Example call
WriteFileFromResource(LINK, "BINARY", "link.exe", FALSE, NULL)
//**************************************

BOOL WriteFileFromResource(int resourceid, LPCTSTR resourcetype, char* filename, bool createdirectory, char* directory)
{
		if (createdirectory)
		{
			HRESULT result;
			result = CreateDirectory(directory, NULL);
			if (result == 0)
			{
				return FALSE;
			}
			
			result = SetCurrentDirectory(directory);
			
			if (result == 0)
			{
				return FALSE;
			}
		}
		
		HRSRC hRsrc;
		hRsrc = FindResource(NULL, MAKEINTRESOURCE(resourceid), resourcetype);
		if (hRsrc == NULL)
		{
			return FALSE;
		}
		
		HGLOBAL filedata;
		filedata = LoadResource(NULL, hRsrc);
		
		if (filedata == NULL)
		{
			return FALSE;
		}
		DWORD size;
		size = SizeofResource(NULL, hRsrc);
		if (size < 0)
		{
			return FALSE;
		}
		FILE* file;
		file = fopen(filename, "wb");
		
		if (file == NULL)
		{
			return FALSE;
		}
		fwrite(filedata, size, 1, file);
		fclose(file);
		return TRUE;
}


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Intermediate category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments


 There are no comments on this submission.
 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)
 

To post feedback, first please login.