Sub Main() Dim Ocx() As
Byte 'OCX是个Btye类型的数组 Dim Counter As Long Ocx = LoadResData(101,
"CUSTOM")
'将自定义资源中101号资源读入数组OCX '注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为"CUSTOM"而不是帮助所说的数字10
If
Right(App.Path, 1) = "\" Then
'读取程序所在路径,判断是否为根目录并分别处理 '程序在根目录下 If Dir(App.Path &
"CoolToolBar.ocx") = "" Then
'程序路径下有无控件,无则生成控件 '以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录
Open App.Path & "CoolToolBar.ocx" For Binary As #1
For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte
为终值 Put #1, , Ocx(Counter) Next Counter Close
#1 End if Else '程序不在根目录下 If Dir(App.Path &
"\CoolToolBar.ocx") = "" Then
'程序路径下有无控件,无则生成控件 '以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录
Open App.Path & "\CoolToolBar.ocx" For Binary As #1 For
Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值 Put
#1, , Ocx(Counter) Next Counter Close #1 End if End
if Form1.Visible = True '主程序所用控件已经生成,显示主窗体,进入主程序。 End Sub
注意:将以上代码作为一个模块添加到工程中,并在工程-工程属性设置中将启动对象选为Sub
Main,即上面的脱壳代码。然后编译生成EXE文件,将该EXE文件拷贝到其他没有安装所用控件的计算机上运行一下看看是否实现了控件携带之金蝉脱壳。如果是那么OK!以上为使用一个控件的情况,使用多个控件方法基本相同,不在赘述。