注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 微软开发专栏 > VB.NET 内容正文:VB中利用第三方控件实现软件在线升级

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

发布时间:2006-03-10 20:38:54 来源:友佳学院 网友评论 0 条

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

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

相关文章
  • 用VB备份和恢复SQL Server数据库的方法
  • 如何编写高质量的VB代码
  • 给用和学VB的朋友打打气,同时分享创业故事
  • VB中利用ccrpHotKey控件设置热键
  • 用VB2005构建反应灵敏的应用程序
【评论】【收藏本文】【打印】【关闭】
上一篇文章:探索VB系列中的事件处理的奥秘
下一篇文章:用VB2005构建反应灵敏的应用程序
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
推荐阅讯
  • VB中利用ccrpHotKey控件设置热键
  • 用VB6实现程序多语言界面
  • Visual Basic编程映射/中断网络磁盘
  • 如何用vbscript实现计算机的关闭或重启
  • 继往开来 Visual Baisc 2005初体验
  • VB访问SQL Server数据库技术全揭密
  • VB与Excel2000实现复杂报表打印
  • 利用Visual Basic开发SAP接口程序初探
  • Visual Basic数据库操作方法小结
  • Visual Basic6.0事件机制分析
阅读排行
  • 1.通过实例学VB—创建简单的个人通讯录
  • 2.如何编写高质量的VB代码
  • 3.在VB的ListView控件中动态加载记录
  • 4.用VB备份和恢复SQL Server数据库的方法
  • 5.利用VB学做“黑客”程序
  • 6.掌握VB中的ADO数据对象编程
  • 7.将程序加入启动组
  • 8.VB程序中用ADO对象动态创建数据库和表
  • 9.VB与Excel2000实现复杂报表打印
  • 10.六天学会Visual Basic数据库编程
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载