На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Прочитать номер версии
      function FileVersion(AFileName:string): string;
      var
       szName: array[0..255] of Char;
       P: Pointer;
       Value: Pointer;
       Len: UINT;
       GetTranslationString:string;
       FFileName: PChar;
       FValid:boolean;
       FSize: DWORD;
       FHandle: DWORD;
       FBuffer: PChar;
      begin
       try
         FFileName := StrPCopy(StrAlloc(Length(AFileName) + 1), AFileName);
         FValid := False;
         FSize := GetFileVersionInfoSize(FFileName, FHandle);
         if FSize > 0 then
           try
             GetMem(FBuffer, FSize);
             FValid := GetFileVersionInfo(FFileName, FHandle, FSize, FBuffer);
           except
             FValid := False;
             raise;
           end;
         Result := '';
         if FValid then
           VerQueryValue(FBuffer, '\VarFileInfo\Translation', p, Len)
         else p := nil;
         if P <> nil then
           GetTranslationString := IntToHex(MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^))), 8);
         if FValid then
           begin
             StrPCopy(szName, '\StringFileInfo\' + GetTranslationString + '\FileVersion');
             if VerQueryValue(FBuffer, szName, Value, Len) then
               Result := StrPas(PChar(Value));
           end;
       finally
         try
           if FBuffer <> nil then FreeMem(FBuffer, FSize);
         except
         end;
         try
           StrDispose(FFileName);
         except
         end;
       end;
      end;


      В качестве параметра задать имя программы, если своей программы:

      FileVersion(Paramstr(0));

      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0168 ]   [ 17 queries used ]   [ Generated: 28.03.24, 18:10 GMT ]