小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VB中第三方控件使用之金蟬脫殼

 玉雪龍山999 2012-02-14

Visual Basic中第三方控件使用之金蟬脫殼

發(fā)布時(shí)間:2008-04-03 10:46:25  來(lái)源:編程愛(ài)好者網(wǎng)站  作者:編程愛(ài)好者網(wǎng)站  點(diǎn)擊:318

  在用VB編程中合理的使用第三方控件,往往能夠事半功倍。但是使用第三方控件也有不好的地方,那就是為了保證程序正常運(yùn)行,必須使程序能夠在系統(tǒng)目錄或程序目錄下找到所用的第三方控件。要做到這一點(diǎn)通常有兩種辦法:一是把控件和程序制成一個(gè)壓縮包發(fā)行,這樣的缺點(diǎn)是有可能導(dǎo)致在程序傳播過(guò)程中丟失控件文件。二是制作安裝程序,缺點(diǎn)是制作過(guò)程煩瑣。而且上面兩種辦法也不符合綠色軟件的要求。所謂的綠色軟件是指軟件只有單個(gè)可執(zhí)行文件且無(wú)須安裝,目前很受用戶歡迎。那么有沒(méi)有辦法在使用了第三方控件的情況下實(shí)現(xiàn)綠色軟件夢(mèng)呢?答案是有。

  做法是,將第三方控件以自定義資源文件方式保存在程序中,程序運(yùn)行之后使用控件之前將所用到的控件生成到該程序目錄下,完成控件從可執(zhí)行文件中的金蟬脫殼。

  具體做法如下:

  第一步:將要用到的控件拷貝到當(dāng)前工程目錄下,右鍵單擊該控件,選擇屬性,記下文件大小。注意,應(yīng)記下以字節(jié)為單位的具體數(shù)字,而不是多少K,以備編程使用。

  第二步:引用并正常使用該控件。

  第三步:新建資源文件加入工程,在資源文件編輯器中添加所使用的第三方控件為自定義資源(CUSTOM),資源號(hào)使用默認(rèn)的101。如果使用了多個(gè)控件則分別添加到資源文件的101、102......資源項(xiàng)中,脫殼代碼也要作相應(yīng)的修改。

  第四步:編寫(xiě)控件脫殼代碼,使其讀取資源文件的數(shù)據(jù),在程序當(dāng)前目錄下生成控件。

  代碼如下:

Private Const OCXSIZE = 57344 ’欲生成的控件大小是57344Byte,名字為CoolToolBar.ocx

Sub Main()
 Dim Ocx() As Byte ’OCX是個(gè)Btye類(lèi)型的數(shù)組
 Dim Counter As Long
 Ocx = LoadResData(101, "CUSTOM") ’將自定義資源中101號(hào)資源讀入數(shù)組OCX
 ’注意,微軟的幫助中對(duì)加載自定義資源的說(shuō)明有錯(cuò)誤,自定義資源標(biāo)識(shí)為"CUSTOM"而不是幫助所說(shuō)的數(shù)字10

 If Right(App.Path, 1) = "\" Then ’讀取程序所在路徑,判斷是否為根目錄并分別處理
  ’程序在根目錄下
  If Dir(App.Path & "CoolToolBar.ocx") = "" Then ’程序路徑下有無(wú)控件,無(wú)則生成控件
   ’以二進(jìn)制方式寫(xiě)(生成)控件(CoolToolBar.ocx)到主程序所在的目錄
   Open App.Path & "CoolToolBar.ocx" For Binary As #1
   For Counter = 0 To OCXSIZE - 1 ’注意因?yàn)閺? Byte開(kāi)始因此以文件大小 - 1Byte 為終值
    Put #1, , Ocx(Counter)
   Next Counter
   Close #1
  End if
 Else
  ’程序不在根目錄下
  If Dir(App.Path & "\CoolToolBar.ocx") = "" Then ’程序路徑下有無(wú)控件,無(wú)則生成控件
   ’以二進(jìn)制方式寫(xiě)(生成)控件(CoolToolBar.ocx)到主程序所在的目錄
   Open App.Path & "\CoolToolBar.ocx" For Binary As #1
   For Counter = 0 To OCXSIZE - 1 ’注意因?yàn)閺? Byte開(kāi)始因此以文件大小 - 1Byte 為終值
    Put #1, , Ocx(Counter)
   Next Counter
   Close #1
  End if
 End if
 Form1.Visible = True ’主程序所用控件已經(jīng)生成,顯示主窗體,進(jìn)入主程序。
End Sub

  注意:將以上代碼作為一個(gè)模塊添加到工程中,并在工程-工程屬性設(shè)置中將啟動(dòng)對(duì)象選為Sub Main,即上面的脫殼代碼。然后編譯生成EXE文件,將該EXE文件拷貝到其他沒(méi)有安裝所用控件的計(jì)算機(jī)上運(yùn)行一下看看是否實(shí)現(xiàn)了控件攜帶之金蟬脫殼。如果是那么OK!以上為使用一個(gè)控件的情況,使用多個(gè)控件方法基本相同,不在贅述。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多