Показать полную графическую версию : [решено] Изменение настроек подключений проверки подлинности IEEE 802.1X по локальной сети.
Необходимо выполнить следующую задачу:
в окне "Сетевые подключения" выделить и открыть окно "Подключение по локальной сети" и "Подключение по локальной сети 2".
Параметры обоих окон одинаковы:
Class:SysListView32
Instance:1
ClassnameNN:SysListView321
Name:
Advanced (Class):[CLASS:SysListView32; INSTANCE:1]
ID:1
или сразу открыть необходимое окно, без открытия окна "Сетевые подключения".
Конечная цель отключение проверки подлинности IEEE 802.1X
По простоте своей наваял:
Opt("WinTitleMatchMode", 4)
Run("control ncpa.cpl")
;Первое "Подключение по локальной сети"
WinWait("Сетевые подключения","")
$CLVItem = ControlListView("Сетевые подключения","","SysListView321","FindItem","Подключение по локальной сети")
ControlListView("Сетевые подключения","","SysListView321","SelectClear")
ControlListView("Сетевые подключения","","SysListView321","Select",$CLVItem)
send("{ALT}{Ф}")
send("{й}")
WinWait("Подключение по локальной сети - свойства","Подключение")
$Tabhdl = ControlGetHandle("Подключение по локальной сети - свойства","Подключение","SysTabControl321")
ControlCommand("","",$Tabhdl,"TabRight","")
WinWait("Подключение по локальной сети - свойства","Проверка подлинности")
ControlCommand("Подключение по локальной сети - свойства","Проверка подлинности","Button1","UnCheck","")
ControlClick("Подключение по локальной сети - свойства","Проверка подлинности","Button6")
;Второе "Подключение по локальной сети 2"
WinWaitActive("Сетевые подключения","")
$CLVItem = ControlListView("Сетевые подключения","","SysListView321","FindItem","Подключение по локальной сети 2")
ControlListView("Сетевые подключения","","SysListView321","SelectClear")
ControlListView("Сетевые подключения","","SysListView321","Select",$CLVItem)
send("{ALT}{Ф}")
send("{й}")
WinWait("Подключение по локальной сети 2 - свойства","Подключение")
$Tabhdl = ControlGetHandle("Подключение по локальной сети 2 - свойства","Подключение","SysTabControl321")
ControlCommand("","",$Tabhdl,"TabRight","")
WinWait("Подключение по локальной сети 2 - свойства","Проверка подлинности")
ControlCommand("Подключение по локальной сети 2 - свойства","Проверка подлинности","Button1","UnCheck","")
ControlClick("Подключение по локальной сети 2 - свойства","Проверка подлинности","Button6")
WinClose ( "Сетевые подключения", "")
но требуется помощь в следующем, надо проверить существование "Подключение по локальной сети 2" и в случае отсутствия прекратить (закончить) скрипт, а то он выделяет в "Сетевых подключениях" все подключения и зависает.
выделить и открыть окно "Подключение по локальной сети" »
_NetConnection_Verb("Подключение по локальной сети", "Сво&йства")
;_NetConnection_Verb("Local Area Connection", "Disa&ble")
While 1
Sleep(1000)
WEnd
Func _NetConnection_Verb($sConnectionName, $sVerb)
; Local $sFolderName = "Network Connections"
Local $sFolderName = "Сетевые подключения"
Local $oNetConnections, $oConnection
Local $oShellApp = ObjCreate("Shell.Application")
Local $oControlPanel = $oShellApp.Namespace(3)
For $oFolderItem In $oControlPanel.Items
If $oFolderItem.Name = $sFolderName Then
$oNetConnections = $oFolderItem.GetFolder
ExitLoop
EndIf
Next
If Not(IsObj($oNetConnections)) Then Return SetError(1, 0, False)
For $oFolderitem In $oNetConnections.Items
If StringInStr($oFolderitem.Name, $sConnectionName) Then
$oConnection = $oFolderitem
ExitLoop
EndIf
Next
If Not(IsObj($oConnection)) Then Return SetError(2, 0, False)
$oConnection.InvokeVerb($sVerb)
Sleep(1000)
EndFunc
amel27,
надо проверить существование "Подключение по локальной сети 2" и в случае отсутствия прекратить (закончить) скрипт, а то он выделяет в "Сетевых подключениях" все подключения и зависает. »
madmasles
25-03-2010, 15:19
an99dre,
Так попробуйте:#include <GuiListView.au3>
;Run("control ncpa.cpl")
ShellExecute (http://www.autoitscript.com/autoit3/docs/functions/ShellExecute.htm)("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}")
WinWaitActive (http://www.autoitscript.com/autoit3/docs/functions/WinWaitActive.htm)("Сетевые подключения")
WinSetState (http://www.autoitscript.com/autoit3/docs/functions/WinSetState.htm)("Сетевые подключения", "", @SW_MINIMIZE (http://www.autoitscript.com/autoit3/docs/macros.htm#@SW_MINIMIZE))
$hListView = ControlGetHandle (http://www.autoitscript.com/autoit3/docs/functions/ControlGetHandle.htm)("Сетевые подключения", "", "[CLASS:SysListView32; INSTANCE:1]")
$col = _GUICtrlListView_GetItemCount($hListView)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 0 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $col - 1
$name = _GUICtrlListView_GetItemText($hListView, $i)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) StringInStr (http://www.autoitscript.com/autoit3/docs/functions/StringInStr.htm)($name, "Подключение по локальной сети") <> 0 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
_NetConnection_Verb($name, "Сво&йства")
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
;Здесь нажимайте нужные Вам кнопки и т.д. только в конце обработки окна ExitLoop не забудьте.
Sleep (http://www.autoitscript.com/autoit3/docs/functions/Sleep.htm)(1000)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
WinClose (http://www.autoitscript.com/autoit3/docs/functions/WinClose.htm)("Сетевые подключения")
madmasles, я в программировании "0", то что выложил ранее на 90 % сделано не руками, а автоматами записи кода. Поэтому большая просьба пояснить на "пальцах" что и как. Простым запуском Вашего скрипта пишет ошибку _NetConnection_Verb($name, "Сво&йства") указавая на символ _ и Unknown function name.
madmasles
26-03-2010, 17:05
an99dre,
А Вы функцию от amel27-а в конце скрипта добавили?
Похоже, нет. Так попробуйте#include <GuiListView.au3>
;Run("control ncpa.cpl")
ShellExecute (http://www.autoitscript.com/autoit3/docs/functions/ShellExecute.htm)("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}")
WinWaitActive (http://www.autoitscript.com/autoit3/docs/functions/WinWaitActive.htm)("Сетевые подключения")
WinSetState (http://www.autoitscript.com/autoit3/docs/functions/WinSetState.htm)("Сетевые подключения", "", @SW_MINIMIZE (http://www.autoitscript.com/autoit3/docs/macros.htm#@SW_MINIMIZE))
$hListView = ControlGetHandle (http://www.autoitscript.com/autoit3/docs/functions/ControlGetHandle.htm)("Сетевые подключения", "", "[CLASS:SysListView32; INSTANCE:1]")
$col = _GUICtrlListView_GetItemCount($hListView)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 0 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $col - 1
$name = _GUICtrlListView_GetItemText($hListView, $i)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) StringInStr (http://www.autoitscript.com/autoit3/docs/functions/StringInStr.htm)($name, "Подключение по локальной сети") <> 0 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
_NetConnection_Verb($name, "Сво&йства")
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(0, $i, $name, 5)
WinClose (http://www.autoitscript.com/autoit3/docs/functions/WinClose.htm)($name)
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
WinClose (http://www.autoitscript.com/autoit3/docs/functions/WinClose.htm)("Сетевые подключения")
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _NetConnection_Verb($sConnectionName, $sVerb)
; Local $sFolderName = "Network Connections"
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sFolderName = "Сетевые подключения"
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $oNetConnections, $oConnection
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $oShellApp = ObjCreate (http://www.autoitscript.com/autoit3/docs/functions/ObjCreate.htm)("Shell.Application")
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $oControlPanel = $oShellApp.Namespace(3)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $oFolderItem In (http://www.autoitscript.com/autoit3/docs/keywords.htm#In) $oControlPanel.Items
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $oFolderItem.Name = $sFolderName Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$oNetConnections = $oFolderItem.GetFolder
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) (IsObj (http://www.autoitscript.com/autoit3/docs/functions/IsObj.htm)($oNetConnections)) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) SetError (http://www.autoitscript.com/autoit3/docs/functions/SetError.htm)(1, 0, False (http://www.autoitscript.com/autoit3/docs/keywords.htm#False))
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $oFolderItem In (http://www.autoitscript.com/autoit3/docs/keywords.htm#In) $oNetConnections.Items
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) StringInStr (http://www.autoitscript.com/autoit3/docs/functions/StringInStr.htm)($oFolderItem.Name, $sConnectionName) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$oConnection = $oFolderItem
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) (IsObj (http://www.autoitscript.com/autoit3/docs/functions/IsObj.htm)($oConnection)) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) SetError (http://www.autoitscript.com/autoit3/docs/functions/SetError.htm)(2, 0, False (http://www.autoitscript.com/autoit3/docs/keywords.htm#False))
$oConnection.InvokeVerb($sVerb)
Sleep (http://www.autoitscript.com/autoit3/docs/functions/Sleep.htm)(1000)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc) ;==>_NetConnection_VerbУ меня одно сетевое подключение по имени Подключение по локальной сети. Если у Вас их больше одного, то скрипт должен открывать их по очереди, сообщать об этом и менять их через 5 секунд.
madmasles, ОГРОМНОЕ СПАСИБО, наконец с Вашей помощью получил то, что хотел.
#include <GuiListView.au3>
;Run("control ncpa.cpl")
ShellExecute("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}")
WinWaitActive("Сетевые подключения")
WinSetState("Сетевые подключения", "", @SW_MINIMIZE)
$hListView = ControlGetHandle("Сетевые подключения", "", "[CLASS:SysListView32; INSTANCE:1]")
$col = _GUICtrlListView_GetItemCount($hListView)
For $i = 0 To $col - 1
$name = _GUICtrlListView_GetItemText($hListView, $i)
If StringInStr($name, "Подключение по локальной сети") <> 0 Then
_NetConnection_Verb($name, "Сво&йства")
While 1
$Tabhdl = ControlGetHandle("","Подключение","SysTabControl321")
ControlCommand("","",$Tabhdl,"TabRight","")
WinWait("","Проверка подлинности")
ControlCommand("","Проверка подлинности","Button1","UnCheck","")
ControlClick("","Проверка подлинности","Button6")
WinClose("","Проверка подлинности")
Sleep(1000)
ExitLoop
WEnd
EndIf
Next
WinClose("Сетевые подключения")
Func _NetConnection_Verb($sConnectionName, $sVerb)
; Local $sFolderName = "Network Connections"
Local $sFolderName = "Сетевые подключения"
Local $oNetConnections, $oConnection
Local $oShellApp = ObjCreate("Shell.Application")
Local $oControlPanel = $oShellApp.Namespace(3)
For $oFolderItem In $oControlPanel.Items
If $oFolderItem.Name = $sFolderName Then
$oNetConnections = $oFolderItem.GetFolder
ExitLoop
EndIf
Next
If Not (IsObj($oNetConnections)) Then Return SetError(1, 0, False)
For $oFolderItem In $oNetConnections.Items
If StringInStr($oFolderItem.Name, $sConnectionName) Then
$oConnection = $oFolderItem
ExitLoop
EndIf
Next
If Not (IsObj($oConnection)) Then Return SetError(2, 0, False)
$oConnection.InvokeVerb($sVerb)
Sleep(1000)
EndFunc ;==>_NetConnection_Verb
madmasles
28-03-2010, 03:25
an99dre,
А без функции amel27-а мой код бесполезен. Так чтоОГРОМНОЕ СПАСИБО »Я думаю, к нему тоже относится. :)
А без функции amel27-а мой код бесполезен. Так что ОГРОМНОЕ СПАСИБО
Я думаю, к нему тоже относится. »
Извиняюсь, конечно Вы правы. :sorry: Ещё раз огромное спасибо всем принявшим участие. :bow:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC