Funciones Configuración Red y Saber nombre Red activa
Publicado: 06 Feb 2009, 03:54
Por fin me he decido a acabar estas funciones con un script de ejemplo . Aunque sea más de los mismo, ya que ultimamente se ha realizado mucho código sobre este tema, es algo que tenía pendiente desde hace algunos meses y tenía que acabarlo .
Pues eso. Son dos funciones. Una se llama ConfigurarRed, la cual configura toda la red (ip,mascara,puerta,dns), y la otra se llama NombreRedActiva, la cual te da el nombre de la red activa...como su nombre indica .
Están bastante documentadas:
Y el script ejemplo que muestra un poco como funcionan estas funciones:
No las he probado mucho. Seguramente tenga algún que otro fallo. Si encuentran algún error, por favor, comentenlo.
Tampoco las he depurado al 100%.
Espero que os gusten.
Saludos .
Pues eso. Son dos funciones. Una se llama ConfigurarRed, la cual configura toda la red (ip,mascara,puerta,dns), y la otra se llama NombreRedActiva, la cual te da el nombre de la red activa...como su nombre indica .
Están bastante documentadas:
Código: Seleccionar todo
#cs ***********************************************************************************************************
Nombre función: ConfigurarRed
Descripción: Configura la IP, Mascara, Puerta, Dns primaria, Dns secundaria, de una red.
Parámetros: $auto=0, se introducen todos los datos manualmente
$auto=1, se pone toda la configuración automática (dhcp). Valor por defecto.
$auto=2, la configuración es automática, y el dns es manual.
$IP= Dirección ip, $Mascara= Máscara de subred, $Puerta= Puerta de enlace
$DNS1= Dns primaria, $DNS2= Dns secundario, $NombreRed= El nombre de la red que quieres configurar.
Todos estos datos no tienen nada por defecto. En esta situación no se cambia la configuración.
Resultado: Una matriz de dos dimensiones. La primera dimensión tiene 3 elementos. El 1º (0) se refiere a la
configuración de red (ip, mascara, puerta), y el 2º y 3º (1 y 2) a la Dns primaria y secundaria respectivamente.
La segunda dimensión consta de 2 elementos. El 1º (0) indica si se ha cambiado (0) o no (1). En el 2º se
almacena el resultado de la linea de comandos al ejecutarse el comando.
Autor: Chefito
Otros: Como siempre, código totalmente libre ;). Se puede mejorar lo que se quiera. Se agradecería nombrar en
el código al autor.
#ce ***********************************************************************************************************
Func ConfigurarRed($auto=1,$IP="",$Mascara="",$Puerta="",$DNS1="",$DNS2="",$NombreRed="Conexión de área local")
Dim $ConfiguracionRed[3][2]
If $auto=0 Then
If $IP<>"" Then
Local $consola=Run(@ComSpec & ' /c netsh interface ip set address "' & $NombreRed & '" static ' & $IP & ' ' & $Mascara & ' ' & $Puerta & ' 1', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line = StdoutRead($consola)
If StringLen($line)>0 Then
If StringInStr($line,"Aceptar")<>0 Then
$ConfiguracionRed[0][0]=1
$ConfiguracionRed[0][1]=$line
ExitLoop
Else
$ConfiguracionRed[0][0]=0
$ConfiguracionRed[0][1]=$line
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[0][0]=-1
$ConfiguracionRed[0][1]="No se ha cambiado la dirección IP"
EndIf
If $DNS1<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip set dns "' & $NombreRed & '" static ' & $DNS1 & ' primary', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = StdoutRead($consola)
If StringLen($line2)>0 Then
If StringInStr($line2,"Aceptar")<>0 Then
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
Else
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[1][0]=-1
$ConfiguracionRed[1][1]="No se ha cambiado la dirección DNS primaria"
EndIf
If $DNS2<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip add dns "' & $NombreRed & '" static addr=' & $DNS2 & ' index=2', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line3 = StdoutRead($consola)
If StringLen($line3)>0 Then
If StringInStr($line3,"Aceptar")<>0 Then
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line3
ExitLoop
Else
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[2][0]=-1
$ConfiguracionRed[2][1]="No se ha cambiado la dirección DNS secundaria"
EndIf
ElseIf $auto=1 Then
Local $consola=Run(@ComSpec & ' /c netsh interface ip set address name="' & $NombreRed & '" source=dhcp', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line = StdoutRead($consola)
If StringLen($line)>0 Then
If StringInStr($line,"Aceptar")<>0 Then
$ConfiguracionRed[0][0]=1
$ConfiguracionRed[0][1]=$line
ExitLoop
Else
$ConfiguracionRed[0][0]=0
$ConfiguracionRed[0][1]=$line
ExitLoop
EndIf
EndIf
Wend
$consola=Run(@ComSpec & ' /c netsh interface ip set dns "' & $NombreRed & '" dhcp', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = StdoutRead($consola)
If StringLen($line2)>0 Then
If StringInStr($line2,"Aceptar")<>0 Then
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
Else
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
Local $consola=Run(@ComSpec & ' /c netsh interface ip set address name="' & $NombreRed & '" source=dhcp', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line = StdoutRead($consola)
If StringLen($line)>0 Then
If StringInStr($line,"Aceptar")<>0 Then
$ConfiguracionRed[0][0]=1
$ConfiguracionRed[0][1]=$line
ExitLoop
Else
$ConfiguracionRed[0][0]=0
$ConfiguracionRed[0][1]=$line
ExitLoop
EndIf
EndIf
Wend
If $DNS1<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip set dns "' & $NombreRed & '" static ' & $DNS1 & ' primary', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = StdoutRead($consola)
If StringLen($line2)>0 Then
If StringInStr($line2,"Aceptar")<>0 Then
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
Else
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[1][0]=-1
$ConfiguracionRed[1][1]="No se ha cambiado la dirección DNS primaria"
EndIf
If $DNS2<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip add dns "' & $NombreRed & '" static addr=' & $DNS2 & ' index=2', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line3 = StdoutRead($consola)
If StringLen($line3)>0 Then
If StringInStr($line3,"Aceptar")<>0 Then
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line3
ExitLoop
Else
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[2][0]=-1
$ConfiguracionRed[2][1]="No se ha cambiado la dirección DNS secundaria"
EndIf
EndIf
Return $ConfiguracionRed
EndFunc
#cs ***********************************************************************************************************
Nombre función: NombreRedActiva
Descripción: Devuelve el nombre de la red activa.Si no encuentra ninguna red activa, devuelve 0.
Parámetros: Ninguno.
Autor: Chefito
Otros: Como siempre, código totalmente libre ;). Se puede mejorar lo que se quiera. Se agradecería nombrar en
el código al autor.
#ce ***********************************************************************************************************
Func NombreRedActiva()
Local $posicion=0
$consola=Run(@ComSpec & ' /c ipconfig', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = $line2 & StdoutRead($consola)
If @error Then ExitLoop
Wend
Do
$posicionIni=$posicion+19
$posicion=StringInStr($line2,"Adaptador Ethernet",0,1,$posicionIni)
Until $posicion=0
If $posicionIni<>0 Then
$posFin=StringInStr($line2,":",0,1,$posicionIni)-10
Return StringMid($line2,$posicionIni,$posFin-$posicionIni)
Else
Return 0
EndIf
EndFunc
Código: Seleccionar todo
#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#Include <GuiIPAddress.au3>
#Include <String.au3>
#Include <GuiListBox.au3>
#include <WindowsConstants.au3>
Local $itemTotales="",$textoList="", $IP, $Mascara, $DNS, $Puerta, $btn, $msg, $radio_1, $radio_2, $file, $chars, $edit, $mensaje, $linea, $line, $line2, $acierto=1
; Creación de la GUI.
$hCreate=GUICreate("Cambia la configuración de la Red", 460, 450, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 200); WS_EX_ACCEPTFILES
GUISetBkColor(0x006666)
GUICtrlCreateLabel("IP", 10, 28)
GUICtrlCreateLabel("MENSAJES ", 285, 130)
GUICtrlSetFont(-1,14,600,2)
GUICtrlSetColor(-1,0x672211)
Local $edit=GUICtrlCreateEdit("", 230, 160,220,100,$ES_READONLY+$ES_AUTOVSCROLL + $WS_VSCROLL)
GUICtrlSetColor(-1,0xff0000)
$IP = _GUICtrlIpAddress_Create($hCreate, 80, 25, 120, 20)
_GUICtrlIpAddress_Set($IP,"192.168.0.15")
GUICtrlCreateLabel("MÁSCARA", 10, 62)
$Mascara=_GUICtrlIpAddress_Create($hCreate, 80, 58, 120, 20)
_GUICtrlIpAddress_Set($Mascara,"255.255.255.0")
GUICtrlCreateLabel("PUERTA", 10, 98)
$Puerta=_GUICtrlIpAddress_Create($hCreate, 80, 95, 120, 20)
_GUICtrlIpAddress_Set($Puerta,"178.168.0.1")
GUICtrlCreateLabel("NOMBRE RED", 230, 28)
$NombreRed=GUICtrlCreateInput("",320,25,120,20)
$linea = GUICtrlCreateGraphic(5, 125, 200, 10)
GUICtrlSetGraphic(-1, $GUI_GR_LINE,445,0)
GUICtrlCreateLabel("DNS 1º", 230, 62)
$DNS1=_GUICtrlIpAddress_Create($hCreate, 320, 58, 120, 20)
GUICtrlCreateLabel("DNS 2º", 230, 98)
$DNS2=_GUICtrlIpAddress_Create($hCreate, 320, 95, 120, 20)
GUICtrlCreateGroup("Configuraciones", 20, 130, 200, 80)
$radio_1 = GUICtrlCreateRadio("Utilizar configuración manual", 30, 150,170)
GUICtrlSetState(-1,$GUI_CHECKED)
$radio_2 = GUICtrlCreateRadio("Utilizar configuración automática", 30, 180,180)
GUICtrlCreateGroup("", -99, -99, 1, 1) ;close group
$btn = GUICtrlCreateButton("ACEPTAR", 20, 230, 90, 30)
GUICtrlSetBkColor(-1,0x314561)
GUICtrlSetFont(-1,10,800)
$btnAdd = GUICtrlCreateButton("Añadir Red", 120, 228, 90, 15)
$btnDel = GUICtrlCreateButton("Borrar Red", 120, 247, 90, 15)
$listaRed=GUICtrlCreateList("",10,290,440,150)
;Fin de creación de la GUI.
;Bloque para coger datos de un fichero.
$file = FileOpen(@ScriptDir& "\datos.dat", 0)
If $file <> -1 Then
$textoList=FileRead($file)
FileClose($file)
If $textoList<>"" Then
$matrizArchivo=StringSplit($textoList,@CR,1)
For $ini=1 To $matrizArchivo[0]
$itemTotales=$itemTotales & "|" & $matrizArchivo[$ini]
Next
GUICtrlSetData($listaRed,$itemTotales)
$matriz=StringSplit($matrizArchivo[1]," --> ",1)
GUICtrlSetData($NombreRed,$matriz[1])
_GUICtrlIpAddress_Set($IP,$matriz[2])
_GUICtrlIpAddress_Set($Mascara,$matriz[3])
_GUICtrlIpAddress_Set($Puerta,$matriz[4])
_GUICtrlIpAddress_Set($DNS1,$matriz[5])
_GUICtrlIpAddress_Set($DNS2,$matriz[6])
EndIf
EndIf
;Final de bloque para coger datos de un fichero.
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") ;captura mensajes para detectar el doble click en la lista.
GUISetState()
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
Sleep(10)
$msg = GUIGetMsg()
Select
Case $msg = $btn
If GUICtrlRead($NombreRed)="" Then
MsgBox(48,"Error","Debe poner un nombre de Red")
Else
If BitAND(GUICtrlRead($radio_1), $GUI_CHECKED) = $GUI_CHECKED Then ;entra en un checkbox u otro.
$mensaje="Se está cambiando la configuración de Red a manual." & @CRLF & @CRLF
GUICtrlSetData($edit,$mensaje)
;configura la red manualmente según los valores de los objetos.
$resultadoRed=ConfigurarRed(0,_GUICtrlIpAddress_Get($IP),_GUICtrlIpAddress_Get($Mascara),_GUICtrlIpAddress_Get($Puerta),_GUICtrlIpAddress_Get($DNS1),_GUICtrlIpAddress_Get($DNS2),NombreRedActiva())
;Revisa los aciertos y errores y manda un mensaje según ocurra uno u otro.
If $resultadoRed[0][0]=0 Then
$mensaje=$mensaje & $resultadoRed[0][1]
Else
$mensaje=$mensaje & "Se ha cambiado la configuración con éxito."
EndIf
If $resultadoRed[1][0]=0 Then
$mensaje=$mensaje & $resultadoRed[1][1]
Else
$mensaje=$mensaje & "Se ha cambiado el DNS primario con éxito."
EndIf
If $resultadoRed[2][0]=0 Then
$mensaje=$mensaje & $resultadoRed[2][1]
Else
$mensaje=$mensaje & "Se ha cambiado el DNS secundario con éxito."
EndIf
GUICtrlSetData($edit,$mensaje)
Else
$mensaje="Se está cambiando la configuración de Red a dhcp." & @CRLF & @CRLF
GUICtrlSetData($edit,$mensaje)
;Configura la red automaticamente (dhcp).
$resultadoRed=ConfigurarRed(1,"","","","","",NombreRedActiva())
If $resultadoRed[0][0]=0 Then
$mensaje=$mensaje & $resultadoRed[0][1]
Else
$mensaje=$mensaje & "Se ha cambiado la configuración con éxito."
EndIf
GUICtrlSetData($edit,$mensaje)
EndIf
EndIf
Case $msg=$radio_1 ;activa los controles si pulsas el radio 1.
ControlEnable($IP,"","")
ControlEnable($Mascara,"","")
ControlEnable($Puerta,"","")
GUICtrlSetState($NombreRed,$gui_enable)
ControlEnable($NombreRed,"","")
ControlEnable($DNS1,"","")
ControlEnable($DNS2,"","")
Case $msg=$radio_2 ;desactiva los controles si pulsas el radio 2
ControlDisable($IP,"","")
ControlDisable($Mascara,"","")
ControlDisable($Puerta,"","")
GUICtrlSetState($NombreRed,$gui_disable)
ControlDisable($NombreRed,"","")
ControlDisable($DNS1,"","")
ControlDisable($DNS2,"","")
Case $msg=$btnAdd ;suma la configuración a la lista según los valores de los controles.
If GUICtrlRead($NombreRed)="" Then
MsgBox(48,"Error","Debe poner un nombre de Red")
Else
GUICtrlSetData($listaRed,GUICtrlRead($NombreRed) & " --> " & _GUICtrlIpAddress_get($IP) & " --> " & _GUICtrlIpAddress_Get($Mascara) & " --> " & _GUICtrlIpAddress_Get($Puerta) & " --> " & _GUICtrlIpAddress_Get($DNS1) & " --> " & _GUICtrlIpAddress_Get($DNS2))
$textoList=""
For $n=0 To _GUICtrlListBox_GetCount($listaRed)-1
$textoList=$textoList & _GUICtrlListBox_GetText($listaRed,$n) & @CR
Next
EndIf
Case $msg=$btnDel ;borra el item seleccionado de la lista.
$itemActivo=_GUICtrlListBox_GetCurSel($listaRed)
_GUICtrlListBox_DeleteString($listaRed,$itemActivo)
$textoList=""
For $n=0 To _GUICtrlListBox_GetCount($listaRed)-1
$textoList=$textoList & _GUICtrlListBox_GetText($listaRed,$n) & @CR
Next
EndSelect
WEnd
#cs ***********************************************************************************************************
Nombre función: ConfigurarRed
Descripción: Configura la IP, Mascara, Puerta, Dns primaria, Dns secundaria, de una red.
Parámetros: $auto=0, se introducen todos los datos manualmente
$auto=1, se pone toda la configuración automática (dhcp).
$auto=2, la configuración es automática, y el dns es manual.
$IP= Dirección ip, $Mascara= Máscara de subred, $Puerta= Puerta de enlace
$DNS1= Dns primaria, $DNS2= Dns secundario, $NombreRed= El nombre de la red que quieres configurar.
Resultado: Una matriz de dos dimensiones. La primera dimensión tiene 3 elementos. El 1º (0) se refiere a la
configuración de red (ip, mascara, puerta), y el 2º y 3º (1 y 2) a la Dns primaria y secundaria respectivamente.
La segunda dimensión consta de 2 elementos. El 1º (0) indica si se ha cambiado (0) o no (1). En el 2º se
almacena el resultado de la linea de comandos al ejecutarse el comando.
Autor: Chefito
Otros: Como siempre, código totalmente libre ;). Se puede mejorar lo que se quiera. Se agradecería nombrar en
el código al autor.
#ce ***********************************************************************************************************
Func ConfigurarRed($auto=1,$IP="",$Mascara="",$Puerta="",$DNS1="",$DNS2="",$NombreRed="Conexión de área local")
Dim $ConfiguracionRed[3][2]
If $auto=0 Then
If $IP<>"" Then
Local $consola=Run(@ComSpec & ' /c netsh interface ip set address "' & $NombreRed & '" static ' & $IP & ' ' & $Mascara & ' ' & $Puerta & ' 1', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line = StdoutRead($consola)
If StringLen($line)>0 Then
If StringInStr($line,"Aceptar")<>0 Then
$ConfiguracionRed[0][0]=1
$ConfiguracionRed[0][1]=$line
ExitLoop
Else
$ConfiguracionRed[0][0]=0
$ConfiguracionRed[0][1]=$line
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[0][0]=-1
$ConfiguracionRed[0][1]="No se ha cambiado la dirección IP"
EndIf
If $DNS1<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip set dns "' & $NombreRed & '" static ' & $DNS1 & ' primary', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = StdoutRead($consola)
If StringLen($line2)>0 Then
If StringInStr($line2,"Aceptar")<>0 Then
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
Else
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[1][0]=-1
$ConfiguracionRed[1][1]="No se ha cambiado la dirección DNS primaria"
EndIf
If $DNS2<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip add dns "' & $NombreRed & '" static addr=' & $DNS2 & ' index=2', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line3 = StdoutRead($consola)
If StringLen($line3)>0 Then
If StringInStr($line3,"Aceptar")<>0 Then
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line3
ExitLoop
Else
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[2][0]=-1
$ConfiguracionRed[2][1]="No se ha cambiado la dirección DNS secundaria"
EndIf
ElseIf $auto=1 Then
Local $consola=Run(@ComSpec & ' /c netsh interface ip set address name="' & $NombreRed & '" source=dhcp', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line = StdoutRead($consola)
If StringLen($line)>0 Then
If StringInStr($line,"Aceptar")<>0 Then
$ConfiguracionRed[0][0]=1
$ConfiguracionRed[0][1]=$line
ExitLoop
Else
$ConfiguracionRed[0][0]=0
$ConfiguracionRed[0][1]=$line
ExitLoop
EndIf
EndIf
Wend
$consola=Run(@ComSpec & ' /c netsh interface ip set dns "' & $NombreRed & '" dhcp', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = StdoutRead($consola)
If StringLen($line2)>0 Then
If StringInStr($line2,"Aceptar")<>0 Then
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
Else
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
Local $consola=Run(@ComSpec & ' /c netsh interface ip set address name="' & $NombreRed & '" source=dhcp', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line = StdoutRead($consola)
If StringLen($line)>0 Then
If StringInStr($line,"Aceptar")<>0 Then
$ConfiguracionRed[0][0]=1
$ConfiguracionRed[0][1]=$line
ExitLoop
Else
$ConfiguracionRed[0][0]=0
$ConfiguracionRed[0][1]=$line
ExitLoop
EndIf
EndIf
Wend
If $DNS1<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip set dns "' & $NombreRed & '" static ' & $DNS1 & ' primary', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = StdoutRead($consola)
If StringLen($line2)>0 Then
If StringInStr($line2,"Aceptar")<>0 Then
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
Else
$ConfiguracionRed[1][0]=0
$ConfiguracionRed[1][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[1][0]=-1
$ConfiguracionRed[1][1]="No se ha cambiado la dirección DNS primaria"
EndIf
If $DNS2<>"" Then
$consola=Run(@ComSpec & ' /c netsh interface ip add dns "' & $NombreRed & '" static addr=' & $DNS2 & ' index=2', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line3 = StdoutRead($consola)
If StringLen($line3)>0 Then
If StringInStr($line3,"Aceptar")<>0 Then
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line3
ExitLoop
Else
$ConfiguracionRed[2][0]=0
$ConfiguracionRed[2][1]=$line2
ExitLoop
EndIf
EndIf
Wend
Else
$ConfiguracionRed[2][0]=-1
$ConfiguracionRed[2][1]="No se ha cambiado la dirección DNS secundaria"
EndIf
EndIf
Return $ConfiguracionRed
EndFunc
#cs ***********************************************************************************************************
Nombre función: NombreRedActiva
Descripción: Devuelve el nombre de la red activa.Si no encuentra ninguna red activa, devuelve 0.
Parámetros: Ninguno.
Autor: Chefito
Otros: Como siempre, código totalmente libre ;). Se puede mejorar lo que se quiera. Se agradecería nombrar en
el código al autor.
#ce ***********************************************************************************************************
Func NombreRedActiva()
Local $posicion=0
$consola=Run(@ComSpec & ' /c ipconfig', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
Sleep(100)
$line2 = $line2 & StdoutRead($consola)
If @error Then ExitLoop
Wend
Do
$posicionIni=$posicion+19
$posicion=StringInStr($line2,"Adaptador Ethernet",0,1,$posicionIni)
Until $posicion=0
If $posicionIni<>0 Then
$posFin=StringInStr($line2,":",0,1,$posicionIni)-10
Return StringMid($line2,$posicionIni,$posFin-$posicionIni)
Else
Return 0
EndIf
EndFunc
Func OnAutoItExit() ;graba los datos de la lista en un fichero antes de salirse del programa
$file = FileOpen(@ScriptDir& "\datos.dat", 2)
FileWrite($file,$textoList)
FileClose($file)
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) ;si das doble click en un item de la lista, se ponen en sus respectivos controles
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($listaRed) Then $hWndListBox = GUICtrlGetHandle($listaRed)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Switch $hWndFrom
Case $listaRed, $hWndListBox
Switch $iCode
Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
$listindex=_GUICtrlListBox_GetCurSel($listaRed)
$matrizArchivo=_GUICtrlListBox_GetText($listaRed,$listindex)
$matriz=StringSplit($matrizArchivo," --> ",1)
GUICtrlSetData($NombreRed,$matriz[1])
_GUICtrlIpAddress_Set($IP,$matriz[2])
_GUICtrlIpAddress_Set($Mascara,$matriz[3])
_GUICtrlIpAddress_Set($Puerta,$matriz[4])
_GUICtrlIpAddress_Set($DNS1,$matriz[5])
_GUICtrlIpAddress_Set($DNS2,$matriz[6])
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Tampoco las he depurado al 100%.
Espero que os gusten.
Saludos .