首页
社区
课程
招聘
在程序中生成exe文件(献给新手)
2006-1-15 21:34 6594

在程序中生成exe文件(献给新手)

2006-1-15 21:34
6594
最近研究了一下这个问题
以C++ Builder 6.0为例
首先准备好你想放到程序中的exe文件
然后用C++ Builder新建一个工程
在记事本中输入以下内容
oneexe EXEFILE yourexename
保存为myres.rc
project- >Add to Project 中,加入写好的 myres.rc 文件
在程序的窗体上添加一个按纽
在Click事件中写入下面的代码
TResourceStream *myres;

myres = new TResourceStream(int(HInstance), AnsiString("oneexe"),"EXEFILE");

myres->SaveToFile("myexe.exe") ;

运行程序,单击按纽,在程序目录下就会产生myexe.exe
(最好把工程,准备的exe文件,myres.rc放在同一目录下)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞7
打赏
分享
最新回复 (6)
雪    币: 291
活跃值: (208)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
thebutterfly 5 2006-1-15 22:31
2
0
原理应该是使用自定义资源吧
在MASM或者是C++中可以这么弄:

在资源文件中:
#define EXEFILE 10000
#define ID_MYRES 10
//两个数值随便,只要不和已经定义的冲突就可以了
ID_MYRES EXEFILE "oneexe.exe"//你的文件名

如果是MASM,在汇编代码中:
EXEFILE EQU 10000
ID_MYRES EQU 10

;...其他代码
invoke FindResource,hInstance,ID_MYRES,EXEFILE
.if eax
  mov hRes,eax
  invoke SizeofResource,hInstance,eax;获得资源大小
  mov dwSize,eax
  invoke LoadResource,hInstance,hRes
  .if eax
    invoke LockResource,eax
    .if eax
       mov lpRes,eax
       ;现在lpRes指向资源,dwSize是资源长度,然后只要
       ;把资源内容写入文件就可以了
       ;CreateFile+WriteFile+CloseHandle就可以搞定
    .endif
  .endif
.endif

VC++也类似,各位自己去做吧
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jianlizhao 2006-1-16 09:04
3
0

这样生成的EXE文件用在什么场合?
雪    币: 221
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
vlit 2006-1-16 13:05
4
0
用在某些程序生成客户端的时候
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
taiguofan 2006-1-16 15:28
5
0
可是这个有多大好处呢?不是原来的还好一些吗?
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
笨奔 1 2006-1-16 20:53
6
0
改一下变为DLL得了,省的这么麻烦
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fengyun 2006-1-17 16:18
7
0
这个是在做木马吧
游客
登录 | 注册 方可回帖
返回