有时一个使用了复杂控件的VB程序运行需要一些普通WindowsXP没有的ocx或者dll,在发布程序时往往需要将这些文件和exe文件一起打包,让一些程序看起来很不清爽,可不可以让我们的程序都只有一个exe文件没有其它的东西呢?
其实VB程序可以包含各种资源文件,这就为创建一个只有exe文件的程序提供了可能。但当我尝试将ocx、dll以资源文件的形式包含在exe文件中,当程序运行的时候尝试释放时又遇到一个问题,程序加载窗体时因为没找到支持文件而出错中断,没等到释放文件就崩溃了。为了解决这个问题,我们需要在加载窗体之前执行一个main过程,释放ocx、dll等文件。
以我写的UDPFighter为例,本程序需要一个MSCOMCTL.OCX和一个MSWINSCK.OCX,将这两个文件添加为资源文件。
创建一个标准模块,并在其中写一个main过程。代码如下:
'UnRes和TeShuML为自己写的函数,详见源文件
Sub main()
If Dir(TeShuML(37) & "\MSCOMCTL.OCX") = "" Then
Call UnRes(101, "CUSTOM", TeShuML(37) & "\MSCOMCTL.OCX") '释放文件
Sleep 500
End If
If Dir(TeShuML(37) & "\MSWINSCK.OCX") = "" Then
Call UnRes(102, "CUSTOM", TeShuML(37) & "\MSWINSCK.OCX") '释放文件
Sleep 500
End If
XXXXXXXXow '加载并显示窗体End Sub
将启动对像设为Sub main()
编译程序后就可以实现仅用一个exe文件了。
200字以内,仅用于支线交流,主线讨论请采用回复功能。