[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