На главную

Читать информацию о версии файла

Программа, приведенная ниже считывает информацию о версии выбранной программы и выводит в Memo:

procedure TForm1.BitBtn1Click(Sender: TObject);
const
  //Количество ключей
  InfoNum = 10;
  //Список имен интересующих нас ключей
  InfoStr: array[1..InfoNum] of string = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments');
var
  S: string;
  n, Len, i: DWORD;
  Buf: PChar;
  Value: PChar;
begin
 if OpenDialog1.Execute then
 begin
 //Имя фала
  S:=OpenDialog1.FileName;
 //Размер занимаемый иформацией о версии
  n := GetFileVersionInfoSize(PChar(S), n);
  if n > 0 then
  begin
   //Выделяю место под информацию в памяти
    Buf := AllocMem(n);
   //Печатаю: 
   //имя файла
    Memo1.Lines.Add(S);
   //размер, занимаемый информацией
    Memo1.Lines.Add('VersionInfoSize = ' + IntToStr(n));
   //Копирую информацию о версии в буфер
    GetFileVersionInfo(PChar(S), 0, n, Buf);    
    for i := 1 to InfoNum do
     //Читаю значение ключа
     //*  Примечание: 04190E3 - это шестнадцатеричный код кодовой страницы для русского языка
     //*  если шестнадцатеричный код будет указан неправильно, то значения ключей найдены не будут
      if VerQueryValue(Buf, PChar('StringFileInfo\041904E3\' + InfoStr[i]), Pointer(Value), Len) then
       //Печатаю значения ключа
        Memo1.Lines.Add(InfoStr[i] + ' = ' + Value);
    //Освобождаю память буфера
    FreeMem(Buf, n);
  end
  else
    Memo1.Lines.Add('Информации по версии не найдено');
 end;
end;

Подробнее по структуре информации о версии файла, опции, ключи и их интерпретация см. Информация о версии файла.


Список литературы:

  1. Delphi 7 Help


Hosted by uCoz