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

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

Версия своего приложения [D5, NT4, Win2k, WinXP]


Solden ©   (2004-08-20 12:37:00) 

Подскажите, как добраться до информации о версии создаваемого приложения? Или это делается через получение инфы об exe-шнике?
Если да то как?
Заранее благодарен.


Solden   (2004-08-20 13:10:00) [1]

Спасибо, Семен Сорокин © .


Iconka   (2004-08-20 12:39:00) [2]

Чуть ниже смотри
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092904126&n=0&web=1


Семен Сорокин   (2004-08-20 12:39:00) [3]

procedure GetVersionAttributes(Name: String; var ACompany, ADescription, AComment: String);
 type
   PVerLang = ^TVerLang;
   TVerLang = packed record
     Charset : Word;
     LangID  : Word;
   end;
 var
     VerInfoSize : DWord;
     dummy       : DWord;
     VerInfo : Pointer;
     VSFixed : PVSFixedFileInfo;
     VSFixedSize : DWORD;
     VTranslation : PVerLang;
     VTRSize : DWORD;
     LangID : String;
     VerKey : String;
     VerDesc : PChar;
     VerDescSize : DWORD;
     VerCompany : PChar;
     VerCompanySize : DWORD;
     VerComment : PChar;
     VerCommentSize : DWORD;
     Status : LongBool;
 begin
  ACompany := '<Not available>';
  ADescription := '<Not available>';
  AComment := '';
  VerInfoSize := GetFileVersionInfoSize(PChar(Name), dummy);
  if (VerInfoSize = 0) then
    Exit;
  GetMem( VerInfo, VerInfoSize );
  try
    Status := GetFileVersionInfo(PChar(Name), 0, VerInfoSize, VerInfo);
    if NOT Status then
      Exit;
    VerQueryValue( VerInfo, '\', Pointer(VSFixed), VSFixedSize);
    VerQueryValue( VerInfo, '\VarFileInfo\Translation', Pointer(VTranslation), VTRSize);
    if (VTRSize = 4) then begin
      LangID := Format('%.4x%.4x', [VTranslation^.CharSet, VTranslation^.LangID]);
      VerKey := '\StringFileInfo\'+LangID+'\FileVersion';//Description';
      Status := VerQueryValue (VerInfo,PChar(VerKey), Pointer(VerDesc), VerDescSize);
      if (Status) AND (VerDescSize <> 0) then
        ADescription := VerDesc;
      VerKey := '\StringFileInfo\'+LangID+'\CompanyName';
      Status := VerQueryValue (VerInfo,PChar(VerKey), Pointer(VerCompany), VerCompanySize);
      if (Status) AND (VerCompanySize <> 0) then
        ACompany := VerCompany;
      VerKey := '\StringFileInfo\'+LangID+'\Comments';
      Status := VerQueryValue (VerInfo,PChar(VerKey), Pointer(VerComment), VerCommentSize);
      if (Status) AND (VerCommentSize <> 0) then
        AComment := VerComment;
    end;
  finally
    FreeMem(VerInfo, VerInfoSize);
  end;
 end;


Наверх

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