Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли вытащить версию 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо