把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
把EXE可执行文件等作为资源包含在Delphi编译文件中的更多相关文章
- Spring MVC静态资源处理(在applicationContex.xml文件中进行配置)
优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...
- Ansible_包含和导入playbook文件
一.管理大型的playbook 1️⃣:如果playbook很长或很复杂,我们可以将其分成较小的文件以便于管理 2️⃣:可采用模块化方式将多个playbook组合为一个主要playbook,或者将文件 ...
- 如何在Qt资源文件中包含和释放exe等各种类型文件?
操作系统:Windows 10 X64 企业版 Qt: 5.8.0 QtCreater: 4.2.1 刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放ex ...
- 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)
解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...
- 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件
1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有不爽.此篇博客教你如何方便快捷地把java代码,打包成jar文件以 ...
- 如何把py文件打包成exe可执行文件
如何把py文件打包成exe可执行文件 1.安装 pip install pyinstaller 或者 pip install -i https://pypi.douban.com/simple pyi ...
- pyinstaller使用-python项目转换成exe可执行文件
http://blog.csdn.net/pipisorry/article/details/50620122 Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standa ...
- 使用py2exe将python脚本转换成exe可执行文件
Python(wiki en chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...
- 将jar文件转换成exe可执行文件[转]
将jar文件转换成exe可执行文件: exe文件使用方便,而且还可以提高源码及资源的安全性,但同时也失去了java的初衷--跨平台性. 如果你坚持要转换成exe文件,请按以下方式进行: 利用exe4j ...
随机推荐
- BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集
Solution 答案具有单调性, 显然可以二分答案. 有两个注意点 : 英雄是可以随便走的, 也就是不是网格图... 还有坐标不能小于$1$ QAQ 开始时英雄在左下角, 公主在右上角, 我们反过来 ...
- 当前页面刷新和动态添加控件的jquery事件绑定on
当前页面刷新(console): location.reload() 给动态添加的控件添加js事件(委托): <ul> <li>菜单一</li> <li> ...
- Spring PropertyResolver 占位符解析(一)API 介绍
Spring PropertyResolver 占位符解析(一)API 介绍 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html ...
- 高级设计总监的设计方法论——5W1H需求分析法 KANO模型分析法
本期开始进入设计方法论的学习,大湿自己也是边学边分享,算是巩固一遍吧: 另外这些理论基本都是交叉结合来应用于工作中,我们学习理论但不要拘泥于理论的框架中,掌握后要灵活运用一点- 这些理论一部分来自于我 ...
- maven打包之后为什么class文件中没有注释了?
<!--生成doc jar包--> <plugin> <groupId>org.apache.maven.plugins</groupId> <a ...
- 2017/2/5:oracle数据库的三大文件
oracle的三大文件: 一:控制文件:控制文件是一个小型的二进制文件,可以记录数据库的物理结构.包括: * 数据库名称 * 数据文件和日志文件的名称和位置 * 数据库创建的时 ...
- NOIP水题测试(2017082301)
你们从题目也能看出来今天的题是很水的. 前几期答案还没出,效率有点低,谅解,谅解. 今天的答案应该会出的很快. 下面给题目: 时间限制:3小时 题目一:旅行家的预算 题目二:进制转换 题目三:乘积最大 ...
- 20155312 2016-2017-2 《Java程序设计》第五周学习总结
20155312 2016-2017-2 <Java程序设计>第五周学习总结 课堂笔记 十个基本类型 命令:ascii打印ascii值, od -tx1 Test.java用十六进制查看代 ...
- get load 代理对象
01使用session中的load方法查询数据库中的记录时,我们返回的是一个代理对象,而不是真正需要的那个对象. 02 因为代理对象的出现 才导致延迟加载. 还有采用懒加载的时候容易出现nosessi ...
- SQL SERVER 如果判断text类型数据不为空
一个字段Remark的数据类型设置先设置为varcharr(255),后来考虑到扩展性需要将其定义为TEXT类型,但是SQL 语句报错. SQL 语句: SELECT * FROM ...