学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> VB >> VB中利用第三方控件实现软件在线升级


VB中利用第三方控件实现软件在线升级


  下载本文控件和示例源代码

  大家对金山毒霸、瑞星等杀毒软件的在线升级一定不陌生吧?它们可以利用在线升级程序进行在线升级 ,无需用户访问网站下载。这样的功能的确对于使用者来说是十分方便的。那么,您是否也想为您的软件添加方便的在线升级的功能呢?下面介绍一个第三方控件,能够帮你非常容易地就实现。

  bkDLControl控件一个可以快速实现在线下载的控件,它在下载的同时通过进度条显示进度。你可以编写当其下载完成后的事件,这样我们就可以轻松达到在线升级的目的。

  要了解该控件强大便捷的功能,下面我们就通过一个实例来讲解。

  第一步:首先启动Visual Basic 6.0,新建一个窗口。
  
  第二步:加载bkDLControl控件。

  ①在控件工具栏中单击右键,选择“部件”,在弹出的窗口中点击“浏览”,找到bkDLControl控件,载入它,命名为“DL”;因为是一个进度条,所以把大小拖成一个适当的长条状,把它放到Form1窗体中适当位置即可。其他属性保持默认即可。

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

  ①在窗体中添加2个CommandButton控件,名称分别为cmdBegin和cmdCancel,Caption属性分别为“开始”和“取消”,其中设置cmdCancel的Enabled属性为“False”。

  ②添加一个ComboBox控件,名称为cboURL,在list中添加几个下载地址(如图1),其他属性保持默认。添加该控件用于选择下载地址,这样可以用用户自行选择下载的服务器。


  ③添加一个Listbox,命名为lstOut。为了美观,可以把Appearance属性设置为“0-Flat”。该控件用于显示下载过程中的进度说明。

  ④在bkDLControl控件的右下方添加一个Label,命名为lblProg,设置Autosize属性为True。它将用于实时显示下载的大小和百分比。

  程序总体界面如图2,在界面和属性设置上非常的简单。


  到这里就完成了这个演示程序的界面设置,接着进行代码的编写。

  第四步:编写代码,实现具体的功能。

  ①编写Form1的Load事件,使程序启动时cboURL显示默认的下载地址。代码如下:

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

  ③编写bkDLControl各个事件的代码,以完成具体功能:

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的相关代码,是这个在线升级程序中最关键的地方。在其提供的事件中,我们可以有很多的发挥空间,去实现很多的功能。

  ④编写SizeString函数和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控件,我们可以很方便地下载更新程序,并在其下载完成激发的事件中写入适当代码,就可以轻松完成程序在线升级,这着实为你的软件添加了方便和亮点!


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"VB中利用第三方控件实现软件在线升级"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 VB中利用第三方控件实现软件在线升级 相关内容
Google搜索中 VB中利用第三方控件实现软件在线升级 相关内容
雅虎中 VB中利用第三方控件实现软件在线升级 相关内容
Sogou搜索中 VB中利用第三方控件实现软件在线升级 相关内容

相关软件 最新回复帖子:

·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化


  相关软件 VB中利用第三方控件实现软件在线升级相关文章
用Visual Basic实现Office助手 用Visual Basic6类模块打造控件
Visual Basic编程映射/中断网络磁盘 VB中利用ccrpHotKey控件设置热键
Visual Basic编程常见问题及解答 Visual Basic中调用MSN API函数
用Visual Basic实现undo功能 VB中用第三方控件制作资源管理器
VB实现SQL Server 2000存储过程调用 用VB设计一个简单的加法程序
Visual Basic中轻松打造绚丽按钮 用Visual Basic为软件增加注册功能
VB应用程序中实现“查找和替换”功能 VB6如何在托盘中写入应用程序图标
Visual Basic6.0网络编程的五大散手 VB“变态”用法之有用技术和没用指针
VB“变态”用法之高效字串指针类 VB中用第三方控件打造QQ菜单
利用VB函数Dir()实现递归搜索目录 浅议VB6字节数组和字符串的相互转换