Inndy 發表於 2013-4-15 11:29:32

別再用MSINET.OCX了,用這個模組簡單多了

' HTTP Downloading Module By Inndy
Option Explicit
' For API
Private Const CP_ACP = 0        ' default to ANSI code page
Private Const CP_UTF8 = 65001   ' default to UTF-8 code page
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
' For module
Public Enum Encode
    ANSI = 0
    BIG5 = 1
    UTF8 = 2
End Enum

Private Function ToUTF8(ByVal sData As String) As Byte()
    Dim aRetn() As Byte, nSize As Long
    nSize = WideCharToMultiByte(CP_UTF8, 0, StrPtr(sData), -1, 0, 0, 0, 0)
    ReDim aRetn(0 To nSize - 1) As Byte
    WideCharToMultiByte CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize, 0, 0
    ToUTF8 = aRetn
End Function

Private Function FromUTF8(ByVal sData As String) As Byte()
    Dim aRetn() As Byte, nSize As Long
    nSize = MultiByteToWideChar(CP_UTF8, 0, StrPtr(sData), -1, 0, 0)
    ReDim aRetn(0 To 2 * nSize - 1) As Byte
    MultiByteToWideChar CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize
    FromUTF8 = aRetn
End Function

Public Function DownloadData(ByVal url As String) As Byte()
    Dim http As Object
    Set http = CreateObject("MSXML2.ServerXMLHTTP")
    http.Open "GET", url, False
    http.setRequestHeader "Pragma", "no-cache"
    http.send
    DownloadData = http.responseBody
    Set http = Nothing
End Function

Public Function DownloadString(ByVal url As String, Optional ByVal EncType As Encode = Encode.BIG5) As String
    If EncType = Encode.ANSI Then
        DownloadString = DownloadData(url)
    ElseIf EncType = Encode.BIG5 Then
        DownloadString = StrConv(DownloadData(url), vbUnicode)
    Else
        DownloadString = FromUTF8(DownloadData(url))
    End If
End Function

小神仙 發表於 2013-4-15 12:27:12

這是拿來做什麼的?

zack2213330 發表於 2013-4-15 17:56:07

謝謝Inndy大大^^

a0926206677 發表於 2013-4-15 22:16:11

MSINET.OCX感覺很眼熟
可是還是看不懂

marianne980 發表於 2013-4-16 21:15:23

我只知道 有些人的電腦開掛 它會告訴你缺少ocx
我只會把補丁給它們去執行
不知道這個東西該丟進去哪裡?
或許又是不懂程式語言無法理解的東西@@
還是感謝i大的分享歐~~

zxc199450 發表於 2013-4-17 00:18:40

MSINET.OCX 是什麼?
這模組又該怎麼用?

david19970722 發表於 2014-4-24 18:09:09

剛接觸 上面寫的有點難懂 不過感恩
頁: [1]
查看完整版本: 別再用MSINET.OCX了,用這個模組簡單多了