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

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

как у себя выдрать свойства 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


Наверх

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