Click here to Skip to main content
15,867,308 members
Articles / Desktop Programming / MFC
Article

Launching Program from Resources.

Rate me:
Please Sign up or sign in to vote.
3.17/5 (8 votes)
27 Mar 2001 49.9K   1.3K   31   5
A new way to execute programs from resources.

Introduction

You can execute another program from your application without the need to attach the execution file with your program. The exe file will be stored in the application resources as a bitmap image, and in the runtime mode this image will be written in an exe file.

Once the exe file has been created, there is no problem to run it.

These steps will explain for you how to do that:

  1. From your resource view, insert new resource type, let's call it "EXE".
  2. From the "EXE" type, import the execution file you want to include in it.

Until now, you have loaded the Execution file in your resources, and you need write it in an execution file to be ready for running. Create new function in your program, let's call it Run(), like this:

bool Run()
 {
  CFile f; //This is the file which will be used  as an exe file
  char* pFileName = "Execution.exe";
  if( !f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, NULL ) )
  {
      AfxMessageBox("Can not create file!");
      return 0;
  }
      CString path = f.GetFilePath();
  HGLOBAL hRes;
  HRSRC hResInfo;
      //Get the instance handle for this app
  HINSTANCE insApp = AfxGetInstanceHandle();
      //find the handle for the EXE resource    file
  hResInfo = FindResource(insApp,(LPCSTR)IDR_EXE4,"EXE");
  hRes = LoadResource(insApp,hResInfo );   // Load it


      //Calculate the size of the exe file
  DWORD dFileLength = SizeofResource( insApp, hResInfo );
  f.WriteHuge((LPSTR)hRes,dFileLength);  //write it
  f.Close();
  HINSTANCE HINSsd = ShellExecute(NULL, "open",path, NULL, NULL,
                                      SW_SHOWNORMAL); //Execute it.
  return 1;

 }

That's all.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralHmmm... Pin
Tomas Brennan18-Feb-10 15:39
Tomas Brennan18-Feb-10 15:39 
Questionhow can in insert my exe file in a bitmap Pin
sepel16-Feb-07 0:09
sepel16-Feb-07 0:09 
GeneralTemporary Pin
Nnuller24-Mar-04 22:43
Nnuller24-Mar-04 22:43 
Besides putting the file into the TEMP folder, IMHO it will be better if the name of EXE-file selected randomly.. For example by calling of the GetTempFileName function.
However fixed file name is not bad solution too if you run a number of copies of your program simultaneously. Just to keep a free disk space.
GeneralBad idea Pin
Andreas Saurwein13-Feb-03 6:12
Andreas Saurwein13-Feb-03 6:12 
QuestionPut into temp directory? Pin
Harold Bamford1-Nov-02 13:06
Harold Bamford1-Nov-02 13:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.