Witam,
czy jest możliwość pobrania wersji programu (ustawionej w Project option -> Version Info) i wyświetlania jej jako np. labela na formie?
Pozdrawiam,
Marek
0
0
function GetFileVersion(Name: string): string;
var
InfoSize, VerSize, Wnd: longword;
VerBuf: Pointer;
FI: PVSFixedFileInfo;
VersionH, VersionL: integer;
VMajor, VMinor, VRelease, VBuild: string;
begin
VersionH := 0;
VersionL := 0;
InfoSize := GetFileVersionInfoSize(PChar(Name), Wnd);
if InfoSize <> 0 then
begin
GetMem(VerBuf, InfoSize);
try
if GetFileVersionInfo(PChar(Name), Wnd, InfoSize, VerBuf) then
if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
begin
VersionH := FI.dwFileVersionMS;
VersionL := FI.dwFileVersionLS;
end;
finally
FreeMem(VerBuf);
end;
VMajor := IntToStr(($FFFF0000 and VersionH) shr 16);
VMinor := IntToStr($0000FFFF and VersionH);
VRelease := IntToStr(($FFFF0000 and VersionL) shr 16);
VBuild := IntToStr($0000FFFF and VersionL);
Result := PChar(VMajor + '.' + VMinor + '.' + VRelease + '.' + VBuild);
end
else
Result := '';
end;
0
function GetAppVersion(FileName: String): String;
var
Info : PVSFixedFileInfo;
InfoSize : Cardinal;
nHwnd : DWORD;
BufferSize : DWORD;
Buffer : Pointer;
begin
Result := '';
BufferSize := GetFileVersionInfoSize(PChar(FileName), nHWnd);
GetMem(Buffer, BufferSize);
try
if GetFileVersionInfo(PChar(FileName), nHWnd, BufferSize,Buffer) then
if VerQueryValue(Buffer, '\', Pointer(Info), InfoSize) then
with Info^ do
Result := Format('%d.%d.%d', [HiWord(dwFileVersionMS), LoWord(dwFileVersionMS), LoWord(dwFileVersionLS)]);
finally
FreeMem(Buffer, BufferSize);
end;
end;
0
Dzięki!
Kombinowałem z jakimś atrybutem application, a nie pomyślałem o wyciągnięciu wersji z pliku exe...
Pozdrawiam,
Marek
0
Super działa, a jak wyciągnąć resztę danych z exe-ca, czyli Nazwa produktu, nazwa wewnętrzna, prawa, język.