windows – 设置EXE VersionInfo

前端之家收集整理的这篇文章主要介绍了windows – 设置EXE VersionInfo前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有关我通过 VerQueryValue收到的版本Exe文件的信息.是否有可以注册(建立或更改)此类信息的反函数(WinApi或Delphi)?
这里,例如,有一个能够这样做的程序.它怎么可能有用( http://www.angusj.com/resourcehacker)?
版本信息通过资源存储;编辑您只需编辑该资源.这是我发现的一个单元,可以克隆现有的文件版本信息并将其附加到另一个文件.从这段代码开始,你可以很容易地做你想要的东西(它是由我的一个朋友编写的,可以公开获得):
unit cloneinfo;

interface

uses Windows,SysUtils;

type
 LANGANDCODEPAGE = record
  wLanguage: Word;
  wCodePage: Word;
 end;

procedure clone(sFile,output:string);

implementation

procedure clone(sFile,output:string);
var
  dwHandle,cbTranslate: cardinal;
  sizeVers: DWord;
  lpData,langData: Pointer;
  lpTranslate: ^LANGANDCODEPAGE;
  hRes : THandle;
begin
 sizeVers := GetFileVersionInfoSize(PChar(sFile),dwHandle);
 If sizeVers = 0 then
 exit;
 GetMem(lpData,sizeVers);
 try
  ZeroMemory(lpData,sizeVers);
  GetFileVersionInfo (PChar(sFile),sizeVers,lpData);
  If not VerQueryValue (lpData,'\VarFileInfo\Translation',langData,cbTranslate) then
  exit;
  hRes := BeginUpdateResource(pchar(output),FALSE);
  //For i := 0 to (cbTranslate div sizeof(LANGANDCODEPAGE)) do
  //begin
  lpTranslate := Pointer(Integer(langData) + sizeof(LANGANDCODEPAGE));
  UpdateResource(hRes,RT_VERSION,MAKEINTRESOURCE(VS_VERSION_INFO),lpTranslate^.wLanguage,lpData,sizeVers);
  //end;
  EndUpdateResource(hRes,FALSE);
 finally
  FreeMem(lpData);
 end;
end;


end.

猜你在找的Windows相关文章