2024年6月15日发(作者:)

vb 6.0 获取本机公网IP

Private Declare Function InternetOpen Lib "" 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 "" Alias

"InternetOpenUrlA" ( _

ByVal hInternetSession As Long, ByVal sUrl As String, _

ByVal sHeaders As String, ByVal lHeadersLength As Long, _

ByVal lFlags As Long, ByVal lContext As Long) As Long

Private Declare Function InternetReadFile Lib "" ( _

ByVal hFile As Long, ByVal sBuffer As String, _

ByVal lNumBytesToRead As Long, _

lNumberOfBytesRead As Long) As Integer

Private Declare Function InternetCloseHandle Lib "" ( _

ByVal hInet As Long) As Integer

Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000

Private Declare Function URLDownloadToFile Lib "urlmon" Alias

"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal

szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Public Function GetIP() As String

Dim wburl$, wburl2$, X1, X2, X3, X4

On Error GoTo err

wburl = "/"

wburl = GetUrlFile(wburl)

If InStr(1, wburl, "无法找到该页") = 0 Then

X1 = InStr(1, wburl, "[")

X2 = InStr(1, wburl, "]")

X1 = Mid(wburl, X1, X2 - X1)

X1 = Replace(X1, "[", "")

X1 = Replace(X1, " ", "")

X1 = Replace(X1, vbCrLf, "")

GetIP = X1

Exit Function

End If

wburl2 = "/static/customercare/"

wburl2 = GetUrlFile(wburl2)

If InStr(1, wburl2, "无法找到该页") = 0 Then

X3 = InStr(1, wburl2, "

")

X4 = InStr(1, wburl2, "

")

X3 = Mid(wburl2, X3, X4 - X3)

X3 = Replace(X3, "

", "")

X3 = Replace(X3, " ", "")

X3 = Replace(X3, vbCrLf, "")

GetIP = X3

Exit Function

Else

GetIP = "127.0.0.1"

End If

err:

GetIP = "127.0.0.1"

End Function

Private Function GetUrlFile(stUrl As String) As String

Dim lgInternet As Long, lgSession As Long

Dim stBuf As String * 1024

Dim inRes As Integer

Dim lgRet As Long

Dim stTotal As String

stTotal = vbNullString

lgSession = InternetOpen("VBTagEdit", 1, vbNullString, vbNullString, 0)

If lgSession Then

lgInternet = InternetOpenUrl(lgSession, stUrl, vbNullString, _

0, INTERNET_FLAG_NO_CACHE_WRITE, 0)

If lgInternet Then

Do

inRes = InternetReadFile(lgInternet, stBuf, 1024, lgRet)

stTotal = stTotal & Mid$(stBuf, 1, lgRet)

Loop While (lgRet <> 0)

End If

inRes = InternetCloseHandle(lgInternet)

End If

GetUrlFile = stTotal

End Function

使用方法:调用GetIP 返回值即为公网IP

Private Sub Command1_Click()

Dim aa As String

Dim strLocalIP As String

Dim winIP As Object

aa = aa & "本机电脑名称:" & Environ("computername") & vbCrLf

aa = aa & "本机用户名称:" & Environ("username") & vbCrLf

Set winIP = CreateObject("k")

strLocalIP = p

MsgBox aa & "本机IP:" & strLocalIP

End Sub