Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long
Private Const MAX_IP = 255
Private Type IPINFO
dwAddr
As Long
'ip地址·
dwIndex
As Long
dwMask
As Long
'子网掩码
dwBCastAddr
As Long
'广播地址·
dwReasmSize
As Long
unused1
As Integer
unused2
As Integer
End Type
Private Type MIB_IPADDRTABLE
dEntrys
As Long
mIPInfo(MAX_IP)
As IPINFO
End Type
Private Type IP_Array
mBuffer
As MIB_IPADDRTABLE
BufferLen
As Long
End Type
Dim strIP
As String
Private Function ConvertAddressToString(longAddr As Long) As String
Dim myByte(3)
As Byte
Dim Cnt
As Long
CopyMemory myByte(0), longAddr, 4
For Cnt = 0 To 3
ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
Next Cnt
ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
End Function
Public Function getMyIP()
Dim Ret
As Long, Tel
As Long
Dim bBytes()
As Byte
Dim Listing
As MIB_IPADDRTABLE
On Error GoTo END1
GetIpAddrTable ByVal 0&, Ret, True
If Ret <= 0 Then Exit Function
ReDim bBytes(0 To Ret - 1) As Byte
GetIpAddrTable bBytes(0), Ret, False
CopyMemory Listing.dEntrys, bBytes(0), 4
getMyIP = "0.0.0.0"
For Tel = 0 To Listing.dEntrys - 1
CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel))
strIP = ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr)
'
strIP = strIP & "IP
地址
:
" & ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr) & vbCrLf
'
strIP = strIP & "子网掩码
:
" & ConvertAddressToString(Listing.mIPInfo(Tel).dwMask) & vbCrLf
'
strIP = strIP & "广播地址
:
" & ConvertAddressToString(Listing.mIPInfo(Tel).dwBCastAddr) & vbCrLf
'
strIP = strIP & "------------------------------------------------" & vbCrLf
Select Case Mid(strIP, 1, 3)
Case "127"
Case "192"
Case Else
getMyIP = strIP
End Select
Next
Exit Function
END1:
getMyIP = "0.0.0.0"
End Function
Form1中的内容
Private Sub Command1_Click()
MsgBox getMyIP
End Sub