In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

exe desde recursos

Foro de Xailer profesional en español
Responder
Arturo
Mensajes: 77
Registrado: Jue Abr 22, 2010 2:39 pm

exe desde recursos

Mensaje por Arturo »

Buenas,
quiero colocar un ejecutable en recursos tal y como se comentaba en otro
post de hace un tiempo .....
Lo hago de la siguiente manera (editando el fichero rc directamente):
DSFind RCDATA "DSFind.exe"
Tiene 100 kb......
No me da problemas al compilar pero no consigo ejecutarlo.........
METHOD ToolBar3Item1Click( oSender ) CLASS TForm1
local dsfinder
dsfinder:=FindResource(,"DSFind",10)
msgalert(dsfinder) // --->me muestra el handle, o sea que lo ha capturado
bien
execute(dsfinder)
LoadResource(dsfinder)
RETURN Nil
Gracias
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

exe desde recursos

Mensaje por jlalin »

Arturo,
con FindResource sólo consigues la dirección de memoria del recurso pero
nada más. Tienes que obtener los bytes del recurso, grabarlo en un archivo
y luego ejecutarlo.
Más o menos serí­a así­ (está escrito al vuelo y quizás necesite algún ajuste):
METHOD ToolBar3Item1Click( oSender ) CLASS TForm1
LOCAL hRes := FindResource( , "DSFind", 10 )
LOCAL pRes
LOCAL cExe := Application:cDirectory + "dsfind.exe"
LOCAL hFile
IF !Empty( hRes )
pRes := LoadResource( , hRes )
IF ! Empty( pRes )
hFile := FCreate( cExe )
FWrite( hFile, pRes, Len( pRes ) )
FClose( hFile )
IF File( cExe )
Execute( cExe )
ENDIF
ENDIF
ENDIF
RETURN Nil
Saludos,
José Lalí­n
Responder