Mep Sites - Dicas

Mep Sites: Dicas de Delphi - Capturando a versão de um executável

Utilize a seguinte função:

function GetBuildInfo(prog: String):String;
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
V1, V2, V3, V4: Word;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(prog),Dummy);
GetMem(VerInfo,VerInfoSize);
GetFileVersionInfo(PChar(prog),0,VerInfoSize,VerInfo);
VerQueryValue(VerInfo,'',Pointer(VerValue),VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo,VerInfoSize);
result := Copy(IntToStr(100 + v1),3,2) + '.' + Copy(IntToStr(100 + V2),3,2) + '.' + Copy(IntToStr(100 + V3),3,2) + '.' + Copy(IntToStr(100 + V4),3,2);
end;

Chame-a assim, por exemplo:

GetBuildInfo(Application.ExeName);

ou com um arquivo externo:

GetBuildInfo('C:\windows\notepad.exe');

Pode ser utilizada para DLLs que contenham dados sobre a versão, também.