从程序中生成Exe文件
这篇文章要讨论的是在一个VB程序中如何产生出另一个Exe文件。
要实现这个目的,必须符合以下几个条件:
第一、编写这样的程序时,具备欲生成的Exe文件
第二、事先知道欲生成的Exe文件大小
其实这两个条件可以说不是条件,但确实很重要。
为了叙说方便,将发行的程序称作APP-1.Exe,要生成的文件叫APP-2.Exe,以下是具体步骤:
第一步,准备好APP-2.Exe,这里我使用VB写了一个什么都不做程序,编译成APP-2.Exe。
第二步,右键单击单击APP-2.Exe,选择属性,记下文件大小。注意,应记下以字节为单位的具体数字,而不是多少k。
这样就具备了前边说的两个条件。
第三步,新建工程APP1,新建资源文件加入工程,在资源文件编辑器中添加自定义资源(CUSTOM),资源号使用默认的101。值得注意的是,每个资源号对应的资源项对资源大小的要求是有限制的,我记得时64K,因此如果APP-2.Exe的大小如果大于这个数的话,就要麻烦一些。如果是这样,我们的写另一个程序,把APP-2.Exe一个字节一个字节的读出来,每64K生成一个文件,然后再把这些文件分别写道资源文件的101、102......资源项中,代码也要作相应的修改。
第四步,为APP-1.Exe编写代码,使其读取资源文件的数据,生成APP-1.Exe。
Private Const FILESIZEOFAPP2 = 20480 '我生成的APP-2.Exe大小是20480Byte
Private Sub cmdOK_Click() '单击按钮cmdOK运行代码
Dim APP2() As Byte 'APP2是个Btye类型和数组
Dim Counter As Long
APP2 = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组
'注意,微软的帮助中对加载定义资源的说明有误,硬是资源标识为"CUSTOM"而非数字
If Dir(App.Path & "\APP-2.Exe") <> "" Then '第一次按cmdOK有效
MsgBox App.Path & "\APP-2.Exe 已经存在!"
Exit Sub
End If
Open App.Path & "\APP-2.exe" For Binary As #1 '以二进制方式写(生成)APP-2.Exe到APP-1.Exe所在的目录
For Counter = 0 To FILESIZEOFAPP2 - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终
Put #1, , APP2(Counter)
Next Counter
Close #1
Shell App.Path & "\APP-2.Exe", vbNormalFocus '运行刚生成的APP-2.Exe
Unload Me
End Sub
VB部分相关文章推荐
※VB快速读取 TextBox 第 N 行的资料
※VB禁止使用 Alt-Tab 或 Ctrl-Alt-Del
※生成迷宫的程序
※另一方法转换大小写
※VB控件注册 - 利用资源文件将dll、ocx打包进exe文件
※VB利用资源文件进行工作
※[转]vb高效编程(优化)
※VB阳历转阴历
※纯VB代码取得硬盘的物理序列号
※VB获得磁盘的文件系统
※做VB的,经常注册和反注册OCX控件和DLL链
※VB从程序中生成Exe文件
※VB6监视/操作剪贴板示例(VB6.0代码)
※VB6里自动提交/自动填表的一种相对通用的方案
※VB移动没有标题的窗体
※VB随机字母的函数
※VB删除带子文件夹和文件的文件夹
※VB怎样屏蔽 Alt+F4键
※VB 隐藏进程
※vb屏蔽文本框点右键时的弹出菜单
※VB手控Combobox的打开或收起
※在VB中INI文件的读写、删除(对中文支持很好)
※vb全局热键的写法(占很少的资源)
※vb取消文本框的粘贴功能
※VB常用文件操作类
※VB获取特殊文件夹
※VB获取windows各常用目录的函数(模块)
※VB生成太极图
※VB:常用内部函数大全,你会了几个呢?
※vb中SendMessage函数
※精简VB程序的代码
※VB:将数字转换为大写中文
※VB:设定 MsgBox 在若干时间之后若无回应则自动关闭
※VB:读取及设定NumLock/CapsLock/ScrollLock的值
※VB:您知道 Mid$ 函量可以放在 '=' 的左方吗
※VB后台获得按键,并执行自己的函数(非钩子及热键)
※VB:将短文件名格式转成长文件名
※在vb中使用Iphlpapi.dll获取网络信息(上)
※在vb中使用Iphlpapi.dll获取网络信息(下)
更多精彩>>>
评论