vb6引用vbRichClient5 下载对象 cDownloads 简单示例

 
Option Explicit
'vb6引用vbRichClient5.dll
'下载简单示例
'小噤 QQ574221329
Dim WithEvents 下载类 As cDownloads
Dim WithEvents 浏览器引擎 As cWebKit
Dim 下载列表() As String

Dim 全局字典 As Object, Fso As Object

Private Sub Command1_Click()

    Dim Obj

    For Each Obj In 全局字典
        下载类.Download (Obj)      '保存路径
    Next
    
End Sub

Private Sub Form_Load()
    '下载个数 = 6
    Set 全局字典 = CreateObject("Scripting.Dictionary")
    Set Fso = CreateObject("Scripting.FileSystemObject")

    全局字典("https://dl.360safe.com/360sd/360sd_std_5.0.0.8081C.exe") = -1
    全局字典("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/README.md") = -1
    全局字典("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Bin.7z") = -1
    全局字典("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Begin20180427.7z.001") = -1
    全局字典("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Begin20180427.7z.002") = -1
    全局字典("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Begin20180427.7z.003") = -1
    全局字典("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Begin20180427.7z.004") = -1
    全局字典("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Begin20180427.7z.006") = -1
    全局字典("https://dldir1.qq.com/qqfile/qq/QQ9.0.2/23490/QQ9.0.2.exe") = -1
    全局字典("https://dl.360safe.com/setup.exe") = -1
    全局字典("http://down.360safe.com/se/360se9.1.0.420.exe") = -1
    
    Dim Obj
    
    For Each Obj In 全局字典
        全局字典(Obj) = Me.List1.ListCount
        Me.List1.AddItem Fso.GetFileName(Obj)      '保存路径
        
    Next

    'MsgBox Fso.GetFileName("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Begin20180427.7z.001")
    
    Set 浏览器引擎 = New cWebKit
    Set 下载类 = 浏览器引擎.Downloads
    'DeleteUrlCacheEntryW "https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Bin.7z"
End Sub

Private Sub 下载类_DownloadComplete(DownloadObj As vbRichClient5.cDownload, ByVal ErrNum As Long, ErrString As String)
    'Debug.Print "下载类_DownloadComplete", Now(), DownloadObj.URL, ErrNum, ErrString
    'DownloadObj.SaveContentBytesToFile 这个方法用不了.改成写文件了
    Dim 二进制() As Byte
    二进制 = DownloadObj.GetContentData()
      
    Dim 保存路径 As String

    保存路径 = "c:\" & Fso.GetFileName(DownloadObj.URL) '保存路径
      
    Dim 可用文件号 As Long
    可用文件号 = FreeFile
      
    Open 保存路径 For Binary As #可用文件号
    Put #可用文件号, , 二进制
    Close #可用文件号
    Print 保存路径
    
    Me.List1.List(全局字典(DownloadObj.URL)) = "下载完成: " & Fso.GetFileName(DownloadObj.URL)

    DoEvents
End Sub
  
Private Sub 下载类_DownloadProgress(DownloadObj As vbRichClient5.cDownload, ByVal Percent As Single, ByVal StatusCode As Long, StatusDescription As String, StatusValue As String)
    '  Debug.Print "下载类_DownloadProgress", Now(), Percent, DownloadObj.URL, StatusCode, StatusDescription, StatusValue
    ' Debug.Print DownloadObj.URL
    ' Debug.Print Fso.GetFileName("https://raw.githubusercontent.com/qq574221329/TlbbUpdate/master/Begin20180427.7z.001")
    ' Debug.Print Fso.GetFileName(DownloadObj.URL)
    Me.List1.List(全局字典(DownloadObj.URL)) = "开始下载: " & Fso.GetFileName(DownloadObj.URL) & " " & Format$(Percent, "Percent")

    DoEvents
End Sub
  
Private Sub 下载类_DownloadStart(DownloadObj As vbRichClient5.cDownload)
    ' Debug.Print 全局字典(DownloadObj.URL), "下载类_DownloadStart", Now(), DownloadObj.URL

    Me.List1.List(全局字典(DownloadObj.URL)) = "等待下载: " & Fso.GetFileName(DownloadObj.URL)

    DoEvents
End Sub



说明: 1此程序由ecz00程序优化而来 地址 http://download.csdn.net/download/ecz00/9403630 因此程序可以说是网上唯一的tcpclient使用的中文案例,提供了我思路,在此感谢 ;为什么用这个插件,vb自带的插件winsock 这么有用的插件 居然不是微软自带的插件, 最要命的是 直接注册ocx控件 win7 win10上可能因为序列号无法注册,那么vb下如何开发ip客户端,变得很麻烦,尝试过APi方法的,但是过于复杂,程序量太大,比较麻烦,因此用 此方案比较可行,在原版的基础上花了5天时间摸索和优化, 此版本使用方法 1 把vbRichClient5.dll放进C:\Windows\SysWOW64 (64位系统) 2 在vb6中点击 工程->引用 把上面的dll引用进来就可以额,不需要注册 3:使用sscom5.12.1 或其他tcp调试软件软件启动tcpserver 地址是127,0,0,1 5676 4:直接运行本软件即可使用。点击连接,显示成功,说明连接成功,可以相互发送数据了 服务端的程序在原版上未做修改,请自行优化 此软件改进了原版 1:无法显示连接状态和错误信息 2:只能发送不能接收 3:使用主机名的连接方式,无法直接使用,一开始 4:无法显示byte值 5:界面修改 6:连接的时候,不断开以前的连接,造成重复连接 提示 vbRichClient5的手册找遍了都找不到,估计作者都没写,更别想有中文版了,所以只能 在vb6中点击视图-》对象窗口,可显示vbRichClient5.dll 所有的类和方法 QQ175891641 2018-2-15优化
发现网上关于vbrichclient的教程比较少,但这个实在是好东西,实用性,稳定性都比VB自带的winsock好的多,多客户端不用winsock控件数组。 也不用在各窗体上放winsock,直接在模块中就能实现收发 下面直接上代码,窗体和文本钮、按钮大家自行拖放。要用到VB自带隐藏函数varptr()取内存指针(VbMsdn中没有这个函数,实际上很简单^^)。 VbRichClient5.0.38中包含sqlite3.9支持 上面共享中也包含VbRichClient5.0.38支持库 VbRichClient代替winsock 主要使用 cTCPServer cTCPClient cUDP '--------------------------------------------------------------------- '服务器端,代码最简化,要实现多客户端只要用数组存hsocket就可以 Option Explicit Dim WithEvents sv As cTCPServer Dim WithEvents udp1 As cUDP Dim cHsocket& Private Sub Form_Load() Set sv = New cTCPServer sv.Listen sv.GetHost("127.0.0.1"), 35912 Debug.Print sv.GetHost("") Set udp1 = New cUDP udp1.Bind "127.0.0.1", 5616 End Sub Private Sub sv_DataArrival(ByVal hSocket As Long, ByVal BytesTotal As Long, ByVal FirstBufferAfterOverflow As Boolean) Dim d() As Byte, s$ ReDim d(BytesTotal - 1) sv.GetData hSocket, VarPtr(d(0)), BytesTotal '★★关键代码 s = d Text2.Text = Text2.Text & s & vbCrLf Debug.Print "收到:" & BytesTotal End Sub Private Sub sv_TCPAccepted(ByVal hSocket As Long) cHsocket = hSocket Text1.Text = Text1.Text & sv.GetPeerHostIPAndPort(hSocket) & vbCrLf End Sub Private Sub sv_TCPDisConnect(ByVal hSocket As Long) Text3.Text = Text3.Text & sv.GetPeerHostIPAndPort(hSocket) & vbCrLf End Sub Private Sub udp1_NewDatagram(ByVal BytesTotal As Long, ByVal FirstBufferAfterOverflow As Boolean) Dim d() As Byte, s$ ReDim d(BytesTotal - 1) udp1.GetData VarPtr(d(0)), BytesTotal s = d Text2.Text = Text2.Text & s & vbCrLf End Sub '------------------------------------------------------- '客户端 Option Explicit Dim WithEvents cl As cTCPClient Dim WithEvents udp1 As cUDP Dim cid& Private Sub Command1_Click() cid = cl.Connect("QgB1", 35912) End Sub Private Sub Command2_Click() cl.Disconnect cid End Sub Private Sub Command3_Click() Dim b() As Byte b = Text1.Text cl.SendData cid, VarPtr(b(0)), UBound(b) + 1 End Sub Private Sub Command4_Click() Dim d() As Byte, s$ s = "yessss" d = s udp1.RemoteIP = "127.0.0.1" udp1.RemotePort = 5616 u
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值