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 28-07-2023
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Como obtener metadatos de un exe

Hola a todos

Quisiera obtener los metadatos de un archivo .exe, en especifico el Nombre del Producto y la version.

Estoy usando delphi XE7, probé algunas soluciones que encontré:

- Con TFileVersionInfo, pero no funcionan en XE7

- Con:

...
GetFileVersionInfo(PChar(FileName), 0, InfoSize, VerInfo)
...
VerQueryValue(VerInfo, '\StringFileInfo\040904B0\ProductName', Pointer(VerValue), VerValueSize)
...

pero no funciona en todos los casos

Alguien tiene alguna solucion que funcione en todos los casos
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 28-07-2023
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.275
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
Esto lo había mirado hace tiempo:
https://www.ajpdsoft.com/modules.php...etails&lid=127

Está la explicación y puedes descargar código fuente y un proyecto que te obtiene esta información (a ver si es lo necesitas) :



Lo he probado en Delphi 11 y funciona perfectamente.
__________________
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 28-07-2023
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.275
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 JoAnCa Ver Mensaje
pero no funciona en todos los casos

Habría que saber qué casos son los que no te funcionan.
__________________
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
  #4  
Antiguo 28-07-2023
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 19
identsoft Va por buen camino
Si lo que quieres es ver la versión del ejecutable, te pongo una función que devuelve dicha versión.
Esta función, creo que la saqué del club delphi ( o de alguno de sus miembros).
Hay que pasarle como parámetro la ruta donde esté el ejecutable.

Código Delphi [-]
function TfrmMain.VersionExe(const ruta: string) : string;
var
  Pt, Pt2: Pointer;
  Size, Size2: DWord;
  ruta_aux : string;
begin
  Result := '';
  ruta_aux := ruta + 'NOMBRE DEL EJECUTABLE.EXE';
  if not FileExists(ruta_aux) then Exit;
  Size := GetFileVersionInfoSize(PChar(ruta_aux), Size2);
  if (Size > 0) then begin
    GetMem(Pt, Size);
    try
      GetFileVersionInfo(PChar(ruta_aux), 0, Size, Pt);
      VerQueryValue (Pt, '\', Pt2, Size2);
      with TVSFixedFileInfo (Pt2^) do begin
        Result :=
        IntToStr(HiWord(dwFileVersionMS))+'.'+
        IntToStr(LoWord(dwFileVersionMS))+'.'+
        IntToStr(HiWord(dwFileVersionLS))+'.'+
        IntToStr(LoWord(dwFileVersionLS));
      end;
    finally
      FreeMem(Pt);
    end;
  end;
end;

Espero que te sirva
Saludos
Responder Con Cita
  #5  
Antiguo 28-07-2023
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Esto lo había mirado hace tiempo:
https://www.ajpdsoft.com/modules.php...etails&lid=127

Está la explicación y puedes descargar código fuente y un proyecto que te obtiene esta información (a ver si es lo necesitas) :



Lo he probado en Delphi 11 y funciona perfectamente.
Muchas gracias por la respuesta.
Ahora que lo veo, recuerdo que una vez tambien lo habia visto, pero parece que mi memoria ya no esta buena jejeje
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #6  
Antiguo 28-07-2023
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por identsoft Ver Mensaje
Si lo que quieres es ver la versión del ejecutable, te pongo una función que devuelve dicha versión.
Esta función, creo que la saqué del club delphi ( o de alguno de sus miembros).
Hay que pasarle como parámetro la ruta donde esté el ejecutable.

Código Delphi [-]
function TfrmMain.VersionExe(const ruta: string) : string;
var
  Pt, Pt2: Pointer;
  Size, Size2: DWord;
  ruta_aux : string;
begin
  Result := '';
  ruta_aux := ruta + 'NOMBRE DEL EJECUTABLE.EXE';
  if not FileExists(ruta_aux) then Exit;
  Size := GetFileVersionInfoSize(PChar(ruta_aux), Size2);
  if (Size > 0) then begin
    GetMem(Pt, Size);
    try
      GetFileVersionInfo(PChar(ruta_aux), 0, Size, Pt);
      VerQueryValue (Pt, '\', Pt2, Size2);
      with TVSFixedFileInfo (Pt2^) do begin
        Result :=
        IntToStr(HiWord(dwFileVersionMS))+'.'+
        IntToStr(LoWord(dwFileVersionMS))+'.'+
        IntToStr(HiWord(dwFileVersionLS))+'.'+
        IntToStr(LoWord(dwFileVersionLS));
      end;
    finally
      FreeMem(Pt);
    end;
  end;
end;

Espero que te sirva
Saludos
Gracias por la respuesta, para la version tambien me sirve, pero tambien necesito el nombre del producto.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #7  
Antiguo 28-07-2023
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Habría que saber qué casos son los que no te funcionan.
En los metodos que probé, que decia que no funcionaba siempre, en los que no devolvia nada fueron en estos archivos exe que probé:
draw.io, adobe acrobat y WPS

Con la solucion que me diste de AjpdSoft, funciona en todos los casos que probé
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #8  
Antiguo 28-07-2023
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Revisando el codigo de AjpdSoft, veo el por que no me funcionaba el codigo que yo tenia.
El problema esta en el idioma, que en mi codigo estaba fijo, y si no coincidia con el del archivo, no daba ningun resultado.

En el codigo de AjpdSoft, se usa el mismo metodo, pero se obtiene el idioma del archivo primero, para despues poder pasarselo como parametro, y asi el idioma sera el correcto.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #9  
Antiguo 31-07-2023
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.275
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 JoAnCa Ver Mensaje
En el codigo de AjpdSoft, se usa el mismo metodo, pero se obtiene el idioma del archivo primero, para despues poder pasarselo como parametro, y asi el idioma sera el correcto.

__________________
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
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
Metadatos PDF PepeLolo Varios 0 19-01-2021 13:25:25
Como obtener metadatos de un archivo de video JoAnCa Varios 10 05-05-2020 20:56:20
Extrayendo metadatos cesarsoftware Firebird e Interbase 11 26-11-2012 22:32:19
¿Cómo versionar el esquema o los metadatos de base de datos? erasmo_ga Firebird e Interbase 4 08-12-2011 03:08:05
Extraer metadatos RONPABLO Firebird e Interbase 2 22-10-2004 20:04:56


La franja horaria es GMT +2. Ahora son las 20:58:28.


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