Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-08-2013
Caroso Caroso is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Exclamation Extraer icono de archivo .exe

Hola compañeros del foro...
Tengo una consulta si alguien la puede responder... como se puede obtener el icono de un ejecutable (.exe)...
Ya eh intentado aplicar todas las formas que muestran pero todas me devuelven este resultado: 㩃停潲牧浡䘠汩獥䕜卍䥜⁂慍慮敧屲䉉慍慮敧⹲硥e奴皔὚묁쭨%὚묁 en ves del nombre del archivo o ruta del mismo...

Eh probado el ultimo obteniendo el mismo resultado... muchas gracias... Trabajo con Delphi 2010 en Windows 7...

Link: http://www.clubdelphi.com/foros/arch...hp?t-1655.html
Responder Con Cita
  #2  
Antiguo 14-08-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.271
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
Una cosa es extraer el icono de un ejecutable y otra, extraer o conocer el path de un icono asociado a un tipo de archivo.
¿Exactamente qué es lo que necesitas?

Según el título parece que lo primero, pero según tus comentarios (nombre del archivo o ruta) parece que lo segundo...
__________________
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.
Responder Con Cita
  #3  
Antiguo 14-08-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Caroso,

Cita:
Empezado por Caroso
...como se puede obtener el icono de un ejecutable...
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
   FileIcons = 'C:\Windows\System32\Shell32.dll';

var
   Icon : TIcon;
   Image : TImage;
   NumberOfIcons, i : Integer;

begin

   Icon := TIcon.Create;
   Image := TImage.Create(Self);

   try

      // Obtiene el número de Icons del archivo
      NumberOfIcons := ExtractIcon(Handle, PChar(FileIcons), UINT(-1));

      // Extrae todos los Icons del archivo y los salva a disco
      for i := 0 to NumberOfIcons - 1  do
      begin
         Icon.Handle := ExtractIcon(Handle, PChar(FileIcons), i);
         Image.Picture.Assign(Icon);
         Image.Picture.SaveToFile(ExtractFilePath(Application.ExeName) + 'Icon-' + IntToStr(i) + '.ico');
      end;

   finally

      Icon.Free;
      Image.Free;

   end;

end;
El código anterior extrae por medio de la API ExtractIcon todos los Icons del archivo referenciado en FileIcons y los salva a disco.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 14-08-2013 a las 18:43:20.
Responder Con Cita
  #4  
Antiguo 14-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Caroso.

Agregando otra opción a la de nlsgarcia, también podes obtener el contenido del ícono de un ejecutable usando la función PrivateExtractIcons.

Ejemplo:
Código Delphi [-]
...
implementation

function PrivateExtractIcons(lpszFile: PChar; nIconIndex, cxIcon, cyIcon: integer;
     phicon: PHANDLE; piconid: PDWORD; nicon, flags: DWORD): DWORD;
     stdcall ; external 'user32.dll' name 'PrivateExtractIconsA';

procedure TForm1.Button1Click(Sender: TObject);
var
 hndIcon : THandle;
 idIcon  : DWORD;
 aIcon   : TIcon;
begin
  if OpenDialog1.Execute then
    if PrivateExtractIcons(PChar(OpenDialog1.FileName),0,16,16,@hndIcon,@idIcon,1,LR_LOADFROMFILE) <> 0 then
    try
      aIcon := TIcon.Create;
      try
        aIcon.Handle := hndIcon;
        aIcon.SaveToFile(ExtractFilePath(OpenDialog1.FileName) + 'EXE_ICON.ICO');
      finally
        aIcon.Free;
      end;
    finally
      DestroyIcon(hndIcon);
    end;
end;
...
Pero como menciona Neftali, no está claro en tu mensaje si lo que deseas obtener es la imágen del ícono o la ruta.
Ahora si lo que buscas es obtener la ruta al archivo .ico que originalmente cargó el ejecutable, la respuesta es: No es posible.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 15-08-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Caroso,

Esta es una variante basada en el código de los Msgs #3 y #4:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   Icon: TIcon;
   OpenDialog : TOpenDialog;

begin

   OpenDialog := TOpenDialog.Create(Self);
   Icon := TIcon.Create;

   if OpenDialog.Execute then
   try

      // Extrae el Primer Icon del Archivo Seleccionado
      Icon.Handle := ExtractIcon(Handle, PChar(OpenDialog.FileName), 0);
      Icon.SaveToFile(ExtractFilePath(Application.ExeName) + 'IconFile' + '.ico');

   finally

      Icon.Free;
      OpenDialog.Free;

   end;

end;
Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 15-08-2013
Caroso Caroso is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Smile Muchas gracias

Cita:
Empezado por nlsgarcia Ver Mensaje
Caroso,

Esta es una variante basada en el código de los Msgs #3 y #4:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   Icon: TIcon;
   OpenDialog : TOpenDialog;

begin

   OpenDialog := TOpenDialog.Create(Self);
   Icon := TIcon.Create;

   if OpenDialog.Execute then
   try

      // Extrae el Primer Icon del Archivo Seleccionado
      Icon.Handle := ExtractIcon(Handle, PChar(OpenDialog.FileName), 0);
      Icon.SaveToFile(ExtractFilePath(Application.ExeName) + 'IconFile' + '.ico');

   finally

      Icon.Free;
      OpenDialog.Free;

   end;

end;
Espero sea útil

Nelson.
Muy bueno el codigo Nelson... muchas gracias me funciona de 10... y Muchas gracias a todos los demás por haber compartido sus conocimientos con los demas... un saludo y abrazo
Responder Con Cita
  #7  
Antiguo 16-08-2013
blackx5n blackx5n is offline
Miembro
 
Registrado: feb 2008
Posts: 51
Poder: 17
blackx5n Va por buen camino
Hay alguna forma de extraer el icono de cualquier archivo sin que este sea un *.exe

He probado estos ejemplos y funciona pero algunos iconos me salen de color gris, no salen igual al icono original del programa.
Responder Con Cita
  #8  
Antiguo 16-08-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.271
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 blackx5n Ver Mensaje
Hay alguna forma de extraer el icono de cualquier archivo sin que este sea un *.exe
¿Qué tipo de archivos?
En ese caso, tal vez debas primero acceder a la aplicación asociada por defecto para abrirla y luego extraer el icono asociada a esta.
Por ejemplo, los ficheros .PAS, no contienen icono, pero sí visualizan uno.

Si quieres extraer ese icono debes seguir este procedimiento.

¿Es a esto a lo que te refieres?
__________________
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.
Responder Con Cita
  #9  
Antiguo 16-08-2013
blackx5n blackx5n is offline
Miembro
 
Registrado: feb 2008
Posts: 51
Poder: 17
blackx5n Va por buen camino
Si me referia a eso, el ejemplo que indicas ilustra perfectamente lo que preguntaba.

Era la duda que tenia por ejemplo si tengo un archivo *.pdf y este tiene un Icono y la aplicacion contiene un Icono diferente al archivo.

Los iconos como el bloc de notas, carpetas, papelera de reciclaje, etc estos estan ligados a un archivo *.dll mas concretamente shell32.dll en el caso de windows 7 y tendria que abrir este archivo dll y extraer los iconos.

Con tu respuesta me aclaras la duda que tenia, gracias Neftali
Responder Con Cita
Respuesta



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
extraer informacion de un archivo .txt richy08 PHP 8 16-10-2010 06:17:32
Extraer el texto de un archivo UTF-8 ixMike Varios 0 10-10-2006 19:31:45
Extraer el icono de un archivo dec Trucos 0 30-06-2006 23:53:43
no carga icono de un archivo de recursos Patricio Gráficos 0 10-02-2006 14:37:15
extraer un icono gemma Varios 10 28-06-2003 11:45:26


La franja horaria es GMT +2. Ahora son las 01:42:09.


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