动态的添加资源文件到可执行程序中

注:只对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添加图标资源,又得添加利用该图标资源的代码,这个是很难实现的。

事先写代码是比较好的,可以遍历资源,如有资源名符合的就利用,没有则跳过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值