Problema de programación de VB: Obtener IP de banda ancha.
¡Pregunta a los expertos!
'Simplemente agregue un botón de control Command1 al formulario
Private Const MAX_IP = 255
Private Type IPINFO
dwAddr As Long
dwIndex mientras
dwMask mientras
dwBCastAddr mientras
dwReasmSize mientras
used1 como entero
no utilizado2 como entero
tipo final
tipo privado MIB_IPADDRTABLE
dEntrys siempre
mIPInfo( MAX_IP) como IPINFO
Tipo final
Tipo privado IP_Array
mBuffer As MIB_IPADDRTABLE
BufferLen As Long
Tipo final
Declaración privada Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destino como cualquiera, Fuente como cualquiera, Longitud ByVal tan larga)
Función de declaración privada GetIpAddrTable Lib "IPHlpApi" ( pIPAdrTable como byte, pdwSize como largo, ByVal ordenar como largo) como largo
Dim strIP As String 'Todas las ips
Dim webip As String 'IPs orientadas a Internet
Private Sub Command1_Click()
checkip
MsgBox strIP & vbCrLf
MsgBox "IP externa local:" & webip
Fin Sub
Función privada ConvertAddressToString
(longAddr As Long) Como cadena
Dim myByte(3) Como Byte
Dim Cnt As Long
CopyMemory myByte(0), longAddr, 4 p>
Para Cnt = 0 a 3
ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
Siguiente Cnt
ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
Función final
Public Sub checkip()
Dim Ret As Long, Tel As Long
Atenuar bBytes() como byte
Listado atenuado como MIB_IPADDRTABLE
En caso de error Ir a END1
GetIpAddrTable ByVal 0&, Ret, True p>
p>
Si Ret <= 0, entonces salga de Sub
ReDim bBytes(0 a Ret - 1) como byte
GetIpAddrTable bBytes(0), Ret , False
CopyMemory Listing.dEntrys, bBytes(0), 4
strIP = "Hay " & Listing.dEntrys & " direcciones IP en su máquina.
" & vbCrLf
strIP = strIP & "---------------------------------- - ------------" & vbCrLf & vbCrLf
Para Tel = 0 Para Listing.dEntrys - 1
CopyMemory Listing.mIPInfo(Tel), bBytes (4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel))
strIP = strIP & "Dirección IP: " & ConvertAddressToString(Listing.mIPInfo ( Tel).dwAddr) & vbCrLf
strIP = strIP & "Máscara de subred: " & ConvertAddressToString(Listing.mIPInfo(Tel).dwMask) & vbCrLf
strIP = strIP & "Transmisión dirección: " & ConvertAddressToString(Listing.mIPInfo(Tel).dwBCastAddr) & vbCrLf
strIP = strIP & "------------------ --- ----------------------" & vbCrLf
Atenuar thisip como cadena, ipqz como cadena p>
thisip = ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr)
ipqz = Left(thisip, InStr(thisip, ".") - 1)
If ipqz < > "10" E ipqz <> "172" E ipqz <> "192" E ipqz <> "127" Entonces
webip = thisip
Finalizar si
Siguiente
Salir Sub
END1:
MsgBox "ERROR"
Fin Sub