![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как у себя выдрать свойства EXE ?
ДжекиМайер © (2007-03-07 19:58:00)интересует версия программы в string загрузить
RASkov (2007-03-07 20:48:00) [1]Или найти модуль RxVerInf; входит в RxLib.
Много чего еще можно вытащить из "Версии программы".
DVM (2007-03-07 20:37:00) [2]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;
RASkov (2007-03-07 20:24:00) [3]> [0] ДжекиМайер (07.03.07 19:58)
Не мое:
function CurrentFileInfo(NameApp: string): string;
var
dump: DWORD;
size: integer;
buffer: PChar;
VersionPointer, TransBuffer: PChar;
Temp: integer;
CalcLangCharSet: string;
begin
size := GetFileVersionInfoSize(PChar(NameApp), dump);
buffer := StrAlloc(size+1);
try
GetFileVersionInfo(PChar(NameApp), 0, size, buffer);
VerQueryValue(buffer, '\VarFileInfo\Translation', pointer(TransBuffer),
dump);
if dump >= 4 then
begin
temp:=0;
StrLCopy(@temp, TransBuffer, 2);
CalcLangCharSet:=IntToHex(temp, 4);
StrLCopy(@temp, TransBuffer+2, 2);
CalcLangCharSet := CalcLangCharSet+IntToHex(temp, 4);
end;
VerQueryValue(buffer, pchar('\StringFileInfo\'+CalcLangCharSet+
'\'+'FileVersion'), pointer(VersionPointer), dump);
if (dump > 1) then
begin
SetLength(Result, dump);
StrLCopy(Pchar(Result), VersionPointer, dump);
end
else
Result := '0.0.0.0';
finally
StrDispose(Buffer);
end;
end;
Германн (2007-03-07 20:08:00) [4]Надоело уже повторять. Последний раз повторяю:
1.GetFileVersionInfoSize
2.GetFileVersionInfo
3.VerQueryValue