我想将 控件 加载到 EXE 文件中,不知道怎样实现?请大虾帮忙

解决方案 »

  1.   

    到网上找一下 曾经有人把VB的运行库都包含在到exe中了
      

  2.   

    这个我是作过的,不过VB60的程序将环境库完全打包到EXE中是不可能实用的,因为无法保证VB6的最基本时间库MSVBVM60.DLL文件就一定存在于计算机上,如果不存在EXE根本无法运行,当然也就无法自动安装时间库了,哈哈,你说对吗。如果你想让你的控件不释放直接在EXE文件内但还要求加载使用这个控件是办不到的,除非操作系统中原已存在这个控件。如果你只是想作一个类似绿软件的EXE文件还是有办法的(当然你要保证你的这个EXE是能正常运行的也就是不少必要的链接库,VB至少需要MSVBVM60.DLL支持),下面是我采用的方法,也是最标准的使用方法。1、加载资源文件:
    菜单之“外接程序”-“外接程序管理器”,双击“VB资源管理器”确定;菜单-“资源编辑器”;在此编辑器内“添加自定义资源”;选择你的控件文件;保存资源文件。这个控件将以101号资源打包到你的程序中了。2、释放文件:以下假设控件为ABC.OCX释放路径为系统目录下
    Dim Tao() As Byte, i As Long, j As Long
    If Dir(SYSDIRPATH & "ABC.OCX") = "" Then 'SYSDIRPATH为操作系统系统目录要事先取得
      Tao = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组TAO
      Open SYSDIRPATH & "ABC.OCX" For Binary As #1
      For i = 0 To 46592 - 1 '这里的46592是该控件文件的准确字节数(大小)
      Put #1, , Tao(i)
      Next i
      Close #1
    End If3、注册控件:
    如果你的这个控件安装后必须注册才能使用请使用下面一行语句完成注册否则就不用了.
    j = Shell(SYSDIRPATH & "REGSVR32.EXE /s " & SYSDIRPATH & "ABC.OCX")要注意,这种方法的使用,你要确保控件文件的释放在程序执行的开始,最后在SUB MAIN()过程中,千万不要把代码设计在使用并加载有这个控件的窗体代码中,不然程序运行到这个窗体时检测以操作系统中没有这个控件是要出错的,而你在此窗体加载前就完成了控件安装与注册就不会出错。另外你还需要在开始检测操作系统是否有这个控件,有就可以跳过以上代码直接使用。