时间: 2021-07-31 作者:daque
在用vb编制程序中有理的运用第三方控件,常常不妨一举两得。然而运用第三方控件也有不好的场合,那即是为了保护步调平常运转,必需使步调不妨在体例目次或步调目次下找到所用的第三方控件。要做到这一点常常有两种方法:一是把控件和步调制成一个收缩包刊行,如许的缺陷是有大概引导在步调传递进程中丧失控件文献。二是创造安置步调,缺陷是创造进程繁芜。并且上头两种方法也不适合绿色软硬件的诉求。所谓的绿色软硬件是指软硬件惟有单个可实行文献且不必安置,暂时很受用户欢送。那么有没有方法在运用了第三方控件的情景下实行绿色软硬件梦呢?谜底是有。 做法是,将第三方控件以自设置资源文献办法生存在步调中,步调运转之后运用控件之前将所用到的控件天生到该步调目次下,实行控件从可实行文献中的缓兵之计。 简直做法如次: 第一步:将要用到的控件正片到暂时工程目次下,右键单击该控件,采用属性,记下文献巨细。提防,应记下以字节为单元的简直数字,而不是几何k,以备编制程序运用。 第二步:援用并平常运用该控件。 第三步:兴建资源文献介入工程,在资源文献编纂器中增添所运用的第三方控件为自设置资源(custom),资源号运用默许的101。即使运用了多个控件则辨别增添到资源文献的101、102......资源项中,脱壳代码也要作相映的窜改。 第四步:编写控件脱壳代码,使其读取资源文献的数据,在步调暂时目次下天生控件。 代码如次: private const ocxsize = 57344 '欲天生的控件巨细是57344byte,名字为cooltoolbar.ocx 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!之上为运用一个控件的情景,运用多个控件本领基础沟通,不在赘述。