Guardar y Ejecutar un Exe dentro de mi Exe

Guardar y Ejecutar un Exe dentro de mi Exe

Postby cuatecatl82 » Fri May 06, 2011 5:51 pm

Hola comunidad buenos dias:

Como dice el titulo, creo que es posible guardar un .exe como un recurso dentro de mi Aplicación y Lanzarlo cuando lo necesite,pero no doy como:

Por ejemplo: Incrustar la calculadora (CALC.EXE) dentro de mi archivo de recursos y lanzarlo con Winexec() desde mi Aplicación, para no tener que dar 2 .exe´s (Mi sistema.exe y el otro Programa.exe).

Si no estoy equivocado es posible incrustar codigo C+ como RCData en un archivo de recusros, pero es este caso la aplicacion que necesito usar esta en .EXE y no hay fuentes.

Ojala alguien pueda darme una mano, saludos y gracias anticipadas. :wink:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Guardar y Ejecutar un Exe dentro de mi Exe

Postby Daniel Garcia-Gil » Fri May 06, 2011 6:31 pm

Saludos

Biel hizo un buen trabajo, bastante simple y facil de entender, revisa su blog http://bielsys.blogspot.com/2009/04/actualizacion-automatica-de.html
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Guardar y Ejecutar un Exe dentro de mi Exe

Postby cuatecatl82 » Sun May 08, 2011 3:20 am

Gracias Daniel: Sabia que por ahi lo habia leído.. :lol: :lol: :P :wink:

Gran Trabajo de Beil.. :P :P :lol:

Saludos y gracias..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Guardar y Ejecutar un Exe dentro de mi Exe

Postby cuatecatl82 » Sat May 21, 2011 9:36 pm

Continuando con el tema... :oops: :oops: :cry: :wink:

Pude probar este ejemplo y funciona, pero ahora necesito crear el .Exe que esta incrustado dentro de mis recursos en una carpeta en específico, es decir MiApp.exe principal esta por ejemplo en "D:\Revigraf\" pero necesito que el .Exe que esta guardado dentro de MiApp.exe se creado en "D:\Revigraf\Calculos\Estados\GRAFICAR.EXE" para realizar unos calculos con archivos, ya que por defecto el .Exe es creado en la carpeta principal "D:\Revigraf\"

Mi pregunta es si es posible crear el .EXE con la funcion CreateFile() anteponiendo al nombre del .Exe la ubicación donde deseo crearla.

Code: Select all  Expand view
HANDLE hFile=CreateFile("GRAFICAR",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL) //Crea Graficar.Exe en "D:\Revigraf\"
HANDLE hFile=CreateFile(cDirApp+"Calculos\Estados\GRAFICAR",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL)  //Necesito que se pueda hacer así para crear Graficar.Exe en "D:\Revigraf\Calculos\Estados\"


Si antepongo cDirApp+"Calculos\Estados\" Al compilar me dice Error E2451 Undefined symbol 'MiDirApp' in function HB_FUN_RES_TO_EXE

si pongo @cDirApp+"Calculos\Estados\" para establecerlo como pase de Variable, al compilar dice Error E2206 Illegal character '@' (0x40) in function HB_FUN_RES_TO_EXE

Como puedo establecer cDirApp+"Calculos\Estados\" para que CreateFile() lo tome en cuenta y genere mi .Exe donde lo necesito.

Aki unpedazo de código:

Code: Select all  Expand view
#Include "Fivewin.ch"

Static cDirApp

Function Main()
cDirApp:= Lfn2Sfn(cFilePath(GetModuleFileName(GetInstance())))
RES_TO_EXE()
WaitRun("COMMAND.COM /C "+cDirApp+"Calculos\Estados\GRAFICAR.EXE *.DBF /S")
Return nil

#pragma BEGINDUMP
#include <Windows.h>
#include <mapiwin.h>
#include <hbApi.h>

HB_FUNC( RES_TO_EXE )
{
   HRSRC res=FindResource(NULL,"GRAFICAR",RT_RCDATA);  //GRAFICAR es es nombre del .EXE dentro de MiApp.EXE
   LPDWORD bytesWritten;
   INT size=SizeofResource(NULL,res);
   HGLOBAL hRes=LoadResource(NULL,res);
   unsigned char *pRes=(unsigned char *)LockResource(hRes);
   HANDLE hFile=CreateFile("GRAFICAR.EXE",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);  // Aki el problema
   WriteFile(hFile,pRes,size,&bytesWritten,NULL);
   CloseHandle(hFile);
}

#pragma ENDDUMP


Esperando su ayuda y agradeciendo de antemano.. Saludos. :P :P
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Guardar y Ejecutar un Exe dentro de mi Exe

Postby Daniel Garcia-Gil » Sat May 21, 2011 10:01 pm

Saludos

pasa la ruta y el nombre a RES_TO_EXE()

(no lo he probado pero intenta)

uso "\\" porque hay que escapar el "\"

Code: Select all  Expand view

#Include "Fivewin.ch"

Static cDirApp

Function Main()
cDirApp:= Lfn2Sfn(cFilePath(GetModuleFileName(GetInstance())))
RES_TO_EXE( "c:\\ruta\\subdir1\\subdir2\\nombredel.exe" )
WaitRun("COMMAND.COM /C "+cDirApp+"Calculos\Estados\GRAFICAR.EXE *.DBF /S")
Return nil

#pragma BEGINDUMP
#include <Windows.h>
#include <mapiwin.h>
#include <hbApi.h>

HB_FUNC( RES_TO_EXE )
{
   HRSRC res=FindResource(NULL,"GRAFICAR",RT_RCDATA);  //GRAFICAR es es nombre del .EXE dentro de MiApp.EXE
   DWORD bytesWritten;
   INT size=SizeofResource(NULL,res);
   HGLOBAL hRes=LoadResource(NULL,res);
   unsigned char *pRes=(unsigned char *)LockResource(hRes);
   const char * name = hb_parc( 1 );
   HANDLE hFile=CreateFile( name, GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);  // Aki el problema
   WriteFile(hFile, pRes,size,&bytesWritten,NULL);
   CloseHandle(hFile);
}

#pragma ENDDUMP
 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Guardar y Ejecutar un Exe dentro de mi Exe

Postby cuatecatl82 » Sun May 22, 2011 3:29 am

De nuevo Gracias por la pronta ayuda Daniel.. :P :P :P :lol: :lol:

Funciono al 100% sin fallos, te comento que tambien funcionó sin poner la doble diagonal inversa "\\" :lol: :wink:


Saludos..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 48 guests