Как Вы узнаете, все эти данные могут быть определены в IDE Delphi: Project -> Options -> VersionInfo
Это позволит нам получить остальную часть данных, которые могут быть определены: Описание файла, Внутреннее имя файла, Компания и т.д.
Сначала мы должны получить шестнадцатиричное число, которое соответствует определению языка, на котором компилировали приложение. Как только мы получим этот факт, мы сможем получить остальную информацию.
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;
|