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

Финал! Все ошибки устранены! Получить версию файла EXE/DLL

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

Как извлечь версию файла из EXE/DLL? Эта функция возвратит строку в формате n.n.n.n и также выдвигает значения в переменные, переданные по ссылке.

Примечание: nValue1,2,3,4 ДОЛЖНЫ БЫТЬ различные переменные, или функция не будет работать!


function GetFileVersion(const sFilename: String; 
      var nValue1,nValue2,nValue3,nValue4: Integer): String; 
var 
   pInfo,pPointer: Pointer; 
   nSize: DWORD; 
   nHandle: DWORD; 
   pVerInfo: PVSFIXEDFILEINFO; 
   nVerInfoSize: DWORD; 
begin 
   Result:='?.?.?.?'; 
   nValue1:=-1; 
   nValue2:=-1; 
   nValue3:=-1; 
   nValue4:=-1; 

   nSize:=GetFileVersionInfoSize(PChar(sFilename),nHandle); 
   if (nSize <>0) then begin 
     GetMem(pInfo,nSize); 
     try 
       FillChar(pInfo^,nSize,0); 

       if (GetFileVersionInfo(PChar(sFilename),nHandle,nSize,pInfo)) then begin 
         nVerInfoSize:=SizeOf(VS_FIXEDFILEINFO); 
         GetMem(pVerInfo,nVerInfoSize); 
         try 
           FillChar(pVerInfo^,nVerInfoSize,0); 
           pPointer:=Pointer(pVerInfo); 
           VerQueryValue(pInfo,'\',pPointer,nVerInfoSize); 
           nValue1:=PVSFIXEDFILEINFO(pPointer)^.dwFileVersionMS shr 16; 
           nValue2:=PVSFIXEDFILEINFO(pPointer)^.dwFileVersionMS and $FFFF; 
           nValue3:=PVSFIXEDFILEINFO(pPointer)^.dwFileVersionLS shr 16; 
           nValue4:=PVSFIXEDFILEINFO(pPointer)^.dwFileVersionLS and $FFFF; 

           Result:=IntToStr(nValue1)+'.'+IntToStr(nValue2)+'.'+
                    IntToStr(nValue3)+'.'+IntToStr(nValue4); 
         finally 
           FreeMem(pVerInfo,nVerInfoSize); 
         end; 
       end; 
     finally 
       FreeMem(pInfo,nSize); 
     end; 
   end; 
end; 

По материалам http://delphi.3000.com


 

Комментарии   

 
0 #1 Евгений 26.07.2017 17:26
Спасибо! Очень пригодилось.
Цитировать
 

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


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