Ticket #151: Network Switch.au3

File Network Switch.au3, 9.2 KB (added by anonymous, 16 years ago)
Line 
1Global $WinShell= ObjCreate("shell.application"), $ControlPanel = 3, _
2$NetConTitle    = 'Network Connections', _    ; Name of the window you see whenever you open "Network Connections" from the Control Panel
3$NetWorkName    = 'Wireless Network Connection'; Name of the connection you'd wish to invoke a function on
4
5
6
7Func RepairConnection()
8    For $ControlPanelItem in $WinShell.NameSpace($ControlPanel).Items
9        If $ControlPanelItem.Name = $NetConTitle Then
10            For $NetConnection In $ControlPanelItem.GetFolder.Items
11                If $NetConnection.Name = $NetWorkName Then ExitLoop(2)
12            Next
13        EndIf
14    Next
15    $NetConnection.InvokeVerb('Re&pair')                                    ;Invoke the function
16    If WinWaitActive('Repair ' & $NetworkName, 'finished repairing', 45) Then _;As soon as the repairment took place or 45 seconds have passed
17        Send('{TAB}{ENTER}')                                                ;Close the window by sending {ALT}{ENTER}
18EndFunc
19
20#RequireAdmin
21
22DirCreate(@ProgramFilesDir & "\Easy Network Switcher")
23$networkini = @ProgramFilesDir & "\Easy Network Switcher\Adaptor List.ini"
24
25global $1, $b12, $b11, $var, $disc, $servicename,$tmm , $tmp,$cur = "", $ck, $GUID, $TMP, $name,  $current, $del
26
27if FileExists($networkini) then
28        $del = IniReadSectionNames($networkini)
29        For $1 = 1 to $del[0]
30        IniDelete($networkini, $del[$1])
31        Next
32
33EndIf
34
35       
36For $i= 1 to 99999
37    $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards", $i)
38    If @error <> 0 then ExitLoop
39        $disc = StringReplace(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\" & $var , "Description"),"/","")
40        $servicename = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\" & $var , "ServiceName")
41        IniWrite($networkini, $disc, "GUID", $servicename)
42        IniWrite($networkini, $disc, "NID", $var)
43Next
44
45global $hCombo
46
47#include <C:\Program Files\AutoIt3\Include\GUIConstants.au3>
48#include <C:\Program Files\AutoIt3\Include\GuiComboBoxEx.au3>
49
50Func _placevalue($name, $guid)
51Local   $msg = -1
52local $hCombo2 , $b111
53$hGUI2 = GUICreate($cur, 400, 130)
54$b111 = GUICtrlCreateButton("Apply Setting Profile",5,103)
55$b22 = GUICtrlCreateButton("Remove",124, 103)
56$b12 = GUICtrlCreateButton("Return",324, 103)
57$hCombo2 = _GUICtrlComboBoxEx_Create ($hGUI2, "", 2, 2, 394, 100, BitOR($CBS_SIMPLE, $WS_VSCROLL, $WS_BORDER))
58GUISetState()
59
60$ini = IniReadSectionNames(@ProgramFilesDir & "\Easy Network Switcher\Profiles.ini")
61if $ini <> @error Then
62For $1 = 1 to $ini[0]
63_GUICtrlComboBoxex_AddString($hCombo2, $ini[$1])
64Next
65Else
66        MsgBox(48, "Error", "There are no saved profiles to restore")
67                                                        GUIDelete($hGUI2)
68                                                _start()
69EndIf
70
71while 1
72    $msg = GUIGetMsg()
73        $current = _GUICtrlComboBoxEx_GetCurSel($hCombo2)
74        $tmm = IniReadSectionNames(@ProgramFilesDir & "\Easy Network Switcher\" & $name)
75        if $tmm <> @error Then $current = $tmm[$current+1]
76                        Select
77                                        Case $msg = $GUI_EVENT_CLOSE
78                                                GUIDelete($hGUI2)
79                                                _start()
80                                        Case $msg = $b22
81                                                IniDelete(@ProgramFilesDir & "\Easy Network Switcher\" & $name, $current)
82                                        GUIDelete($hGUI2)
83                                                _placevalue($name, $guid)
84                                        Case $msg = $b111
85                                                $NetWorkName = $name
86                                                $var = IniRead(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "EnableDHCP", "1");1
87                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "EnableDHCP", "REG_DWORD", $var)
88                                                $var = IniRead(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "IPAddress", "0.0.0.0");1
89                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "IPAddress", "REG_MULTI_SZ", $var)
90                                                $var = IniRead(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "SubnetMask", "0.0.0.0");1
91                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "SubnetMask", "REG_MULTI_SZ", $var)
92                                                $var = IniRead(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "DefaultGateway", "");1
93                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "DefaultGateway", "REG_MULTI_SZ", $var)
94                                                $var = IniRead(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "DefaultGatewayMetric", "")
95                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "DefaultGatewayMetric", "REG_MULTI_SZ", $var)
96                                                $var = IniRead(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "NameServer", "")       
97                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "NameServer", "REG_SZ",$var)
98                                                RepairConnection() 
99                                                MsgBox(48, "Apply", "Settings were applied")
100                                                GUIDelete($hGUI2)
101                                                _start()
102Case $msg = $b12
103                                                GUIDelete($hGUI2)
104                                                _start()
105                EndSelect
106WEnd
107EndFunc
108_start()
109Func _start()
110        Local $msg
111$hGUI = GUICreate("Network Easy Switcher", 400, 130)
112$b1 = GUICtrlCreateButton("Save Current Settings",5,103)
113$b2 = GUICtrlCreateButton("Apply Custom Settings",124, 103)
114$b3 = GUICtrlCreateButton("Reset Default Settings",245, 103)
115$hCombo = _GUICtrlComboBoxEx_Create ($hGUI, "", 2, 2, 394, 100, BitOR($CBS_SIMPLE, $WS_VSCROLL, $WS_BORDER))
116GUISetState()
117       
118$ini = IniReadSectionNames($networkini)
119For $1 = 1 to $ini[0]
120_GUICtrlComboBoxex_AddString($hCombo, $ini[$1])
121Next
122
123While 1
124    $msg = GUIGetMsg()
125
126        if $msg = $b1 or $msg = $b2 or $msg = $b3 or $msg = $gui_event_Close then
127                $var = _GUICtrlComboBoxEx_GetCurSel($hCombo)
128                       
129                If $var <> -1 Then
130                                Select
131                                        Case $msg = $GUI_EVENT_CLOSE
132                                                Exit
133                                        Case $msg = $b1
134                                                                                                $cur = $ini[$var+1]
135                                                $name = $cur
136                                                $GUID = IniRead($networkini, $name, "GUID", "")
137                                                        $name = "Profiles.ini"
138                                                $current = InputBox("Name Settings", "Please type a name for these settings.", "")
139                                        if $current <> "" and $current <> "Default" Then
140                                                $var = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "EnableDHCP")
141                                                IniWrite(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "EnableDHCP", $var);1
142                                                $var = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "IPAddress")
143                                                IniWrite(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "IPAddress", $var);1
144                                                $var = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "SubnetMask")
145                                                IniWrite(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "SubnetMask", $var);1
146                                                $var = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "DefaultGateway")
147                                                IniWrite(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "DefaultGateway", $var);1
148                                                $var = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "DefaultGatewayMetric")
149                                                IniWrite(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "DefaultGatewayMetric", $var)
150                                                $var = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "NameServer")
151                                                IniWrite(@ProgramFilesDir & "\Easy Network Switcher\" & $name , $current, "NameServer", $var)
152                                        ElseIf $current = "" then
153                                                MsgBox(48, "Error", "You must type a name for these settings.")
154                                        Else
155                                                MsgBox(48, "Error", "The name 'Default' is reserved by the system.")                                   
156                                        EndIf
157                                       
158                                Case $msg = $b2
159                                                $cur = $ini[$var+1]
160                                                $name = $cur
161                                                $GUID = IniRead($networkini, $name, "GUID", "")
162                                                GUIDelete()
163                                                GUICtrlSetState($hCombo, @SW_hide)
164                                                $name = "Profiles.ini"
165                                                _placevalue($name , $GUID)
166                                                ExitLoop
167                                        Case $msg = $b3
168                                                                                                $cur = $ini[$var+1]
169                                                $name = $cur
170                                               
171                                                $GUID = IniRead($networkini, $name, "GUID", "")
172                                                $name = "Profiles.ini"
173                                                $NetWorkName = $name
174                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "EnableDHCP", "REG_DWORD", "1")
175                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "IPAddress", "REG_MULTI_SZ", "0.0.0.0")
176                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "SubnetMask", "REG_MULTI_SZ", "0.0.0.0")
177                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "DefaultGateway", "REG_MULTI_SZ", "")
178                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "DefaultGatewayMetric", "REG_MULTI_SZ", "")
179                                                $var = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"& $GUID, "NameServer", "REG_SZ","")
180                                                RepairConnection() 
181                                                MsgBox(48, "Default", "Windows Default restored.")
182                                EndSelect
183                        Else
184                        if $msg = $GUI_EVENT_CLOSE then Exit
185                        MsgBox(48, "OPPS!!!", "Please select a Network Card")
186                        $msg = 0
187                EndIf
188        EndIf
189       
190Wend
191
192EndFunc