unit VerUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
OpenDialog1: TOpenDialog;
Edit5: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
VerSize : DWORD;
FName : String;
Zero : THandle;
PBlock : Pointer;
PS : Pointer;
Size : UINT;
begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
If OpenDialog1.Execute Then
Begin
Edit5.Text := OpenDialog1.FileName;
// Get size of Version resource
VerSize := GetFileVersionInfoSize(PChar(OpenDialog1.FileName), Zero);
If VerSize = 0 Then
Begin
ShowMessage('No Info');
Exit;
End;
// Allocate memory
GetMem(PBlock, VerSize);
// Get Version resource
GetFileVersionInfo(PChar(OpenDialog1.FileName), 0, VerSize, PBlock);
// Get predefined string
GetMem(PS, 256);
VerQueryValue(PBlock, '\\StringFileInfo\\040904E4\\CompanyName',PS, Size);
Edit1.Text := StrPas(PS);
VerQueryValue(PBlock, '\\StringFileInfo\\040904E4\\FileDescription',PS, Size);
Edit2.Text := StrPas(PS);
VerQueryValue(PBlock, '\\StringFileInfo\\040904E4\\FileVersion',PS, Size);
Edit3.Text := StrPas(PS);
VerQueryValue(PBlock, '\\StringFileInfo\\040904E4\\ProductName',PS, Size);
Edit4.Text := StrPas(PS);
End;
end;
end.
|