Acceder a los parámetros de Red desde Visual Basic, no es algo sencillo. Cuando menos requerirá acceder a información del registro o hacer uso de las API de Windows.
Pero no es necesario bucear tan profundo para lograrlo. El siguiente código permite obtener los parámetros comunes de la red desde el viejo lenguaje VB6.
El método que he usado es algo tosco, pero efectivo, si es que se tiene el sistema operativo configurado en español y no se tiene una configuración complicada en la Red. Se basa en ejecutar el comando «ipconfig» de Windows y luego leer la salida del comando. Así de simple.
Pueden pegar este código en un formulario vacío:
Option Explicit
Private Declare Sub Sleep Lib «kernel32» (ByVal dwMilliseconds As Long)
Private Function LeeConfiguraciónRed() As String
‘Lee la IP local, la puerta de enlace y los DNS. Devuelve una cadena con los
‘tres parámetros en 3 líneas.
Dim arcSal As String
Dim tic As Integer
Dim nar As String
Dim lin As String, tmp As String
arcSal = «d:ip.txt»
BorraArc arcSal
Shell «cmd /c ipconfig /all > » & arcSal
tic = 0 ‘para esperar hasta 10 segundos
While Not Dispon(arcSal) And tic < 10
Sleep 50 ‘espera
DoEvents ‘para no retrasar los eventos
tic = tic + 1
Wend
If Dispon(arcSal) Then
nar = FreeFile
‘captura IP
Open arcSal For Input As #nar
While Not EOF(nar)
Line Input #nar, lin
If lin Like «*IPv4. *» Then tmp = tmp & lin & vbCrLf
Wend
Close #nar
‘captura Puerta de enlace
Open arcSal For Input As #nar
While Not EOF(nar)
Line Input #nar, lin
If lin Like «*Puerta de enlace *» Then
tmp = tmp & lin & vbCrLf
End If
Wend
Close #nar
‘captura Puerta de enlace
Open arcSal For Input As #nar
While Not EOF(nar)
Line Input #nar, lin
If lin Like «*Servidores DNS. *» Then
tmp = tmp & lin & vbCrLf
Line Input #nar, lin ‘siguiente DNS
tmp = tmp & lin
End If
Wend
Close #nar
LeeConfiguraciónRed = tmp
Else
LeeConfiguraciónRed = «Error leyendo configuración»
End If
End Function
Private Sub Form_Load()
MsgBox LeeConfiguraciónRed()
End Sub
Function BorraArc(arc As String) As Boolean
‘Borra un archivo. Devuelve TRUE si lo logra.
If Dir(arc) = «» Then
BorraArc = True ‘No existía
Exit Function
End If
On Error Resume Next
Kill arc
If Err.Number = 0 Then
BorraArc = True
Else ‘falló
BorraArc = False
End If
On Error GoTo 0
End Function
Function Dispon(arc As String) As Boolean
‘Verifica disponibilidad de archivo
Dim pos As Long
Dim cad As String
Dim arc_temp As String
arc_temp = arc & «.chg» ‘inicia
If Dir(arc_temp) <> «» Then Kill arc_temp ‘si ya existe lo borra
On Error Resume Next
Name arc As arc_temp
If Err.Number = 0 Then ‘se cambio de nombre
Name arc_temp As arc ‘devuelve nombre
Dispon = True
Else ‘falló, no está listo
Dispon = False
End If
On Error GoTo 0
End Function
El código lanza el comando «cmd /c ipconfig /all» mediante la instrucción Shell, redireccionando la salida a un archivo y luego espera hasta que el comando termine de ejecutarse.
Luego, mediante análisis del contenido del archivo, se extraen los parámetros buscados, explorando línea por línea y reconociendo patrones. Por ejemplo para extraer la dirección IP, se busca la línea que contiene el texto «IPv4.», que es parte de la salida del comando IPCONFIG:
Adaptador de Ethernet Conexión de área local:
Sufijo DNS específico para la conexión. . :
Vínculo: dirección IPv6 local. . . : fe60::55ff:ff83:ff:fdc
Dirección IPv4. . . . . . . . . . . . . . : 192.168.1.30
Máscara de subred . . . . . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada . . . . . : 192.168.1.1
Hay que notar que el texto de salida del comando IPCONFIG viene en el idioma configurado en el sistema operativo, y el código aquí mostrado, solo funcionará cuando esté en español.
En fin, pueden haber mejores formas de acceder a la información de Red, pero este método es sencillo y portable para diversas versiones de Windows.
¿Cómo citar este artículo?
- En APA: Hinostroza, T. (6 de abril de 2013). Obtener IP, Puerta de enlace y DNS con Visual Basic 6. Blog de Tito. https://blogdetito.com/2013/04/06/obtener-ip-puerta-de-enlace-y-dns-con-visual-basic-6/
- En IEEE: T. Hinostroza. (2013, abril 6). Obtener IP, Puerta de enlace y DNS con Visual Basic 6. Blog de Tito. [Online]. Available: https://blogdetito.com/2013/04/06/obtener-ip-puerta-de-enlace-y-dns-con-visual-basic-6/
- En ICONTEC: HINOSTROZA, Tito. Obtener IP, Puerta de enlace y DNS con Visual Basic 6 [blog]. Blog de Tito. Lima Perú. 6 de abril de 2013. Disponible en: https://blogdetito.com/2013/04/06/obtener-ip-puerta-de-enlace-y-dns-con-visual-basic-6/
hola tito
se ve intersante tu codigo pero al aplicarlo me sale error debe ser por la version actual de windows , haber si actualizas tu codigo para poder probarlo, gracias
Hola.
Este código lo escribí hace mucho tiempo, cuando todavía usaba VB6. Desgraciadamente ahora ya no tengo acceso a VB6 para probar el código en un sistema más moderno. Siempre me sorprende que este lenguaje, ya descontinuado, se siga usando aún hoy en día. Si tengo oportunidad, trataré de actualizarlo.