Red de conocimiento informático - Problemas con los teléfonos móviles - Problema de programación de VB: Obtener IP de banda ancha.

¡Pregunta a los expertos!

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

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>

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

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