获取外网IP的几种方法

测试了几种方法,其实质是一样的,还是觉得第一种最好,最简单.下面分别列出来:

 

第一种:用XML

    Set h = CreateObject("Microsoft.XMLHTTP")
    h.Open "GET", "http://www.ip138.com/ip2city.asp", False
    h.Send
    If h.ReadyState = 4 Then s = StrConv(h.Responsebody, vbUnicode)
    If InStr(s, "[") > 0 And InStr(s, "]") > 0 Then MsgBox Split(Split(s, "[")(1), "]")(0) Else MsgBox "IP地址获取失败"

第二种:用inet控件

    Dim WWIP As String, Tmp As Long
    WWIP = Inet1.OpenURL("http://www.ip138.com/ip2city.asp")
    Tmp = InStr(1, WWIP, "[")
    If Tmp > 0 Then
        MsgBox Mid(WWIP, Tmp + 1, InStr(Tmp + 1, WWIP, "]") - Tmp - 1)
    Else
        MsgBox "IP地址获取失败"
    End If

第三种:用纯API

Private Declare Function InternetOpen Lib "Wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "Wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetReadFile Lib "Wininet.dll" (ByVal hFile As Long, sBuffer As Any, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "Wininet.dll" (ByVal hInet As Long) As Integer
Private Const OnceLen = 2048
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_FLAG_RELOAD = &H80000000

 

'打开URL函数
Function OpenURL(ByVal sURL As String) As String
    Dim hOpen As Long, hFile As Long, RetLen As Long, Buffer() As Byte, szBuffer As String
    hOpen = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
    hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
    If hFile <> 0 Then
        Do
            ReDim Buffer(OnceLen - 1)
            InternetReadFile hFile, ByVal VarPtr(Buffer(0)), OnceLen, RetLen
            DoEvents
            If RetLen = 0 Then Exit Do
            If RetLen < OnceLen Then ReDim Preserve Buffer(RetLen - 1)
            szBuffer = szBuffer & CStr(Buffer)
        Loop
        InternetCloseHandle hFile
    End If
    InternetCloseHandle hOpen
    OpenURL = StrConv(szBuffer, vbUnicode)
End Function

 

Private Sub Command1_Click()
    Dim s As String
    s = OpenURL("http://www.ip138.com/ip2city.asp")
    If InStr(s, "[") > 0 And InStr(s, "]") > 0 Then MsgBox Split(Split(s, "[")(1), "]")(0) Else MsgBox "IP地址获取失败"
End Sub

 

第四种:用"InternetExplorer.Application"对象

    Dim objIE As Object
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = False
    objIE.Navigate "http://www.ip138.com/ip2city.asp"
    Do While objIE.Busy
        DoEvents
    Loop
    MsgBox objIE.Document.body.innertext
    Set objIE = Nothing
 

第五种:用WebBrowser控件

不推荐,略

 

参见原帖:

http://www.vbgood.com/thread-73675-1-1.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值