Continuando con el tema...
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.