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

''如何将 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  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: VB一个编程语言,VBA是一种宏编程语言,在Office应用程序中使用常见。VBA代码编写完后,可以在应用程序中运行,但是无法独立运行,需要依赖于Office应用程序。如果需要将VBA代码封装可独立运行的.exe文件,可以使用VB语言进行封装。 具体操作方法为:先将VBA代码复制到VB语言的模块中,并建立窗体,将按钮与VBA代码关联。在VB语言中,使用Shell语句来执行VBA代码。将整个项目编译.exe文件,即可独立运行。 需要注意的是,在封装时,需要确保VBA代码能够单独运行,并且VB语言的执行效率要高于VBA语言。此外,封装后的.exe文件可能会在一些安全设置中被误判为病毒,需要对其进行合理的安全设置和检测。 总的来说,将VBA代码封装.exe文件,可以实现独立运行,增强了应用程序的灵活性和安全性,可以方便地分享和使用。 ### 回答2: VB是一种广泛用于Windows系统的编程语言,而VBA则是VB的一种特殊实现方式,用于在Microsoft Office软件中编写宏语言。在某些情况下,需要将VBA代码封装可独立运行的可执行文件,这时可以使用第三方工具将VBA代码转换VB代码,再编译.exe文件。 要将VBA代码封装可执行文件,首先需要将代码转换VB代码,这可以通过一些转换工具完,包括VBA编译器和VBA转换器等。接着,将转换后的VB代码上传至VB项目的开发环境中,使用VB编译工具将其编译可执行文件,并进行测试和调试。在编译过程中需要注意数据类型的转换、VB语法的改写等问题。最后,将编译好的.exe文件打包并发布即可。 封装VBA代码exe文件有以下优点:一是可独立运行,不必依赖于Office等软件,方便传播和使用。二是可保护源代码,避免恶意修改或盗用。三是能够加入一些额外的功能和界面,提高用户体验。 需要注意的是,封装VBA代码exe文件并非一件易事,需要有一定的编程经验和技巧。同时,由于VBA和VB之间存在一定差异,因此在转换和编译过程中可能会存在一些问题。此外,VBA代码封装exe后可能会存在兼容性问题,需要在相应系统中进行测试和调试。 ### 回答3: 将VB中的VBA代码封装EXE文件的过程是比较简单的。首先,你需要在VB中创建一个Windows应用程序,并添加一个Windows窗体。然后,你需要将VBA代码复制到VB中,并将代码转换为VB代码。最后,你需要将VB代码编译EXE文件。下面是更详细的步骤: 1. 打开VB应用程序,然后在“项目”菜单中选择“添加窗体”来创建一个新的Windows窗体。 2. 在窗体设计器中,添加一个按钮控件,用于触发VBA代码的执行。 3. 在代码窗口中,复制粘贴VBA代码,并对代码进行转换。转换方法因不同代码而异,可以通过查看VBVBA之间的语法和对象模型之间的差异来转换代码。 4. 将转换后的代码复制到VB的事件处理程序中,例如按钮的点击事件处理程序。 5. 最后,点击“生”菜单并选择“生解决方案”来编译你的VB代码。编译后,将会生一个可执行的EXE文件,可以在任何计算机上运行。 需要注意的是,封装VBA代码到VB中仅适用于VBA代码所依赖的对象已经存在于VB的对象模型中,否则需要进行额外的处理。另外,如果需要在编译后的EXE文件中包含VBA代码解释器,则需要使用一些特殊的工具和技术进行封装

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值