我們在程式開發的時候,常常會用到別人已經設計好的元件.

這些元件由於在開發端的我們,有安裝程式語言的開發環境..

例如說..安裝Visual studio 2005..

那你的電腦裡就一定有一些runtime..



所以..自己開發的程式在所開發的那一台電腦..

只要偵錯測試完畢..

就一定可以run...



但是..

我們不可能要求user安裝類似的開發環境..

也就是說..

使用環境與開發環境通常是不一樣的..



因此我們在開發程式時所用到的元件..

使用者可能沒有相關的dll檔或其他類型的檔(.ocx之類的)

所以我們就必須提供..並且以使用者友善的立場..

自動的幫他註冊在系統中..



下面舉個例子來說如何在VB中自動幫使用者註冊dll或其他元件檔:

 -----------------------------------------------------------------------------------------------------------------

ex:在程式裡用到一個叫做MMControl的元件:

1.偵測使用者是否有用到你程式裡所使用的元件:

 -----------------------------------------------------------------------------------------------------------------

[實作程式碼]

Dim MyObj_MM As Object '宣告一個物件

'建立MCI.MMControl物件

Set MyObj_MM = Controls.Add("MCI.MMControl", "MMControl1")

MyObj_MM.Visible = True



[說明]

(1)要用到MMControl這個物件,首先必須點選

'專案\設定使用元件\Microsoft Multimedia Control 6.0'

將其勾選起來,把他引用到程式中.

(2)Set MyObj_MM = Controls.Add 這一行是用來測試使用者環境是否可以建立此元件,

若可以,代表使用者已有此元件的相關檔案,若發生錯誤,代表使用者的環境中尚無此元件相關

檔案存在.因此我們可以用On Err的語法在錯誤處理區中替他註冊元件. 

 -----------------------------------------------------------------------------------------------------------------

2.幫使用者自動註冊元件:

 -----------------------------------------------------------------------------------------------------------------

[實作程式碼]

Call Shell("regsvr32 /s" & App.Path & "\Support\MCI32.OCX")



[說明]

[1]regsvr32可以用來設定系統相關元件檔案的路徑,一經設定,系統便可以按照所設定的路徑去找到

相關檔案的位置,而我們只要把元件的相關檔案放在程式的同一個目錄下,使用者便不需安裝開發環境

,就可以透過系統路徑的設定找到我們所提供的元件檔案.

[2]regsvr32的用法:

:

 -----------------------------------------------------------------------------------------------------------------

基本上利用以上的兩個步驟,即可完成自動偵測使用者使用環境並自動註冊..

之前遇到的問題..記起來@@..

[完整程式碼]

Private Sub Form_Load( )

    Dim MyObj_MM As Object



    On Error GoTo DoErr '當有錯誤時,跳到DoErr標籤處



        ' 建立MCI.MMControl物件

        Set MyObj_MM = Controls.Add("MCI.MMControl", "MMControl1")

        MyObj_MM.Visible = True '使用者成功建立物件

    

        Unload Me

        msgbox "恭喜你,不需註冊元件"

        Exit Sub



DoErr:

     Dim rtn As String

     rtn = MsgBox("系統偵測到您的系統尚未安裝所需的元件,系統將自動幫您註冊所需元件", vbYesNo, "系統訊息")

     If rtn = vbYes Then

        Unload Me

        '註冊相關元件

        Call Shell("regsvr32 /s" & App.Path & "\Support\MCI32.OCX")

        Call Shell("regsvr32 /s" & App.Path & "\Support\MCICHT.OCX")

        Call Shell("regsvr32 /s" & App.Path & "\Support\dao360.OCX")

    Else

        MsgBox ("系統並未幫您註冊所需元件,程式無法順利執行!")

        Unload Me

    End If

End Sub

 -----------------------------------------------------------------------------------------------------------------

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 romeogi1023 的頭像
    romeogi1023

    David's Home

    romeogi1023 發表在 痞客邦 留言(0) 人氣()