Hola Willi.
Ya habia probado esta opcion, sin embargo el .EXE generado, es detectado por algunos antivurus (www.avira.com) como un virus.
Por lo tanto, por ahora y mientras no corrigan esta problema no podemos usarlo.
Tambien, para el conocimiento de quienes usan esta herramienta, ellos comentan que todo lo hacen en memoria, sin embargo, cada vez que utilizan un DLL, esta se desempaca en area temporal de usuario, asi que la DLL si se escribe en el HDD, aun que sea en un area tempoal.
Sin embargo es una buena alternativa.
Alguna otra idea ?
Saludos
Otra forma de leer una DLL
Re: Otra forma de leer una DLL
Visite Chiapas, el paraiso de México.
Re: Otra forma de leer una DLL
devtuxtla
Hasta que actualices tu FWH podes salir con esta función de Biel y modificada por Daniel para restaurar el archivo incrustado en una direccion especifica.
En el programa principarl
El archivo .RC
Lo interesante seria mandar otro parametro que lleve el nombre del RCDATA a la función para no crear varias, no se como se hace.
Ej: RESTFILE("C:\WINDOWS\FREEIMAGE.DLL","FREEIMAGE")
No olvides comprimir tus archivos con UPX para que el .EXE no sea muy grande.
Espero te sirva.
Saludos,
Adhemar
Hasta que actualices tu FWH podes salir con esta función de Biel y modificada por Daniel para restaurar el archivo incrustado en una direccion especifica.
En el programa principarl
Code: Select all
Function Main()
If !FILE("C:\WINDOWS\FREEIMAGE.DLL")
RESTFILEI( "C:\WINDOWS\FREEIMAGE.DLL" )
Endif
If !FILE( "C:\WINDOWS\PREV32.DLL" )
RESTFILEP( "C:\WINDOWS\PREV32.DLL" )
Endif
*....
Return
*
#pragma BEGINDUMP
#include <Windows.h>
#include <mapiwin.h>
#include <hbApi.h>
HB_FUNC( RESTFILEI )
{
HRSRC res=FindResource(NULL,"FREEIMAGE",RT_RCDATA);
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);
WriteFile(hFile, pRes,size,&bytesWritten,NULL);
CloseHandle(hFile);
}
#pragma ENDDUMP
**
#pragma BEGINDUMP
#include <Windows.h>
#include <mapiwin.h>
#include <hbApi.h>
HB_FUNC( RESTFILEP )
{
HRSRC res=FindResource(NULL,"PREV32",RT_RCDATA);
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);
WriteFile(hFile, pRes,size,&bytesWritten,NULL);
CloseHandle(hFile);
}
#pragma ENDDUMP
Code: Select all
ICON_1 ICON "MIAPLICA.ICO"
FREEIMAGE RCDATA "D:\SISTEMAS\DLLS\FREEIMAGE.DLL"
PREV32 RCDATA "D:\SISTEMAS\DLLS\PREV32.DLL"
Ej: RESTFILE("C:\WINDOWS\FREEIMAGE.DLL","FREEIMAGE")
No olvides comprimir tus archivos con UPX para que el .EXE no sea muy grande.
Espero te sirva.
Saludos,
Adhemar
Saludos,
Adhemar C.
Adhemar C.