![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли вытащить версию exe файла? [D7, Win95/98, WinME, NT4, Win2k, WinXP]
JaoDa © (2004-10-22 14:11:00)Имеется две программы которые работают в паре. У каждой из них много версий - некоторые их которых не совместимы между собой.
Цель: при каждом запуске любой из них - проверять совместимость соседней.
Можно ли как-нибудь из одной вытащить версию другой?
JaoDa (2004-10-22 14:49:00) [1]Спасибо, всем! Полагаю дальше разберусь...
han_malign (2004-10-22 14:28:00) [2]
program FileVer;
{$APPTYPE CONSOLE}
uses Windows,Utils;
var
_s,_sName: string;
sz,len: DWORD;
i: integer;
_h: THandle;
_p,_pV: pointer;
begin
_sName:=ParamStr(1);
sz:=GetFileVersionInfoSize(PChar(_sName),_h);
if(sz=0)then Writeln('GetFileVersionInfoSize '+WinErrMsg(GetLastError,true))
else begin
Writeln('FileVersionInfoSize= '+IntStr(sz));
GetMem(_pV,sz);
if(GetFileVersionInfo(PChar(_sName),_h,sz,_pV))then begin
if(VerQueryValue(_pV,'\',_p,len))then begin
with(TVSFixedFileInfo(_p^))do begin
Writeln('Signature ='+HexDWord(dwSignature ));
Writeln('StrucVersion ='+HexDWord(dwStrucVersion ));
Writeln('FileVersionMS ='+HexDWord( dwFileVersionMS ));
Writeln('FileVersionLS ='+HexDWord( dwFileVersionLS ));
Writeln('ProductVersionMS='+HexDWord( dwProductVersionMS));
Writeln('ProductVersionLS='+HexDWord( dwProductVersionLS));
Writeln('FileFlagsMask ='+HexDWord(dwFileFlagsMask ));
Writeln('FileFlags ='+HexDWord(dwFileFlags ));
Writeln('FileOS ='+HexDWord(dwFileOS ));
Writeln('FileType ='+HexDWord(dwFileType ));
Writeln('FileSubtype ='+HexDWord(dwFileSubtype ));
Writeln('FileDateMS ='+HexDWord(dwFileDateMS ));
Writeln('FileDateLS ='+HexDWord(dwFileDateLS ));
end;
end else Writeln('\ Fail');
if(VerQueryValue(_pV,'\VarFileInfo\Translation',_p,len))then begin
for i:=0 to Len div 2 -1 do begin
Writeln(IntStr(Word(_p^)));
inc(DWORD(_p),2);
end;
end else Writeln('\VarFileInfo\Translation Fail');
end else Writeln('GetFileVersionInfo '+WinErrMsg(GetLastError,true));
FreeMem(_pV);
end;
end.
snake1977 (2004-10-22 14:22:00) [3]если стоит RX
то тама есть юнит
RxVerInf
подключаеш и пишеш
With TVersionInfo.Create(FileName) do
Begin
Label1.Caption:=FileVersion;
End;
Гаврила (2004-10-22 14:18:00) [4]Можно
см. GetFileVersionInfo