![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия exe'шника [D6, WinXP]
DEM_s © (2005-03-15 14:30:00)Как взять версию exe'шника?
REA (2005-03-15 15:03:00) [1]Или так:
Procedure SetVersion;
Var
Size: DWORD;
Ver, sFlags: String;
Nomean: DWORD;
Len: UInt;
pFF: PVSFixedFileInfo;
Begin
If Version = '' Then
Try
Size := GetFileVersionInfoSize(PChar(Application.EXEName), NoMean);
SetLength(Ver, Size);
GetFileVersionInfo(PChar(Application.EXEName), 0, Size, @Ver[1]);
VerQueryValue(@Ver[1],'\'#0, Pointer(pFF), Len);
With pFF^ Do
Version:= IntToStr(dwFileVersionMS Shr 16) +'.'+
IntToStr(dwFileVersionMS And $FFFF)+'.'+
IntToStr(dwFileVersionLS Shr 16)+' build '+
IntToStr(dwFileVersionLS And $FFFF);
If ((pFF^).dwFileFlags And VS_FF_PRERELEASE)<>0 Then sFlags := 'Beta';
If ((pFF^).dwFileFlags And VS_FF_DEBUG)<>0 Then
Begin
If sFlags<>'' Then sFlags := sFlags + ', ';
sFlags := sFlags + 'Debug';
End;
If ((pFF^).dwFileFlags And VS_FF_SPECIALBUILD)<>0 Then
Begin
If sFlags<>'' Then sFlags := sFlags + ', ';
sFlags := sFlags + ' Special build';
End;
If sFlags<>'' Then Version := Version + ' ['+sFlags+']';
Except End;
End;
DEM_s (2005-03-15 14:34:00) [2]Спасибо
Slym (2005-03-15 14:33:00) [3]
function GetFileVersion(const FileName:string):string;
var
VerSize,Zero:LongWord;
VerPtr,pData: Pointer;
DataSize: LongWord;
begin
result:='';
Zero:=0;
VerSize:=GetFileVersionInfoSize(PChar(FileName),Zero);
if VerSize=0 then Exit;
GetMem(VerPtr, verSize);
try
if GetFileVersionInfo(Pchar(FileName),0,VerSize,VerPtr) then
if VerQueryValue(verPtr,'\\StringFileInfo\\041904E3\\FileVersion',pData,DataSize) then
SetString(result,PChar(pData),DataSize);
finally
FreeMem(verPtr);
end;
end;