mirror of
https://github.com/fast4x/datalock.git
synced 2025-06-05 21:49:16 +02:00
Initial Commit
This commit is contained in:
114
getvers_win.pas
Normal file
114
getvers_win.pas
Normal file
@ -0,0 +1,114 @@
|
||||
unit getvers_win;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, resource, versiontypes, versionresource;
|
||||
|
||||
type
|
||||
{ TVersionInfo }
|
||||
|
||||
TVersionInfo = class
|
||||
private
|
||||
FVersResource: TVersionResource;
|
||||
function GetFixedInfo: TVersionFixedInfo;
|
||||
function GetStringFileInfo: TVersionStringFileInfo;
|
||||
function GetVarFileInfo: TVersionVarFileInfo;
|
||||
|
||||
function SearchValue(const aString : string) : string;
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
|
||||
function CompanyName : string;
|
||||
function InternalName : string;
|
||||
function FileVersion : string;
|
||||
|
||||
procedure Load(Instance: THandle);
|
||||
property FixedInfo: TVersionFixedInfo read GetFixedInfo;
|
||||
property StringFileInfo: TVersionStringFileInfo read GetStringFileInfo;
|
||||
property VarFileInfo: TVersionVarFileInfo read GetVarFileInfo;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TVersionInfo }
|
||||
|
||||
function TVersionInfo.GetFixedInfo: TVersionFixedInfo;
|
||||
begin
|
||||
Result := FVersResource.FixedInfo;
|
||||
end;
|
||||
|
||||
function TVersionInfo.GetStringFileInfo: TVersionStringFileInfo;
|
||||
begin
|
||||
Result := FVersResource.StringFileInfo;
|
||||
end;
|
||||
|
||||
function TVersionInfo.GetVarFileInfo: TVersionVarFileInfo;
|
||||
begin
|
||||
Result := FVersResource.VarFileInfo;
|
||||
end;
|
||||
|
||||
function TVersionInfo.SearchValue(const aString: string): string;
|
||||
var s : TVersionStringTable;
|
||||
i,j : integer;
|
||||
begin
|
||||
result := '';
|
||||
for i:=0 to StringFileInfo.Count-1 do begin
|
||||
s := StringFileInfo.Items[i];
|
||||
for j:=0 to s.Count-1 do
|
||||
if s.Keys[j] = aString then begin
|
||||
result := s.Values[j];
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TVersionInfo.CompanyName: string;
|
||||
begin
|
||||
Result := SearchValue('CompanyName');
|
||||
end;
|
||||
|
||||
function TVersionInfo.InternalName: string;
|
||||
begin
|
||||
Result := SearchValue('InternalName');
|
||||
end;
|
||||
|
||||
function TVersionInfo.FileVersion: string;
|
||||
begin
|
||||
Result := SearchValue('FileVersion');
|
||||
end;
|
||||
|
||||
constructor TVersionInfo.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
FVersResource := TVersionResource.Create;
|
||||
Load(HInstance);
|
||||
end;
|
||||
|
||||
destructor TVersionInfo.Destroy;
|
||||
begin
|
||||
FVersResource.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TVersionInfo.Load(Instance: THandle);
|
||||
var
|
||||
Stream: TResourceStream;
|
||||
begin
|
||||
Stream := TResourceStream.CreateFromID(Instance, 1, PChar(RT_VERSION));
|
||||
try
|
||||
FVersResource.SetCustomRawDataStream(Stream);
|
||||
|
||||
// access some property to load from the stream
|
||||
FVersResource.FixedInfo;
|
||||
// clear the stream
|
||||
FVersResource.SetCustomRawDataStream(nil);
|
||||
finally
|
||||
Stream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
Reference in New Issue
Block a user