#RequireAdmin #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.2 Author: TheSaint Script Function: Enable or Disable the Ethernet (Network Adapter) connection Thanks: jguinch (Network configuration UDF) URL: https://www.autoitscript.com/forum/topic/155539-network-configuration-udf/ #ce ---------------------------------------------------------------------------- #include #include #include #include #include #include #include "Network.au3" ; FUNCTIONS ; DisableEnableControls($state) Global $Button_disable, $Button_enable, $Button_exit, $Button_info, $Button_save, $Combo_adapters, $Label_status Global $adapter, $adapters, $adaptxt, $connected, $delay, $entry, $header, $info, $inifile, $ShowAdapters, $status $adaptxt = @ScriptDir & "\Adapter.txt" $inifile = @ScriptDir & "\Settings.ini" $ShowAdapters = GUICreate("Network Adapters", 390, 120, Default, 30, $WS_CAPTION + $WS_POPUP + $WS_SYSMENU, $WS_EX_WINDOWEDGE + $WS_EX_TOPMOST) $Combo_adapters = GUICtrlCreateCombo("", 10, 10, 370, 21) ; $Label_status = GUICtrlCreateLabel("", 10, 40, 370, 20, $SS_CENTER + $SS_CENTERIMAGE) GUICtrlSetColor($Label_status, $COLOR_RED) ; $Button_disable = GUICtrlCreateButton("DISABLE", 10, 70, 85, 40) GUICtrlSetFont($Button_disable, 9, 600) GUICtrlSetTip($Button_disable, "Disable the selected adapter!") ; $Button_enable = GUICtrlCreateButton("ENABLE", 105, 70, 80, 40) GUICtrlSetFont($Button_enable, 9, 600) GUICtrlSetTip($Button_enable, "Enable the selected adapter!") ; $Button_save = GUICtrlCreateButton("SAVE", 195, 70, 60, 40) GUICtrlSetFont($Button_save, 9, 600) GUICtrlSetTip($Button_save, "Save as default adapter to work with!") ; $Button_info = GUICtrlCreateButton("INFO", 265, 70, 55, 40) GUICtrlSetFont($Button_info, 9, 600) GUICtrlSetTip($Button_info, "Information about the selected adapter!") ; $Button_exit = GUICtrlCreateButton("EXIT", 330, 70, 50, 40) GUICtrlSetFont($Button_exit, 9, 600) GUICtrlSetTip($Button_exit, "Close the program!") ; ; SETTINGS GUISetState(@SW_SHOW) ; $adapters = _GetNetworkAdapterList() ;_ArrayDisplay($adapters) $header = "AdapterType|DeviceID|GUID|Index|InterfaceIndex|MACAddress|Manufacturer|Name|NetConnectionID|NetConnectionStatus|NetEnabled|" _ & "PNPDeviceID|ProductName|ServiceName|Speed|DatabasePath|DefaultIPGateway|DHCPEnabled|DHCPLeaseExpires|DHCPLeaseObtained|DHCPServer|" _ & "DNSDomain|DNSDomainSuffixSearchOrder|DNSEnabledForWINSResolution|DNSHostName|DNSServerSearchOrder|DomainDNSRegistrationEnabled|" _ & "FullDNSRegistrationEnabled|GatewayCostMetric|IPAddress|IPSubnet|WINSEnableLMHostsLookup|WINSPrimaryServer|WINSSecondaryServer" $adapters = "|" & _ArrayToString($adapters, "|") & "|" $adapters = StringReplace($adapters, @CRLF, "\") $entry = IniRead($inifile, "Adapters", "default", "") If $entry <> "" Then If StringInStr($adapters, $entry) < 1 Then $entry = "" Else GUICtrlSetData($Label_status, "Checking Saved Adapter Status") DisableEnableControls($GUI_DISABLE) If StringInStr($entry, "\") > 0 Then $adapter = StringSplit($entry, "\", 1) $adapter = $adapter[2] Else $adapter = $entry EndIf $info = _GetNetworkAdapterInfos($adapter) $info = _ArrayToString($info) $info = StringSplit($info, "|", 1) $connected = $info[11] If $connected = "" Then $connected = "Not Found" GUICtrlSetData($Label_status, "Connected = " & $connected) DisableEnableControls($GUI_ENABLE) $status = IniRead($inifile, "Adapters", "disabled", "") If $status = $adapter Then If $connected = "False" Or $connected = "Not Found" Then GUICtrlSetState($Button_disable, $GUI_DISABLE) Else IniDelete($inifile, "Adapters", "disabled") $status = "" EndIf EndIf EndIf EndIf GUICtrlSetData($Combo_adapters, $adapters, $entry) ; $delay = IniRead($inifile, "Adapter Status Change", "delay", "") If $delay = "" Then $delay = 1000 IniWrite($inifile, "Adapter Status Change", "delay", $delay) EndIf While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_exit ; Close the program GUIDelete($ShowAdapters) ExitLoop Case $msg = $Button_save ; Save as default adapter to work with $adapter = GUICtrlRead($Combo_adapters) IniWrite($inifile, "Adapters", "default", $adapter) Case $msg = $Button_info ; Selected Adapter Info $adapter = GUICtrlRead($Combo_adapters) If $adapter <> "" Then DisableEnableControls($GUI_DISABLE) GUICtrlSetData($Label_status, "Getting Selected Adapter Information") If StringInStr($adapter, "\") > 0 Then $adapter = StringSplit($adapter, "\", 1) $adapter = $adapter[2] EndIf $info = _GetNetworkAdapterInfos($adapter) _ArrayDisplay($info, "Adapter Information", "", 32, Default, $header) $info = _ArrayToString($info) $info = StringSplit($info, "|", 1) $connected = $info[11] If $connected = "" Then $connected = "Not Found" GUICtrlSetData($Label_status, "Connected = " & $connected) _FileWriteFromArray($adaptxt, $info, 0) ;MsgBox(262144 + 64, "Adapter Information", $info, 0, $ShowAdapters) DisableEnableControls($GUI_ENABLE) EndIf Case $msg = $Button_enable ; Enable the selected adapter $adapter = GUICtrlRead($Combo_adapters) If $adapter <> "" Then DisableEnableControls($GUI_DISABLE) GUICtrlSetData($Label_status, "ENABLING") If StringInStr($adapter, "\") > 0 Then $adapter = StringSplit($adapter, "\", 1) $adapter = $adapter[2] EndIf _EnableNetAdapter($adapter) $status = "enabled" IniWrite($inifile, "Adapters", $status, $adapter) IniDelete($inifile, "Adapters", "disabled") Sleep($delay) GUICtrlSetData($Label_status, "ENABLED") DisableEnableControls($GUI_ENABLE) EndIf Case $msg = $Button_disable ; Disable the selected adapter $adapter = GUICtrlRead($Combo_adapters) If $adapter <> "" Then DisableEnableControls($GUI_DISABLE) GUICtrlSetData($Label_status, "DISABLING") If StringInStr($adapter, "\") > 0 Then $adapter = StringSplit($adapter, "\", 1) $adapter = $adapter[2] EndIf _DisableNetAdapter($adapter) $status = "disabled" IniWrite($inifile, "Adapters", $status, $adapter) IniDelete($inifile, "Adapters", "enabled") Sleep($delay) GUICtrlSetData($Label_status, "DISABLED") DisableEnableControls($GUI_ENABLE) EndIf Case $msg = $Combo_adapters Or $msg = $Button_info ; Selected Adapter GUICtrlSetData($Label_status, "") $adapter = GUICtrlRead($Combo_adapters) If $adapter <> "" Then If StringInStr($adapter, "\") > 0 Then $adapter = StringSplit($adapter, "\", 1) $adapter = $adapter[2] EndIf $status = IniRead($inifile, "Adapters", "disabled", "Not Set") If $status = $adapter Then GUICtrlSetState($Button_disable, $GUI_DISABLE) Else GUICtrlSetState($Button_disable, $GUI_ENABLE) EndIf ;MsgBox(262144 + 64, "Adapter Name", $adapter & @LF & $status, 3, $ShowAdapters) GUICtrlSetData($Label_status, $adapter & " -- " & $status) EndIf Case Else EndSelect WEnd Exit Func DisableEnableControls($state) GUICtrlSetState($Combo_adapters, $state) GUICtrlSetState($Button_enable, $state) GUICtrlSetState($Button_save, $state) GUICtrlSetState($Button_info, $state) GUICtrlSetState($Button_exit, $state) ; $status = IniRead($inifile, "Adapters", "disabled", "") If ($status <> $adapter) Or $adapter = "" Then GUICtrlSetState($Button_disable, $state) EndIf EndFunc ;=> DisableEnableControls