Как узнать версию программы?

Previous  Top  Next

    
 

 

 

Code:

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));

 

©Drkb::03140

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)

Взято с Vingrad.ru http://forum.vingrad.ru