Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Функции 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;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS