注:只对release版有用
procedure TForm1.Button1Click(Sender: TObject);
var
mstrm1:TMemoryStream;
update : dword;
workdir:string;
begin
workdir := ExtractFilePath(ParamStr(0));
mstrm1 := TMemoryStream.Create;
mstrm1.LoadFromFile(workdir+'\add.ico');//要添加的图标
mstrm1.Seek(0,soFromEnd );
mstrm1.Position :=0;
CopyFile(PChar(workdir+'\test.exe'),PChar(workdir+'\test_add.exe'),True );
update := BeginUpdateResourceW(PWideChar(widestring(workdir+'\test_add.exe')),False);
UpdateResourceW(update,PWideChar(RT_RCDATA),'ICORes',0,mstrm1.Memory,mstrm1.Size);
EndUpdateResourceW(update ,False);
mstrm1.Free;
ShowMessage('配置完成了');
end;
其中
BeginUpdateResourceW( LPCSTR pFileName, BOOL bDeleteExistingResources )
参数一 LPCTSTR pFileName, // 可执行文件名
参数二 BOOL bDeleteExistingResources // 是否删除可执行文件的现有资源
update := BeginUpdateResourceW(PWideChar(widestring(workdir+'\test_add.exe')),False); //false就是增加资源。
添加其他资源基本和这差不多,然后楼主说要在目标程序中利用,那你这个程序中首先就得写代码,假如你的意思是工具A既要向目标A添加图标资源,又得添加利用该图标资源的代码,这个是很难实现的。
事先写代码是比较好的,可以遍历资源,如有资源名符合的就利用,没有则跳过。