Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Basta con que crees un fichero de recursos como los estandard de Delphi y lo añadas a un proyecto de DLL.

Crea un archivo .RC como este (icons.rc):
Código:
BACK          BITMAP ".\back.bmp"
BARCODE    BITMAP ".\barcode.bmp"
...
Lo compilas usando el programa brcc32 (desde la linea de comandos)
Código:
brcc32 icons.Rc > Errores.txt
Desde Delphi creas un nuevo proyacto en: File/New/Other/DLL Wizard

y donde pone {$R *.res} cambias eso por {$R ICONS.RES}
Compila, linka y la DLL resultante ya tiene los iconos.

Una vez que tengas la DLL creada, en mi caso, por ejemplo con el nombre: ResDLL.dll para recuperar los iconos haz lo siguiente:
(1) Crea una nueva aplicación de delphi.
(2) Coloca dos TImage y un botón.
(3) En el Onclick del botón coloca el siguiente código:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  DllHandle: THandle;
begin
  // Cargar la DLL (debe estar en el mismo directorio)
  DllHandle := LoadLibrary('.\ResDLL.dll');
  // Cargada correctamente?
  if DllHandle <> 0 then begin
    // proteccion
    try
      //Cargar los recursos desde la DLL
      Image1.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BACK');
      Image2.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BARCODE');
    finally
      // Liberarla
      FreeLibrary(DllHandle)
    end;
  end
  else begin
    // Error
    ShowMessage(SysErrorMessage(GetLastError))
  end;
end;

Una vez compilado si la DLL y el EXE están en el ismo directorio deberían funcionar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 06-07-2006 a las 16:28:54.
Responder Con Cita
  #2  
Antiguo 07-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 22
Deiv Va por buen camino
Thumbs up

Neftali, muy didáctica tu explicación, seguí las instrucciones, he probado tu código y de maravilla!, Gracias. En un principio pensé que como existen muchos programas que trabajan con Iconos y recuperan formatos DLL (ArtIcons Pro, IconCool, etc) pensé que quedarían desprotegidos, intenté con un par de ellos abrir la DLL creada con Delphi (según tu ejemplo) y he observado que no los pueden abrir, ¿es así?. Estoy empezando a leer más sobre el Tema DLL, me parece que los Programas de Íconos recuperan otro tipo de dlls a los que se crea con Delphi....

Yo trabajo con Recursos para otros formatos de esta manera:

NuevoMP3 RCDATA MiMusica.mp3
NuevoWav WAVE MiWav.wav
NuevoAvi AVI MiAvi.avi
NuevoIco ICON Foto.ico
NuevoAni ANICURSOR Globos.ani
NuevoFont RCDATA FORTE.ttf

En las líneas:
Código Delphi [-]
DllHandle := LoadLibrary('.\ResDLL.dll');
  if DllHandle <> 0 then begin
    try
      //Cargar los recursos desde la DLL
      Image1.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BACK');

¿Se realiza el mismo proceso para recuperar una DLL que tenga cargado un archivo ICO, ANI, WAV, MP3 y AVI?
Obviamente la última línea:
Código Delphi [-]
Image1.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BACK');

tendrá que ser diferente para cada uno.

Imagino que la llamada a la DLL debe ser la misma para cualquier caso, pero....

¿Cual es la forma de cargar los Recursos desde la DLL para dichos casos? (ico, ani, wav, mp3, avi)
Responder Con Cita
  #3  
Antiguo 07-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Deiv
...me parece que los Programas de Íconos recuperan otro tipo de dlls a los que se crea con Delphi...
Pues yo he probado con esa DLL dos de los que uso habituialmente (ResThief y ResHacker) y me recuperan los imágenes del interior perfectamente.

Cita:
Empezado por Deiv
¿Se realiza el mismo proceso para recuperar una DLL que tenga cargado un archivo ICO, ANI, WAV, MP3 y AVI?
Obviamente no, cada tipo se debe recuperar de una forma distinta.

Seguro que buscando un poco por internet encuentras infomación para recuperar:
* Cursores, Iconos y GIF, WAV y MP3, ...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 07-07-2006 a las 18:05:19.
Responder Con Cita
  #4  
Antiguo 10-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 22
Deiv Va por buen camino
Thumbs up

Tienes razón los Programas ResThief y ResHacker (que no los conocía) abren y leen normal las DLLs que contienen BitMaps. Entonces el camino que me quedaría para camuflarlos sería cambiar los nombres a mis DLLs? cosa que no sean muy llamativas, tal vez.

Me sugerieron también guardar en formato DAT, no se si es solo cambiar la extensión y ya.

Gracias por orientarme como sugerencia algunas páginas, me sirvió de mucho y voy a seguir investigando.

Ahora me compliqué más, encontré en algunas: DLL vs BPL.
Responder Con Cita
  #5  
Antiguo 10-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Si se trata de proteger las imagenes porque no las encriptas, una encriptacion sencilla, lo suficiente para desanimar a un posible fisgon.
Responder Con Cita
  #6  
Antiguo 10-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 22
Deiv Va por buen camino
Question

Encriptar 200 imágenes? (tabla periódica) ¿Cada una?

Perdón por lo novato pero es así?
Responder Con Cita
  #7  
Antiguo 10-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
No es tan difícil encriptar una imagen, puedes hacer un programita que encripte las 200 en un par de segundos. Aprovechando un poco de código que tenia por ahí te dejo una función para encriptar Bmps, no es una maravilla criptográfica pero lo suficiente para desanimar a los curiosos.

Código Delphi [-]
type
  Triple = array[1..3]of Byte;

procedure Cifrar(Imagen: TPicture; Clave: Longint);
var
  Bitmap: TBitmap;
  P: ^Triple;
  i, j: Integer;
begin
  RandSeed:= Clave;
  if not (Imagen.Graphic is TBitmap) then
  begin
    Bitmap:= TBitmap.Create;
    try
      Bitmap.Width:= Imagen.Width;
      Bitmap.Height:= Imagen.Height;
      Bitmap.Canvas.Draw(0,0,Imagen.Graphic);
      Imagen.Assign(Bitmap);
    finally
      Bitmap.Free;
    end;
  end;
  Imagen.Bitmap.PixelFormat:= pf24bit;
  for j:= 0 to Imagen.Bitmap.Height - 1 do
  begin
    P:= Imagen.Bitmap.ScanLine[j];
    for i:= 0 to Imagen.Bitmap.Width - 1 do
    begin
      P^[1]:= P^[1] xor Byte(Random(256));
      P^[2]:= P^[2] xor Byte(Random(256));;
      P^[3]:= P^[3] xor Byte(Random(256));
      inc(P);
    end;
  end;
end;

También te dejo el código en un zip listo para usar para que le eches un vistazo
Archivos Adjuntos
Tipo de Archivo: zip CriptoBmp.zip (3,9 KB, 28 visitas)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Futuro .NET, ¿bueno o malo? REHome Varios 0 15-11-2005 10:42:21
...bueno pero no te enojes... Jure Humor 0 12-11-2004 16:11:00
... lo bueno, lo malo y lo feo ... Jure Humor 2 26-03-2004 16:15:47
es bueno paradox para una red? maruenda Conexión con bases de datos 5 23-02-2004 17:15:50


La franja horaria es GMT +2. Ahora son las 21:48:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi