Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por CRIS
Con la aplicacion en curso si rula perfectamente, pero yo necesito que me devuelva la version de una aplicacion creada en VB que lleva su info version.
¿Tengo que entender que lo probaste con la aplicación creada con Visual Basic y no te funcionó? La función de arriba necesita de la ruta de un ejecutable, ¿probaste con la ruta del ejecutable cuya versión quieres obtener, o sea el que está hecho con Visual Basic?


Cita:
Empezado por Federico
Con la aplicacion en curso si rula perfectamente...
Pecando tal vez de pedante (nada más lejos de mi intención) creo que podría "traducirse" así: "He probado la función de más arriba pasando a esta como parámetro la ruta del archivo ejecutable de la aplicación que estoy llevando a cabo con Delphi y obtengo la información que se espera perfectamente". Bueno, eso creo, más o menos, que quiere decirse.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-10-2005 a las 14:26:39. Razón: Corrección del texto.
Responder Con Cita
  #2  
Antiguo 03-10-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Me funciona solo esto y gracias a los dos por ayudarme.

Código Delphi [-]
 procedure TForm1.SpeedButton1Click(Sender: TObject);
 
   function GetAppVersion:string;
   var
     Size, Size2: DWord;
     Pt, Pt2: Pointer;
   begin
     Size := GetFileVersionInfoSize(PChar (ParamStr (0)), Size2);
     if Size > 0 then
     begin
       GetMem (Pt, Size);
       try
         GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt);
         VerQueryValue (Pt, '\', Pt2, Size2);
         with TVSFixedFileInfo (Pt2^) do
         begin
           Result:= ' Ver '+
             IntToStr (HiWord (dwFileVersionMS)) + '.' +
             IntToStr (LoWord (dwFileVersionMS)) + '.' +
             IntToStr (HiWord (dwFileVersionLS)) + '.' +
             IntToStr (LoWord (dwFileVersionLS));
         end;
       finally
         FreeMem (Pt);
       end;
     end;
   end;
 
 begin
   label1.Caption:=GetAppVersion;
 end;

Última edición por dec fecha: 03-10-2005 a las 15:00:14. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #3  
Antiguo 03-10-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Solucionado gracias miles.

Código Delphi [-]
function GetFileVersion( AFileName : String ) : string;
var
  Size,
  Size2 : DWord;
  Pt,
  Pt2   : Pointer;
begin
  Size := GetFileVersionInfoSize(PChar(AFileName), Size2);
  if Size > 0 then
  begin
    GetMem(Pt, Size);
    try
      GetFileVersionInfo (PChar(AFileName), 0, Size, Pt);
      VerQueryValue (Pt, '', Pt2, Size2);
      with TVSFixedFileInfo (Pt2^) do
        Result:= Format('Versión %d.%d.%d.%d', [ HiWord(dwFileVersionMS),
                                                       LoWord(dwFileVersionMS),
                                                       HiWord(dwFileVersionLS),
                                                       LoWord(dwFileVersionLS)] );
    finally
      FreeMem (Pt);
    end;
  end;
end;

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 label1.Caption := GetFileVersion( 'C:\cris\gp4champ.exe' );

end;

end.
Responder Con Cita
  #4  
Antiguo 06-10-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Y si queremos pedirle descripcion, compañia y demas cosas??? como se haria.

Salu2.CRIS.
Responder Con Cita
  #5  
Antiguo 08-10-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Lo tengo casi solucionado el problema es que me da la descripcion y demas datos del archivo pero solo del archivo que lleva este codigo, no se como decirle una ruta para que lea los datos del archivo que yo quiera.

Código Delphi [-]
function  GetAppInfo(De:string):string;

  {Se pueden pedir los siguientes datos:
     CompanyName
     FileDescription
     FileVersion
     InternalName
     LegalCopyright
     OriginalFilename
     ProductName
     ProductVersion
  }

  type
    PaLeerBuffer = array [0..MAX_PATH] of char;

  var
   Size, Size2 : DWord;
   Pt, Pt2     : Pointer;
   Idioma      : string;

   begin
     Result:='';
     Size := GetFileVersionInfoSize(PChar (Application.Exename), Size2);
     if Size > 0 then
     begin
       GetMem (Pt, Size);
       GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt);
       {Obtenemos la cadena de translacion, requerida para obtener el resto
       de datos del Versioninfo}
       VerQueryValue( Pt, '\VarFileInfo\Translation',Pt2, Size2);
       Idioma:=IntToHex( DWord(Pt2^) ,8 );
       {Le damos la vuelta (Es windows, que quieres...}
       Idioma:=Copy(Idioma,5,4)+Copy(Idioma,1,4);

       {Pedimos la info requerida...}
       VerQueryValue( Pt,
                      Pchar('\StringFileInfo\'+
                      Idioma+'\'+
                      De),
                      Pt2, Size2);
       if Size2 > 0 then
       begin
         {Y la devolvemos}
         Result:=Copy(PaLeerBuffer(Pt2^),1,Size2);
       end else
         raise Exception.Create( 'No existe esa informacion en este ejecutable'+
                                 #13+
                                 'There are not this info in this executable');
       FreeMem (Pt);
     end else
       raise exception.Create ( 'Lo siento, no hay VersionInfo disponible '+
                                'en este ejecutable.'+#13+
                                'Sorry there are not VersionInfo available'+
                                'in this executable.');
   end;
{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
label1.Caption := GetAppInfo ('FileDescription');
end;


Sabeis como y donde poner la ruta del archivo??

Salu2.CRIS.
Responder Con Cita
  #6  
Antiguo 09-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sustituye en el código tanto "Application.ExeName" como "ParamStr(0)" por la ruta del archivo de que quieras obtener la información. Podrías, en todo caso, tratar de adaptar el código de forma que pudieras llamar a la función indicando la ruta del ejecutable en cuestión, así como la información que precises obtener. De otra manera te será, en mi opinión, complicado utilizar dicho código.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 09-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

CRIS, preparé en base al código de más arriba un sencillo componente que tal vez pueda resultar de tu interés, o, a lo menos, ofrecerte alguna idea. Lo encontrarás dentro del paquete "DecComp" que puedes encontrar aquí mismo. Le llamé "TInfoExe" y en su código fuente te mencioné a modo de agradecimiento por darme la idea para llevarlo a cabo.
__________________
David Esperalta
www.decsoftutils.com
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


La franja horaria es GMT +2. Ahora son las 17:47:02.


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