![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как прочитать version information [D7, Win2k, WinXP]
elserpiente © (2007-08-23 10:36:00)как прочитать version information файла во время выполнения программы?
DVM (2007-08-23 10:39:00) [1]так же как и в любое другое время
function GetFullFileVersion : string;
Var j,w : Cardinal;
s : shortstring;
buf : pointer;
buf2 : pointer;
q : DWord;
vsinfo: ^VS_FIXEDFILEINFO;
mVer,
lVer,
rVer,
bVer,
flag : DWord;
begin
s := ParamStr(0) + #0;
j := GetFileVersionInfoSize(@s[1],w);
if j = 0 then Exit;
buf := Ptr(GlobalAlloc(GMEM_FIXED,j));
GetFileVersionInfo(@s[1], 0, j, buf);
VerQueryValue(buf, '\', buf2, q);
vsinfo := buf2;
mVer := vsInfo^.dwProductVersionMS div $FFFF;
lVer := vsInfo^.dwProductVersionMS mod $10000;
rVer := vsInfo^.dwProductVersionLS div $FFFF;
bVer := vsInfo^.dwProductVersionLS mod $10000;
flag := vsInfo^.dwFileFlags;
s := IntToStr(mVer) + '.' +
IntToStr(lVer) + '.' +
IntToStr(rVer) + '.' +
IntToStr(bVer);
if (flag and VS_FF_DEBUG) > 0 then s := s + ' debug ';
if (flag and VS_FF_PRERELEASE) > 0 then s := s + ' prerelease ';
if (flag and VS_FF_PRIVATEBUILD) > 0 then s := s + ' private ';
if (flag and VS_FF_SPECIALBUILD) > 0 then s := s + ' special ';
Result := s;
GlobalFree(Cardinal(buf));
end;