Что нового

[Сеть, интернет] Отключить активное подключение к сети и подключить его после скрипта

PRADA

Новичок
Сообщения
5
Репутация
0
Доброго времени суток, Вам. Поиском пользовался ничего не нахожу.
Идея. Скрипт должен отключить активное соединение ЛВС и после выполнения скрипта его подключить.
Подскажите куда копать?
 
Автор
P

PRADA

Новичок
Сообщения
5
Репутация
0
Вот что пока нашел:
Средствами самой операционки этого сделать нельзя. Однако в составе Driver Development Kit, как XP, так и W2K есть утилитка DevCon разрешающая включать/отключать практически любой класс устройств, в том числе и сетевые карты.

Код:
devcon enable/disable <hardware id>

<hardware id> вашего сетевого адаптера можго посмотреть Диспетчер устройств - сетевые адаптеры "правой кнопкой мыши по вашему сетевому адаптеру Свойства - сведения - ID оборудования"

Действительно работает. :smile:

Если есть еще какие-то способы, прошу сообщить о них.
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Если есть еще какие-то способы, прошу сообщить о них
А что собственно говоря мешает включить devcon.exe в скрипт ( FileInstall() ) и при необходимости извлечь.
Или принципиально cредствами операционки решать эту задачу... именно без devcon.exe
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Код:
netsh interface set interface "Local Area Connection" DISABLED 
netsh interface set interface "Local Area Connection" ENABLED
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
Kaster [?]
netsh interface set interface "Local Area Connection" DISABLED netsh interface set interface "Local Area Connection" ENABLED
может так:
Код:
netsh interface set interface "Local Area Connection" DISABLE
netsh interface set interface "Local Area Connection" ENABLE
Код:
#include<Process.au3>
_RunDOS('netsh interface set interface "Local Area Connection" DISABLE') ; выкл "Local Area Connection"
_RunDOS('netsh interface set interface "Local Area Connection" ENABLE') ; вкл "Local Area Connection"
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Guezt Gutsy
вполне возможно, что и так. писал по памяти, проверить возможности не было
 

Favorite6233

Знающий
Сообщения
21
Репутация
5
На WinXP "netsh interface set interface... " не работает. Может всё таки как-то можно включить/отключить сетевое подключение средствами операционки, не прибегая к devcon? Может через WMI как-то, или вызов какой-нибудь DLL-ки?
 

Dimmak

Знающий
Сообщения
185
Репутация
9
Для Win7x32. Замените 'N' на имя нужного сетевого подключение.
Код:
#include <Array.au3>
;~ #include <_my.au3>

Global $aNetConnect
	Global $objShell = ObjCreate("Shell.Application")

Func _GetNetConn()

$CSIDL_NetworkConnections = 0x31
$objNS = $objShell.Namespace($CSIDL_NetworkConnections)
$CountNS = $objNS.Items.Count
;1 -Состояние (вкл\выкл) 2 - наличие Свойства 3 -объект вкл\выкл 4 - объект свойства 5 - controlID Вкл 6 - controlID Свойства 7- controlID menu
Dim $aNetCon[$CountNS][8]
$n = 0

For $objItem in $objNS.Items

    $aNetCon[$n][0] = $objItem
;~  ConsoleWrite("NetConnect= " & $aNetCon[$n][0].Name & @CRLF)
    For $objVerbs in $aNetCon[$n][0].verbs
        If $objVerbs.Name = "Вкл&ючить" OR $objVerbs.Name = "Подкл&ючить" Then
            $aNetCon[$n][1] = False
            $aNetCon[$n][3] = $objVerbs
        ElseIf $objVerbs.Name = "Отклю&чить" OR $objVerbs.Name = "&Отключить" Then
            $aNetCon[$n][1] = True
            $aNetCon[$n][3] = $objVerbs
        ElseIf $objVerbs.Name = "Сво&йства" Then
            $aNetCon[$n][2] = True
            $aNetCon[$n][4] = $objVerbs
        EndIf
;~      ConsoleWrite("     verbs= " & $objVerbs.Name & @CRLF)
    Next
    If $aNetCon[$n][2] <> True Then
        $aNetCon[$n][2] = False
    EndIf
    $n += 1

Next

$aNetConnect = $aNetCon

EndFunc


	_GetNetConn()
For $i = 0 to UBound( $aNetConnect )-1
;~ 	msb ( $aNetConnect[$i][0].Name )
	If $aNetConnect[$i][0].Name = 'N' Then

		If $aNetConnect[$i][1] = True Then
			$aNetConnect[$i][3].DoIt  ; Отключить
				tti('OFF', 500)
		Else
			$aNetConnect[$i][3].DoIt  ; Включить
				tti('ON', 500)
		EndIf

	EndIf
Next

Func tti($message, $time)
		ToolTip(@CR&" "&@CR&" "& "" &@CR&" "&@CR&" ", Default, Default, $message, 1, 5)
		sleep($time)
	ToolTip("")
EndFunc
 
Верх