Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Функции VER.DLL

Delphi , Файловая система , DLL и PlugIns

Функции VER.DLL

Это не в точности то, что вы ищите, но надеюсь, что это поможет. Я показываю информацию о версии в диалоговом окне "О программе", код приведен ниже. Блок StringFileInfo вы можете и не использовать, он необходим для осуществления простейшей проверки, вместо этого можно получить информацию из корневого блока (для дополнительной информации смотри структуру TVS_FIXEDFILEINFO в файле помощи по API).


procedure TAboutBox.FormCreate(Sender: TObject);
var
  VIHandle: LongInt;
  VSize: LongInt;
  VData: Pointer;
  VVers: Pointer;
  Len: Word;
  FileName: string;

const
  { Предустановленный набор символов U.S., если я правильно помню }
  Prefix = '\StringFileInfo\040904E4\';

  function GetVerValue(Value: string): string;
  var
    ItemName: string;
  begin
    ItemName := Prefix + Value + chr(0);
    Result := '';
    if VerQueryValue(VData, @ItemName[1], VVers, Len) then
      if Len > 0 then
      begin
        if Len > 255 then
          Len := 255; { "Обрезаем" любые длинные строки }
        Move(VVers^, Result[1], Len);
        Result[0] := Chr(Len);
      end;
  end;

begin
  FileName := Application.EXEName + chr(0);
  VSize := GetFileVersionInfoSize(@FileName[1], VIHandle);
  if VIHandle <> 0 then
  begin
    GetMem(VData, VSize);
    try
      if GetFileVersionInfo(@FileName[1], VIHandle, VSize, VData) then
      begin
        { В этом месте мы получаем значения из блока StringFileInfo,
        но точно также мы могли бы взять значения из корневого блока,
        используя VerQueryValue }

        ProductName.Caption := GetVerValue('ProductName');
        Version.Caption := GetVerValue('ProductVersion');
        Copyright.Caption := GetVerValue('LegalCopyright');
        Comments.Caption := GetVerValue('FileDescription');
      end;
    finally
      FreeMem(VData, VSize);
    end;
  end;
end;

Программный код на Delphi, который извлекает информацию о версии из файла VER.DLL и отображает ее в диалоговом окне "О программе". Код использует функции GetFileVersionInfoSize и GetFileVersionInfo для извлечения размера буфера информации о версии и копирования данных в указатель.

Функция GetVerValue используется для извлечения конкретных значений из буфера информации о версии, таких как имя продукта, номер версии, информация о авторских правах и описание файла. Извлеченные значения затем присваиваются меткам на диалоговом окне.

Разбивка кода:

  1. Обработчик события FormCreate для диалогового окна "О программе" - это место, где код извлекает информацию о версии.
  2. Переменная FileName содержит имя исполняемого файла, включая расширение.
  3. Переменная VSize хранит размер буфера информации о версии, полученный с помощью функции GetFileVersionInfoSize.
  4. Если переменная VIHandle не равна 0, то это означает, что буфер информации о версии существует, и код выделяет память для него с помощью GetMem.
  5. Функция GetFileVersionInfo копирует данные из файла в выделенную память.
  6. Функция GetVerValue извлекает конкретные значения из буфера информации о версии с помощью функции VerQueryValue.

Функция GetVerValue принимает строковое значение как входной параметр (например, 'ProductName') и возвращает соответствующее значение из буфера информации о версии. Если значение длиннее 255 символов, оно обрезается до 255 символов.

Извлеченные значения затем присваиваются меткам на диалоговом окне с помощью свойства Caption:

  • ProductName.Caption
  • Version.Caption
  • Copyright.Caption
  • Comments.Caption

В целом, этот код обеспечивает удобный способ извлечения информации о версии из исполняемого файла и отображения ее в диалоговом окне "О программе".

В статье описывается функция VER.DLL, которая позволяет получать информацию о версии программы в диалоговом окне 'О программе' и использовать ее для отображения наименования продукта, его версии, авторских прав и описания файла.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DLL и PlugIns ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-09 16:00:29/0.0051889419555664/1