• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • VB中利用第三方控件實現軟件在線升級

    發表于:2007-05-25來源:作者:點擊數: 標簽:在線升級第三方實現利用控件
    大家對金山毒霸、瑞星等殺毒軟件的在線升級一定不陌生吧?它們可以利用在線升級程序進行在線升級 ,無需用戶訪問網站下載。這樣的功能的確對于使用者來說是十分方便的。那么,您是否也想為您的軟件添加方便的在線升級的功能呢?下面介紹一個第三方控件,能夠
     大家對金山毒霸、瑞星等殺毒軟件的在線升級一定不陌生吧?它們可以利用在線升級程序進行在線升級 ,無需用戶訪問網站下載。這樣的功能的確對于使用者來說是十分方便的。那么,您是否也想為您的軟件添加方便的在線升級的功能呢?下面介紹一個第三方控件,能夠幫你非常容易地就實現。

      bkDLControl控件一個可以快速實現在線下載的控件,它在下載的同時通過進度條顯示進度。你可以編寫當其下載完成后的事件,這樣我們就可以輕松達到在線升級的目的。

      要了解該控件強大便捷的功能,下面我們就通過一個實例來講解。

      第一步:首先啟動Visual Basic 6.0,新建一個窗口。
      
      第二步:加載bkDLControl控件。

     ?、僭诳丶ぞ邫谥袉螕粲益I,選擇“部件”,在彈出的窗口中點擊“瀏覽”,找到bkDLControl控件,載入它,命名為“DL”;因為是一個進度條,所以把大小拖成一個適當的長條狀,把它放到Form1窗體中適當位置即可。其他屬性保持默認即可。

      第三步:加載其他控件,完成界面的設置。

     ?、僭诖绑w中添加2個CommandButton控件,名稱分別為cmdBegin和cmdCancel,Caption屬性分別為“開始”和“取消”,其中設置cmdCancel的Enabled屬性為“False”。

     ?、谔砑右粋€ComboBox控件,名稱為cboURL,在list中添加幾個下載地址(如圖1),其他屬性保持默認。添加該控件用于選擇下載地址,這樣可以用用戶自行選擇下載的服務器。


     ?、厶砑右粋€Listbox,命名為lstOut。為了美觀,可以把Appearance屬性設置為“0-Flat”。該控件用于顯示下載過程中的進度說明。

     ?、茉赽kDLControl控件的右下方添加一個Label,命名為lblProg,設置Autosize屬性為True。它將用于實時顯示下載的大小和百分比。

      程序總體界面如圖2,在界面和屬性設置上非常的簡單。


      到這里就完成了這個演示程序的界面設置,接著進行代碼的編寫。

      第四步:編寫代碼,實現具體的功能。

     ?、倬帉慒orm1的Load事件,使程序啟動時cboURL顯示默認的下載地址。代碼如下:

    clearcase/" target="_blank" >cc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    Private Sub Form_Load()
      cboURL.ListIndex = 0
    End Sub

     ?、谔砑觾蓚€commandbutton的Click事件,分別實現開始下載和取消下載的功能。

    Private Sub cmdBegin_Click()
      With DL        
       .FileURL = cboURL.Text ’設置bkDLControl的下載地址    
       .SaveFilePath = App.Path ’設置下載后的保存路徑,這里設置為當前程序所在文件夾
       LogItem "請求下載" & cboURL.Text
       ’在lstOut中添加下載狀態說明,這里使用了一個自定義過程,該過程的代碼將在下面第四步說明
       .BeginDownload ’發出開始下載命令
      End With
      cmdCancel.Enabled = True ’設置cmdCancel屬性為True,使下載過程中可以中止下載
    End Sub

    Private Sub cmdCancel_Click()
       DL.CancelDownload ’發出取消下載命令
    End Sub

     ?、劬帉慴kDLControl各個事件的代碼,以完成具體功能:

    Private Sub DL_DLBeginDownload()
     LogItem "開始下載從" & DL.FileURL
    End Sub

    Private Sub DL_DLCanceled()
     LogItem "取消下載"
    End Sub

      上面兩段代碼是開始和取消下載時的事件,向lstOut輸入狀態。

    Private Sub DL_DLComplete(Bytes As Long) ’下載完成的事件
     cmdCancel.Enabled = False
     If Bytes > 0& Then ’如果下載的不是零字節,則顯示相關信息
      LogItem "完成" & SizeString(Bytes) & "下載并保存到" & DL.SaveFileName
      ’下面添加實現文件更新的代碼
      ……
     Else
      LogItem "下載失敗"
     End If
    End Sub

      上面的代碼調用了一個自定義函數SizeString,代碼同樣在第四步中說明。這段bkDLControl完成下載時激發的事件是我們實現在線升級的關鍵,下載完成后就可以調用下載的內容完成更新,具體的更新辦法有很多種,大家可以充分發揮了。

    Private Sub DL_DLConnected(ConnAddr As String)
     LogItem "連接到 " & ConnAddr ’當連接成功時返回IP地址
    End Sub

    Private Sub DL_DLError(E As bkDLError, Error As String)
     Dim strErrType As String ’下載錯誤時的事件
     Select Case E
      Case bkDLEUnavailable
       strErrType = "不可下載文件"
      Case bkDLERedirect
       strErrType = "重定向"
      Case bkDLEZeroLength
       strErrType = "沒有字節返回"
      Case bkDLESaveError
       strErrType = "文件保存錯誤"
      Case bkDLEUnknown
       strErrType = "不明錯誤"
     End Select
     LogItem "錯誤 - " & strErrType & ": " & Error
    End Sub

      當bkDLControl控件返回零字節時激發上面的出錯事件,并在lstOut中顯示相關錯誤信息。

    Private Sub DL_DLFileSize(Bytes As Long)
     ’當連接后返回文件的大小,單位為字節,我們通過自定義的函數對單位進行必要轉換
     LogItem "文件大小為" & SizeString(Bytes) & " (" & CStr(Bytes) & " bytes)"
    End Sub

    Private Sub DL_DLMIMEType(MIMEType As String)
     LogItem "MIME類型是 " & MIMEType
    End Sub

    Private Sub DL_DLProgress(Percent As Single, BytesRead As Long, TotalBytes As Long)
     ’下載過程中的事件,返回下載百分比和已下載字節數。我們通過下面一行代碼在lstOut中顯示
     lblProg.Caption = Format(Percent, "0%") & " of " & SizeString(TotalBytes)
    End Sub

    Private Sub DL_DLRedirect(ConnAddr As String)
     ’返回地址如果重定向 
     LogItem Index, "重定向到" & ConnAddr
    End Sub

      上面是bkDLControl的相關代碼,是這個在線升級程序中最關鍵的地方。在其提供的事件中,我們可以有很多的發揮空間,去實現很多的功能。

     ?、芫帉慡izeString函數和LogItem過程,完成最后的代碼編寫。

    Private Sub LogItem(strItem As String)
     With lstOut
      .AddItem "> " & strItem
      If .NewIndex > .TopIndex + 17 Then
       .TopIndex = .NewIndex - 16
      End If
     End With
    End Sub

      上面的過程用于向lstOut添加下載進度信息,其中使用了一個變量,用于裝載相應事件描述。

    Private Function SizeString(lBytes As Long) As String
     If lBytes < &H400& Then
      SizeString = CStr(lBytes) & "b"
     ElseIf lBytes < &H100000 Then
      SizeString = CStr(lBytes \ 1024) & "k"
     ElseIf lBytes < &H20000000 Then
      SizeString = Replace$(Format$((lBytes \ 1024) / 1024, "0.0"), ".0", vbNullString) & "M"
     Else
      SizeString = Replace$(Format$((lBytes \ (1024 ^ 2)) / 1024, "#,##0.0"), ".0", vbNullString) & "G"
     End If
    End Function

      上面的函數把傳送來的lBytes根據其大小,轉換成合適的單位。

      到這里,這個演示程序就完成了,按下F5,在下拉框中選擇地址或者輸入其他下載地址后按開始就可以開始下載了。我們可以看到連接下載信息,實時的已下載進度情況,并用進度條的方式表現(如圖3)。


      有了bkDLControl控件,我們可以很方便地下載更新程序,并在其下載完成激發的事件中寫入適當代碼,就可以輕松完成程序在線升級,這著實為你的軟件添加了方便和亮點!

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>