加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何将 exe程序和vb编译的exe文件 封装为一个exe文件

发布时间:2020-12-16 22:54:05 所属栏目:大数据 来源:网络整理
导读:''如何将 exe程序和vb编译的exe文件 封装为一个exe文件 ''把它当成资源文件,包到主程序里 ''以下代码是我封装控件和数据库的代码,你看看数据库是怎样封的,没时间简化 Option Explicit Sub Main() Const DBSIZE = 479232 '欲生成的数据库大小是479232Byte,名

''如何将 exe程序和vb编译的exe文件 封装为一个exe文件
''把它当成资源文件,包到主程序里
''以下代码是我封装控件和数据库的代码,你看看数据库是怎样封的,没时间简化
Option Explicit

Sub Main()
Const DBSIZE = 479232 '欲生成的数据库大小是479232Byte,名字为Provider.mdb
Const Comcat = 3856 '欲生成的控件大小是3856Byte,Comcat.dll

Const Msado15 = 491792 '欲生成的控件大小是3856Byte,msado15.dll

Const MSCOMCT2 = 662288 '欲生成的控件大小是662,288Byte,MSCOMCT2.OCX

Const mscomctl = 1081616 '欲生成的控件大小是3856Byte,mscomctl.ocx

Const stdole2 = 16896 '欲生成的控件大小是16,896Byte,stdole2.tlb


''**

Dim Ocx() As Byte 'OCX是个Btye类型的数组
Dim Counter As Long

Ocx = LoadResData(107,"CUSTOM") '将自定义资源中101号资源读入数组OCX
'注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为"CUSTOM"而不是帮助所说

的数字10

'程序不在根目录下一一一一一一一一一一一
If Dir(App.Path & "/Provider.mdb") = "" Then '程序路径下有无控件,无则

生成控件
'以二进制方式写(生成)控件(agtintl.dll)到主程序所在的目录
Open App.Path & "/Provider.mdb" For Binary As #1
For Counter = 0 To DBSIZE - 1 '注意因为从0 Byte开始因此以文件

大小 - 1Byte 为终值
Put #1,Ocx(Counter)
Next Counter
Close #1
End If
''二二二二二二二二二二二二二二二二二二二二二二
Erase Ocx
Ocx = LoadResData(102,"CUSTOM")

If Dir(App.Path & "/comcat.dll") = "" Then
Open App.Path & "/comcat.dll" For Binary As #1
For Counter = 0 To Comcat - 1 '注意因为从0 Byte开始因此以

文件大小 - 1Byte 为终值
Put #1,Ocx(Counter)
Next Counter
Close #1
End If

Shell "Regsvr32 /s" & App.Path & "/comcat.dll"
'三三三三三三三三三三三三三三三三三三三三三三三三三
Erase Ocx
Ocx = LoadResData(103,"CUSTOM")
If Dir(App.Path & "/msado15.dll") = "" Then
Open App.Path & "/msado15.dll" For Binary As #1
For Counter = 0 To Msado15 - 1 '注意因为从0 Byte开始因此以

文件大小 - 1Byte 为终值
Put #1,Ocx(Counter)
Next Counter
Close #1
End If
Shell "Regsvr32 /s" & App.Path & "/msado15.dll"
'四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四
Erase Ocx
Ocx = LoadResData(104,"CUSTOM")
If Dir(App.Path & "/MSCOMCT2.OCX") = "" Then
Open App.Path & "/MSCOMCT2.OCX" For Binary As #1
For Counter = 0 To MSCOMCT2 - 1 '注意因为从0 Byte开始因此

以文件大小 - 1Byte 为终值
Put #1,Ocx(Counter)
Next Counter
Close #1
End If
Shell "Regsvr32 /s" & App.Path & "/MSCOMCT2.OCX"
'五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五五
Erase Ocx
Ocx = LoadResData(105,"CUSTOM")
If Dir(App.Path & "/mscomctl.ocx") = "" Then
Open App.Path & "/mscomctl.ocx" For Binary As #1
For Counter = 0 To mscomctl - 1 '注意因为从0 Byte开始因此

以文件大小 - 1Byte 为终值
Put #1,Ocx(Counter)
Next Counter
Close #1
End If
Shell "Regsvr32 /s" & App.Path & "/mscomctl.ocx"
'六六六六六六六六六六六六六六六六六六六六六六六六六
Erase Ocx
Ocx = LoadResData(106,"CUSTOM")
If Dir(App.Path & "/stdole2.tlb") = "" Then
Open App.Path & "/stdole2.tlb" For Binary As #1
For Counter = 0 To stdole2 - 1 '注意因为从0 Byte开始因此以

文件大小 - 1Byte 为终值
Put #1,Ocx(Counter)
Next Counter
Close #1
End If
Shell "Regsvr32 /s" & App.Path & "/stdole2.tlb"

FrmMain.Show
End Sub
'注册控件
'Private Declare Function RegOcx Lib "A.OCX" Alias "DllRegisterServer" ()

As Long
'
'Private Sub Form_Load()
' Call RegOcx
'End Sub
'
'OCX文件中都有一个接口DllRegisterServer,这个接口就是用来注册自身的,同样,也可以

用"UnDllregisterServer"在代碼中來取消注冊控件自身
'如果是注册其它路径的文件,要在声明时写完整路径,如
'Private Declare Function RegOcx Lib "C:/Test/A.OCX" Alias "DllRegisterServer"

() As Long
'
'Private Sub Form_Load()
' Call RegOcx
'End Sub
'还有一种
'Private Sub Form_Load()
' Me.Visible = False
' Shell "regsvr32 /s " & App.Path & "/DtRead.ocx" '用参数/s,不提示

注册成功信息 ' Shell "regsvr32 /s " & App.Path & "/ConnStr.dll" ' Shell "regsvr32 /s " & App.Path & "/HisCurve.ocx" ' Shell "regsvr32 /s " & App.Path & "/Rep.dll" ' MsgBox "注册成功!" ' Unload Me 'End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读