當前位置:編程學習大全網 - 編程語言 - VB運行時怎麽加載存在自身路徑下的控件文件?請多多幫助!謝謝!!

VB運行時怎麽加載存在自身路徑下的控件文件?請多多幫助!謝謝!!

按照下面的方法做,把裏面的東西換成妳要用的控件有關的信息,做完後在工程資源管理器窗口裏右鍵點屬性,把啟動窗口設為?Sub?Main

如何在VB中加載OCX文件(或其他控件文件)

近來寫的不少文件都是用到系統的ocx文件,但是發現很多xp的精簡系統中居然都沒有這些ocx文件。搞得我的程序在許多人的機器上無法運行,這樣我就找到如下的方法來解決這個問題。即:在exe文件中將ocx作為資源文件,外部有則不理,外部沒有則自動生成。

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

具體做法如下:

第壹步:將要用到的控件拷貝到當前工程目錄下,右鍵單擊該控件,選擇屬性,記下文件大小。註意,應記下以字節為單位的具體數字,而不是多少K,以備編程使用。

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

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

第四步:編寫控件脫殼代碼,使其讀取資源文件的數據,在程序當前目錄下生成控件。

說壹下如何加載資源吧:

外接程序->外接程序管理器->VB?6?ResourceEditor 加載->在工具欄裏會多壹個按鈕,點擊它。

然後就如下面的圖,點擊紅色圓圈部分,就可以加載custom?資源了。

代碼如下:

Private?Const?OCXSIZE?=?198456?'欲生成的控件大小是198456Byte,名字為MCI32.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)?=?"($%$43%^#ASD#2@$#f$%^)"?Then?'讀取程序所在路徑,判斷是否為根目錄並分別處理

'程序在根目錄下

If?Dir(App.Path?&?"MCI32.OCX")?=?""

Then?'程序路徑下有無控件,無則生成控件

? '以二進制方式寫(生成)控件(CoolToolBar.ocx)到主程序所在的目錄

? Open?App.Path?&?"MCI32.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?&?"\MCI32.OCX")?=?""

Then?'程序路徑下有無控件,無則生成控件

? '以二進制方式寫(生成)控件(CoolToolBar.ocx)到主程序所在的目錄

? Open?App.Path?&?"\MCI32.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!以上為使用壹個控件的情況,使用多個控件方法基本相同,不在贅述。

  • 上一篇:編程入門就學c++結果好多概念都不知道怎麽辦
  • 下一篇:為什麽jsp在開發企業級應用系統方面比net更具優勢?
  • copyright 2024編程學習大全網