Как получить информацию о приложении
Сначала мы должны получить шестнадцатиричное число, которое соответствует определению языка, на котором компилировали приложение. Как только мы получим этот факт, мы сможем получить остальную информацию.
procedure TForm1.Button1Click(Sender: TObject); function GetAppInfo(De:string):string; {Мы сможем запросить следующие данные: CompanyName FileDescription FileVersion InternalName LegalCopyright OriginalFilename ProductName ProductVersion } type PaLeerBuffer = array [0..MAX_PATH] of char; var Size, Size2 : DWord; Pt, Pt2 : Pointer; Idioma : string; begin Result:=''; Size := GetFileVersionInfoSize(PChar (Application.Exename), Size2); if Size > 0 then begin GetMem (Pt, Size); GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt); {Получить строку, требуемую для получения остальной части VersionInfo} VerQueryValue( Pt, '\VarFileInfo\Translation', Pt2, Size2); Idioma:=IntToHex( DWord(Pt2^) ,8 ); Idioma:=Copy(Idioma, 5, 4) + Copy(Idioma, 1, 4); {Запрашиваем требуемую информацию...} VerQueryValue( Pt, Pchar('\StringFileInfo\' + Idioma + '\' + De), Pt2, Size2); if Size2 > 0 then begin {возвращаем} Result:=Copy(PaLeerBuffer(Pt2^), 1, Size2); end else raise Exception.Create( 'No existe esa informacion en este ejecutable' + #13+ 'There are not this info in this executable'); FreeMem (Pt); end else raise exception.Create ( 'Lo siento, no hay VersionInfo disponible ' + 'en este ejecutable.' + #13 + 'Sorry there are not VersionInfo available' + 'in this executable.'); end; begin Form1.Caption:=Form1.Caption + ' ' + GetAppInfo('FileDescription'); end;
Комментарии