[Lazarus] How to get "external" FileVersion

Antonio Fortuny a.fortuny at sitasoftware.lu
Wed Mar 7 15:46:38 CET 2012


works for Windows, not yet rewritten for LINUX.

function ReadVersionInfo(const sProgram: string; Out vv: PTVersion) 
:Boolean;
var
   Info:       PVSFixedFileInfo;
   InfoSize:   Cardinal;
   nHwnd:      DWORD;
   BufferSize: DWORD;
   Buffer:     Pointer;
begin
   ZeroMemory(Info, SizeOF(PVSFixedFileInfo));
   vv := new(PTVersion);
   InfoSize := 0;
   nHwnd := 0;
   with vv^ do begin
     Major:= -1;
     Minor := 0;
     Release := 0;
     Build := 0;
   end;
   Result := False; //no version info at all in the file
   BufferSize := GetFileVersionInfoSize(pchar(sProgram), nHWnd); {Get 
buffer size}
   if BufferSize <> 0 then begin //if zero, there is no version info
     Buffer := nil;
     ReAllocMem(Buffer, BufferSize+1);
     //GetMem( Buffer, BufferSize); //allocate buffer memory
     try
       if GetFileVersionInfo(PChar(sProgram),nHWnd,BufferSize,Buffer) 
then begin  // got version info
         if VerQueryValue(Buffer, PChar('\'), Pointer(Info), InfoSize) 
then begin   //got root block version information
           with vv^ do begin
             Major := HiWord(Info^.dwFileVersionMS); //extract major version
             Minor := LoWord(Info^.dwFileVersionMS); //extract minor version
             Release := HiWord(Info^.dwFileVersionLS); //extract release 
version
             Build := LoWord(Info^.dwFileVersionLS); //extract build version
           end;
           Result := True;
         end
       end
     finally
       ReAllocMem(Buffer, 0);
       //FreeMem(Buffer, BufferSize); //release buffer memory
     end
   end;
end;


Le 07/03/2012 15:35, Kjow a écrit :
> Hi all,
>
> I need to get the build number of an external program, but I don't
> know how to do.
>
> "vinfo.pas" method
> (http://lists.lazarus.freepascal.org/pipermail/lazarus/2010-July/054335.html)
> works very well for the program itself... but how can I read the build
> number of an other file exe?
>
> Thank you!
> Kjow
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>






More information about the Lazarus mailing list