Ver Mensaje Individual
  #1  
Antiguo 16-11-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Crear resource icon por código

Trato de crear por código un resource que contenga un icono, o modificar el de un ejecutable o dll para añadir un icono.

Las API:
FindResource
LoadResource
LockResource
BeginUpdateResource
UpdateResource
EndUpdateResource

Me permiten leer un resource de un archivo (.exe o dll) y modificarlo para luego escribir en disco el archivo modificado.

He conseguido esto, es decir, leer un resource de un archivo (.exe o dll), y añadírle el icodo del mismo a otro archivo. Lo que no consigo es añadir un icono extraido de un icono.ico, el HRSRC no se corresponde con el Handle de un icono. He escrito el mismo en un archivo y me he dado cuenta de que es "casi el icono", me falta conocer algo que podría ser la cabecera del .ico.

Lo que quiero, si no me explico bien es convertir un archivo.ico a una imagen en memoria del tipo HRSRC para incluirlo como un recurso en un ejecutable o dll. Intuyo que debe existir una API, pero no la encuentro.

Un poco de código:

Código:
HICON hIcon; //con mi icono leido del archivo.icon o de lo que sea.
HRSRC hResIcon;

hResIcon = Convertir_Icon_a_Recurso(hIcon); // Esta es la questión

BYTE *lpResLock = (BYTE*)LockResource(hResIcon);

// Abrir el fichero donde añadir el icono.
HANDLE hUpdateRes = BeginUpdateResource(DestinoExe, FALSE);
if (hUpdateRes != NULL){
    // Actualizar el resource destino
    if(UpdateResource(hUpdateRes,     
       RT_ICON,                 
       MAKEINTRESOURCE(1),
       MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), 
       lpResLock,                   
       SizeofResource)!=FALSE)
       {
             // Escribir los cambios y cerrar.
             EndUpdateResource(hUpdateRes, FALSE);
      }
}
Gracias.

Saludos.
Responder Con Cita