把EXE可执行文件等作为资源包含在Delphi编译文件中
摘自我自己过去写的一段心得。
1.编辑资源文件 *.RC
Wave: 资源文件是声音文件;
RCDATA: 二进制数据
AVI: AVI动画;
ICON: 图标文件;
BITMAP: 位图文件;
CURSOR: 光标文件;
比如:
MyWav WAVE "FileName.Wav"
2.使用Brcc32转化为*.RES文件
3.在工程中引用RES文件
比如:{$R MyRes.RES}
4.运行时读入
通过TResourceStream ,比如TResourceStream.Create(HInstance, ResName, RT_RCDATA);
API:LoadBitmap,LoadIcon等
组件:Image1.Picture.Bitmap.LoadFromResourceName
/////////////////////////////////////////////////////////
把EXE可执行文件等作为资源包含在Delphi编译文件中2010/01/18 8:29 P.M.感觉还是挺有用的,转载保存了~~~
建立文本文件 TEST.RC 撰写下面的一行
AEXE EXEFILE c:\test.exe
存盘
copy test.rc 到你DELPHI目录里的 bin 目录
执行 brcc32 test.rc
得到 test.res
copy test.res 到你的工程目录
记得在工程文件里加上 {$R test.res}
提取RES中的TEST.EXE的函数
procedure extractexeres(restype, resname, resnewname:string);
var
res:tresourcestream;
begin
res:=tresourcestream.create(hinstance,resname,pchar(resyype));
res.savetofile(resnewname);
res.free;
end;
建立文本文件 myjpg.RC 撰写下面的一行
Hash JPGFILE c:\myjpg.jpg
存盘
copy myjpg.rc 到你DELPHI目录里的 bin 目录
执行 brcc32 myjpg.rc
得到 myjpg.res
copy myjpg.res 到你的工程目录
记得在工程文件里加上 {$R myjpg.res}
提取RES中的MYJPG.jpg的函数
procedure extractexeres(resname, restype, resnewname:string);
var
res:Tresourcestream;
begin
res:=Tresourcestream.create(hinstance,resname,pchar(restype));
res.savetofile(resnewname);
res.free;
end;
//这样你就可以调用resnewname这个 jpg文件了。
调用的时候如下:
Extractexeres('Hash','JPGFILE','f:\myjpg.jpg');
换一种说法:
1、生成一个rc文件,文件格式如下:
rwww exefile "test.exe" //rwww是资源名称
//exefile是资源类型
//text.exe是资源
资源类型列表:
Wave: 资源文件是声音文件;
RCDATA: 一般二进制文件;
AVI: AVI动画;
ICON: 图标文件;
BITMAP: 位图文件;
CURSOR: 光标文件;
exefile: exe文件
FILE: 一般文件
2、将delphi安装目录下bin中的brcc32.exe文件拷出,用brcc32.exe执行
生成的rc文件,在dos窗口下 运行:brcc32 test.rc 生成正式的
后缀为.res的次源文件
3、在delphi中加入编译指令{$R test.res}用以编译。但注意,以上的test.exe文件
一定要在当前路径下存在。
4、调用:
var
t : TResourceStream;
begin
try
t := TResourceStream.Create(HInstance,'rwww','exefile'); //其中HInstance为一个句柄常量;rwww为资源名;exefile为资源类型
t.SaveToFile('c:\2.exe'); //保存文件成2.exe
finally
t.free;
end;
end;
///////////////////////////////////////////////////////////
编辑一个 resource.rc 文件 ,里面类似如下 :
hookdll RC_Dll YourHookDllFileName.Dll
2: 然后用 Brcc32.exe 编译 :
brcc32 resource.rc
结果生成 resource.res 文件
3: 修改窗体 Pas 或者 Dpr 文件 ,添加下面的代码 :
{$R *.res}
{$R resource.res}
4: 关键的代码 :
在窗体初始化或者工程的开头部分添加代码 :
var
res:tresourcestream;
....
res:=tresourcestream.create(instance,'hookdll','RC_Dll');
res.SaveToFile('YourHookDllFileName.Dll');
res.Free;
5: 你的程序退出的时候 :
DeleteFile('YourHookDllFile.Dll');
6:End
http://www.cnblogs.com/hssbsw/archive/2012/03/15/2397825.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2016-02-01 ZYSocket 4.3.5 SOCKET框架组 发布[NEW]
2016-02-01 Qt信号槽的一些事(第一次知道信号还有返回值,以及Qt::UniqueConnection)
2016-02-01 C/C++取出变量的每一位的值(第一次知道还有QBitArray)
2016-02-01 什么样的程序员适合去创业公司
2016-02-01 VC2008如何生成及使用DLL(图文并茂,完整版)
2016-02-01 Qt浅谈之二十六图片滑动效果
2016-02-01 Qt 学习之路 2(75):线程总结