您的位置:首页 > 编程语言 > Delphi

Delphi获取其他exe程序版本号

2015-11-06 17:35 477 查看
delphi获取Exe文件版本信息的函数

Type

TFileVersionInfo = Record

FixedInfo:TVSFixedFileInfo; {版本信息}

CompanyName:String; {公司名称}

FileDescription:String; {说明}

FileVersion:String; {文件版本}

InternalName:String; {内部名称}

LegalCopyright:String; {版权}

LegalTrademarks:String; {合法商标}

OriginalFilename:String; {源文件名}

ProductName:String; {产品名称}

ProductVersion:String; {产品版本}

Comments:String; {备注}

LocalPort:String; {Local UDP_Message Port}

end;

Function GetFileVerInfo(ExeFileName :Pchar;var VerSionInfo:TFileVersionInfo):Boolean;

var

dwHandle, dwVersionSize : DWORD;

Find : String;

pcBuffer : PChar;

pTemp : Pointer;

FileVersionInfo : TVSFixedFileInfo;

begin

Find := '\';

dwVersionSize := GetFileVersionInfoSize( PChar(ExeFilename),dwHandle );

if dwVersionSize = 0 then begin

Result:=False;

Exit;

end;

GetMem( pcBuffer, dwVersionSize );

if not GetFileVersionInfo( PChar(ExeFilename),dwHandle,dwVersionSize,pcBuffer ) then begin

FreeMem(pcBuffer);

Result:=False;

Exit;

end;

if not VerQueryValue( pcBuffer,PChar(Find),pTemp,dwVersionSize ) then begin

FreeMem(pcBuffer);

Result:=False;

Exit;

end;

FileVersionInfo:=PVSFixedFileInfo(pTemp)^;

With FileVersionInfo do begin

VersionInfo.FixedInfo.dwSignature:=dwSignature;

VersionInfo.FixedInfo.dwStrucVersion:=dwStrucVersion;

VersionInfo.FixedInfo.dwFileVersionMS:=dwFileVersionMS;

VersionInfo.FixedInfo.dwFileVersionLS:=dwFileVersionLS;

VersionInfo.FixedInfo.dwProductVersionMS:=dwProductVersionMS;

VersionInfo.FixedInfo.dwProductVersionLS:=dwProductVersionLS;

VersionInfo.FixedInfo.dwFileFlagsMask:=FileVersionInfo.dwFileFlagsMask;

VersionInfo.FixedInfo.dwFileFlags:=fileVersionInfo.dwFileFlags;

VersionInfo.FixedInfo.dwFileOS:=FileVersionInfo.dwFileOS;

VersionInfo.FixedInfo.dwFileType:=FileVersionInfo.dwFileType;

VersionInfo.FixedInfo.dwFileSubtype:=FileVersionInfo.dwFileSubtype;

VersionInfo.FixedInfo.dwFileDateMS:=FileVersionInfo.dwFileDateMS;

VersionInfo.FixedInfo.dwFileDateLS:=FileVersionInfo.dwFileDateLS;

end;

Find := '\StringFileInfo\080403A8\';

if VerQueryValue( pcBuffer,PChar(Find+'CompanyName'),pTemp,dwVersionSize ) then

VersionInfo.CompanyName:=PChar(pTemp)

else begin

Find := '\StringFileInfo\040904E4\';

if VerQueryValue( pcBuffer,PChar(Find+'CompanyName'),pTemp,dwVersionSize ) then

VersionInfo.CompanyName:=PChar(pTemp)

else begin

Result:=False;

Exit;

end;

end;

if VerQueryValue( pcBuffer,PChar(Find+'FileDescription'),pTemp,dwVersionSize ) then

VersionInfo.FileDescription:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'FileVersion'),pTemp,dwVersionSize ) then

VersionInfo.FileVersion:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'InternalName'),pTemp,dwVersionSize ) then

VersionInfo.InternalName:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'LegalCopyright'),pTemp,dwVersionSize ) then

VersionInfo.LegalCopyright:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'LegalTrademarks'),pTemp,dwVersionSize ) then

VersionInfo.LegalTrademarks:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'OriginalFilename'),pTemp,dwVersionSize ) then

VersionInfo.OriginalFilename:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'ProductName'),pTemp,dwVersionSize ) then

VersionInfo.ProductName:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'ProductVersion'),pTemp,dwVersionSize ) then

VersionInfo.ProductVersion:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'Comments'),pTemp,dwVersionSize ) then

VersionInfo.Comments:=PChar(pTemp);

if VerQueryValue( pcBuffer,PChar(Find+'LocalPort'),pTemp,dwVersionSize ) then

VersionInfo.LocalPort:=PChar(pTemp)

else

VersionInfo.LocalPort:='66500';

FreeMem(pcBuffer );

Result:=True;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: