Карта сайтаСсылкиКонтакты

Как получить информацию о приложении

PDF Печать
Статьи

Как Вы узнаете, все эти данные могут быть определены в IDE Delphi: Project -> Options -> VersionInfo

Это позволит нам получить остальную часть данных, которые могут быть определены: Описание файла, Внутреннее имя файла, Компания и т.д.

Сначала мы должны получить шестнадцатиричное число, которое соответствует определению языка, на котором компилировали приложение. Как только мы получим этот факт, мы сможем получить остальную информацию.


procedure TForm1.Button1Click(Sender: TObject);

function  GetAppInfo(De:string):string;

{Мы сможем запросить следующие данные:
    CompanyName 
    FileDescription 
    FileVersion 
    InternalName 
    LegalCopyright 
    OriginalFilename 
    ProductName 
    ProductVersion }

type
   PaLeerBuffer = array [0..MAX_PATH] of char;

var
  Size, Size2 : DWord;
  Pt, Pt2     : Pointer;
  Idioma      : string;

  begin
    Result:='';
    Size := GetFileVersionInfoSize(PChar (Application.Exename),
                                   Size2);
    if Size > 0 then
    begin
      GetMem (Pt, Size);
      GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt);
      {Получить строку, требуемую для получения остальной части VersionInfo}

      VerQueryValue( Pt, '\VarFileInfo\Translation', Pt2, Size2); 
      Idioma:=IntToHex( DWord(Pt2^) ,8 );
      Idioma:=Copy(Idioma, 5, 4) + Copy(Idioma, 1, 4);

      {Запрашиваем требуемую информацию...}
      VerQueryValue( Pt, 
                     Pchar('\StringFileInfo\' + 
                     Idioma + '\' + 
                     De),
                     Pt2, Size2);
      if Size2 > 0 then
      begin
        {возвращаем}
        Result:=Copy(PaLeerBuffer(Pt2^), 1, Size2); 
      end else
        raise Exception.Create( 'No existe esa informacion en este 
                                 ejecutable' + 
                                #13+ 
                                'There are not this info in this 
                                 executable');
      FreeMem (Pt);
    end else
      raise exception.Create ( 'Lo siento, no hay VersionInfo 
                                disponible ' + 
                               'en este ejecutable.' + #13 + 
                               'Sorry there are not VersionInfo 
                                available' + 
                               'in this executable.');
  end;

begin
  Form1.Caption:=Form1.Caption + ' ' + GetAppInfo('FileDescription');
end;

 

Добавить комментарий


Защитный код
Обновить