Ticket #151: Network Switch.au3

File Network Switch.au3, 9.2 KB (added by anonymous, on Mar 1, 2008 at 9:06:13 AM)
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