获得可执行文件版本信息代码

2011-09-06 16:12:40 作者:闹猴在线 来源:闹猴在线 浏览次数:0 网友评论 0


//获得可执行文件版本信息代码 
function GetFileVersionInfomation(const FileName: string; var info: TFileInfo): boolean
const 
 SFInfo= '\StringFileInfo\';
var
 VersionInfo: Pointer
 InfoSize: DWORD;
 InfoPointer: Pointer;
 Translation: Pointer
 VersionValue: string
 unused: DWORD
begin 
 unused := 0; 
 Result := False; 
 InfoSize := GetFileVersionInfoSize(pchar(FileName), unused); 
 if InfoSize > 0 then 
 begin 
   GetMem(VersionInfo, InfoSize); 
   Result := GetFileVersionInfo(pchar(FileName), 0, InfoSize, VersionInfo); 
   if Result then 
   begin 
     VerQueryValue(VersionInfo, '\VarFileInfo\Translation', Translation, InfoSize); 
     VersionValue := SFInfo + IntToHex(LoWord(Longint(Translation^)), 4) + 
       IntToHex(HiWord(Longint(Translation^)), 4) + '\'; 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'CompanyName'), InfoPointer, InfoSize); 
     info.CommpanyName := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'FileDescription'), InfoPointer, InfoSize); 
     info.FileDescription := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'FileVersion'), InfoPointer, InfoSize); 
     info.FileVersion := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'InternalName'), InfoPointer, InfoSize); 
     info.InternalName := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'LegalCopyright'), InfoPointer, InfoSize); 
     info.LegalCopyright := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'LegalTrademarks'), InfoPointer, InfoSize); 
     info.LegalTrademarks := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'OriginalFileName'), InfoPointer, InfoSize); 
     info.OriginalFileName := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'ProductName'), InfoPointer, InfoSize); 
     info.ProductName := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'ProductVersion'), InfoPointer, InfoSize); 
     info.ProductVersion := string(pchar(InfoPointer)); 
     VerQueryValue(VersionInfo, pchar(VersionValue + 'Comments'), InfoPointer, InfoSize); 
     info.Comments := string(pchar(InfoPointer)); 
     if VerQueryValue(VersionInfo, '\', InfoPointer, InfoSize) then 
       info.VsFixedFileInfo := TVSFixedFileInfo(InfoPointer^);
 
   end; 
   FreeMem(VersionInfo); 
 end; 
end;

[错误报告] [推荐] [收藏] [打印] [关闭] [返回顶部]

最新十条评论
  • 验证码:

最新图片文章

赞助商广告2

最新文章

日文章点击排行

周文章点击排行

月文章点击排行