#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 #include #include #include #include "Network.au3" ; FUNCTIONS ; DisableEnableControls($state), GetAdapterValues() Global $Button_detail, $Button_disable, $Button_enable, $Button_exit, $Button_fold, $Button_info, $Button_refresh Global $Button_save, $Combo_adapters, $Label_status, $Tray_about, $Tray_exit, $Tray_restore Global $adapter, $adapters, $adaptxt, $connected, $default, $delay, $entry, $header, $info, $inifile, $ShowAdapters Global $status, $system, $tray, $version _Singleton("show-adapters-thsaint") Opt("TrayMenuMode", 3) $adaptxt = @ScriptDir & "\Adapter.txt" $inifile = @ScriptDir & "\Settings.ini" $system = @SystemDir & "\shell32.dll" $version = "(Updated to v1.1 in October 2025)" $ShowAdapters = GUICreate("Network Adapters", 390, 120, Default, 30, $GUI_SS_DEFAULT_GUI, $WS_EX_TOPMOST) $Combo_adapters = GUICtrlCreateCombo("", 10, 10, 370, 21) ; $Button_refresh = GUICtrlCreateButton(" Refresh", 10, 39, 85, 22) ;, $BS_ICON GUICtrlSetFont($Button_refresh, 7, 600, 0, "Small Fonts") GUICtrlSetTip($Button_refresh, "Refresh the list of adapters!") ; $Label_status = GUICtrlCreateLabel("", 105, 40, 205, 20, $SS_CENTER + $SS_CENTERIMAGE) GUICtrlSetColor($Label_status, $COLOR_RED) ; $Button_fold = GUICtrlCreateButton("Open", 320, 39, 25, 22, $BS_ICON) GUICtrlSetTip($Button_fold, "Open the program folder!") ; $Button_info = GUICtrlCreateButton("Info", 355, 39, 25, 22, $BS_ICON) GUICtrlSetTip($Button_info, "Program Information!") ; $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_detail = GUICtrlCreateButton("INFO", 265, 70, 55, 40) GUICtrlSetFont($Button_detail, 9, 600) GUICtrlSetTip($Button_detail, "Information about the selected adapter!") ; $Button_exit = GUICtrlCreateButton("EXIT", 330, 70, 50, 40, $BS_ICON) GUICtrlSetTip($Button_exit, "Close the program!") ; ; TRAY SETTINGS $Tray_restore = TrayCreateItem("Restore") TrayCreateItem("") $Tray_about = TrayCreateItem("About") TrayCreateItem("") $Tray_exit = TrayCreateItem("Exit") ; TraySetIcon($system, -94) TraySetToolTip("Show Adapters") ; ; SETTINGS GUICtrlSetImage($Button_refresh, $system, -239, 0) GUICtrlSetImage($Button_fold, $system, -4, 0) GUICtrlSetImage($Button_info, $system, -222, 0) GUICtrlSetImage($Button_exit, $system, -28, 1) ; GUISetState(@SW_SHOW, $ShowAdapters) ; GetAdapterValues() ; $delay = IniRead($inifile, "Adapter Status Change", "delay", "") If $delay = "" Then $delay = 1000 IniWrite($inifile, "Adapter Status Change", "delay", $delay) EndIf TraySetState($TRAY_ICONSTATE_SHOW) While 1 $msg = GUIGetMsg() $tray = TrayGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_exit Or $tray = $Tray_exit ; Close the program GUIDelete($ShowAdapters) ExitLoop Case $msg = $GUI_EVENT_MINIMIZE ; Hide program on minimize (and no Taskbar icon) GUISetState(@SW_HIDE, $ShowAdapters) SplashTextOn("Show Adapters", "Restore the program using" & @LF & "that Tray menu icon option.", 300, 120, -1, -1, 32) Sleep(2000) SplashOff() Case $tray = $Tray_restore ; Restore program and Taskbar icon GUISetState(@SW_RESTORE, $ShowAdapters) GUISetState(@SW_SHOWNORMAL, $ShowAdapters) Case $msg = $Button_save ; Save as default adapter to work with $adapter = GUICtrlRead($Combo_adapters) IniWrite($inifile, "Adapters", "default", $adapter) Case $msg = $Button_refresh ; Refresh the list of adapters GUICtrlSetData($Combo_adapters, "", "") GetAdapterValues() Case $msg = $Button_info Or $tray = $Tray_about ; Program Information MsgBox(262144 + 64, "Program Information", "This program shows the enabled state of your Network Adapters," & @LF _ & "and can change that state, or show detail about an adapter." & @LF & @LF _ & "It can be used for example, to disconnect an Ethernet connection." & @LF & @LF _ & "© October 2025 - Created by TheSaint" & @LF & $version, 0, $ShowAdapters) Case $msg = $Button_fold ; Open the program folder ShellExecute(@ScriptDir) 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 = $Button_detail ; 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 = $Combo_adapters ;Or $msg = $Button_detail ; 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 $default = IniRead($inifile, "Adapters", "default", "") If StringInStr($default, "\") > 0 Then $default = StringSplit($default, "\", 1) $default = $default[2] EndIf If $adapter = $default Then GUICtrlSetData($Label_status, "Saved Default") Else GUICtrlSetData($Label_status, "Not the Saved Default") EndIf ;MsgBox(262144 + 64, "Adapter Name", $adapter & @LF & $status, 3, $ShowAdapters) ;GUICtrlSetData($Label_status, $adapter & " -- " & $status) ;GUICtrlSetData($Label_status, $status) EndIf Case Else EndSelect WEnd Exit Func DisableEnableControls($state) GUICtrlSetState($Combo_adapters, $state) GUICtrlSetState($Button_refresh, $state) GUICtrlSetState($Button_fold, $state) GUICtrlSetState($Button_info, $state) GUICtrlSetState($Button_enable, $state) GUICtrlSetState($Button_save, $state) GUICtrlSetState($Button_detail, $state) GUICtrlSetState($Button_exit, $state) ; $status = IniRead($inifile, "Adapters", "disabled", "") If ($status <> $adapter) Or $adapter = "" Then GUICtrlSetState($Button_disable, $state) EndIf EndFunc ;=> DisableEnableControls Func GetAdapterValues() $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) EndFunc ;=> GetAdapterValues