Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Изменение настроек подключений проверки подлинности IEEE 802.1X по локальной сети. (http://forum.oszone.net/showthread.php?t=170419)

an99dre 17-03-2010 13:19 1370655

Изменение настроек подключений проверки подлинности 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" и в случае отсутствия прекратить (закончить) скрипт, а то он выделяет в "Сетевых подключениях" все подключения и зависает.

amel27 17-03-2010 16:14 1370788

Цитата:

Цитата an99dre
выделить и открыть окно "Подключение по локальной сети" »

Код:

_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


an99dre 23-03-2010 12:33 1375241

amel27,
Цитата:

надо проверить существование "Подключение по локальной сети 2" и в случае отсутствия прекратить (закончить) скрипт, а то он выделяет в "Сетевых подключениях" все подключения и зависает. »

madmasles 25-03-2010 15:19 1376900

an99dre,
Так попробуйте:
Код:

#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
            ;Здесь нажимайте нужные Вам кнопки и т.д. только в конце обработки окна ExitLoop не забудьте.
            Sleep(1000)
        WEnd
    EndIf
Next
WinClose("Сетевые подключения")


an99dre 26-03-2010 16:48 1377856

madmasles, я в программировании "0", то что выложил ранее на 90 % сделано не руками, а автоматами записи кода. Поэтому большая просьба пояснить на "пальцах" что и как. Простым запуском Вашего скрипта пишет ошибку _NetConnection_Verb($name, "Сво&йства") указавая на символ _ и Unknown function name.

madmasles 26-03-2010 17:05 1377876

an99dre,
А Вы функцию от amel27-а в конце скрипта добавили?
Похоже, нет. Так попробуйте
Код:

#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
            MsgBox(0, $i, $name, 5)
            WinClose($name)
            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

У меня одно сетевое подключение по имени Подключение по локальной сети. Если у Вас их больше одного, то скрипт должен открывать их по очереди, сообщать об этом и менять их через 5 секунд.

an99dre 27-03-2010 18:11 1378583

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 1378849

an99dre,
А без функции amel27-а мой код бесполезен. Так что
Цитата:

Цитата an99dre
ОГРОМНОЕ СПАСИБО »

Я думаю, к нему тоже относится. :)

an99dre 29-03-2010 00:26 1379436

Цитата:

Цитата madmasles
А без функции amel27-а мой код бесполезен. Так что ОГРОМНОЕ СПАСИБО
Я думаю, к нему тоже относится. »

Извиняюсь, конечно Вы правы. :sorry: Ещё раз огромное спасибо всем принявшим участие. :bow:


Время: 19:47.

Время: 19:47.
© OSzone.net 2001-