Что нового

[Сеть, интернет] Отключить(включить) соединение с Интернетом(ADSL)

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Как скриптом отключать соединение с Интернетом (ADSL)
Т.е. требуется способ прерывания соединения с Интернетом
Разъединение/соединение вручную выполняется в окне : Сетевые подключения / Подключение по локальной сети.
Если возможно, то вариант без кликов по окну .
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
gregaz,
А rasdial не работает?
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Если локальная сеть - это сетевое подключение и rasdial там нет или есть? :scratch:
для примера
Код:
devcon.exe disable PCI\VEN_10EC&DEV_8168&SUBSYS_83A31043&REV_03

upd. хотя можно почитать это
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
gregaz
Чтобы получить код оборудования для сетевой карты нужно в Диспетчере устройств найти сетевую карту, в Свойствах найти Сведения, в Сведениях выбрать Код (ID) оборудования, скопировать (Ctrl+Insert) первую строку и подставить в команду devcon...
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Можно поступить и более координально. Отключить все сетевые подключения.
Код:
Run(@ComSpec & " /c " & "devcon disable =net *PCI*", "", @SW_HIDE)
; Ждем 3 секунды
Sleep (5000)
; Запускаем сетевые подключения сново
Run(@ComSpec & " /c " & "devcon enable =net *PCI*", "", @SW_HIDE)

Такой скрипт будет работать на всех компьютерах, без необходимости отлавливать код оборудования.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
VladUs [?]
Такой скрипт будет работать на всех компьютерах, без необходимости отлавливать код оборудования.

А у меня не сработал.
Может надо имя компа ставить?
 

VladUs

Скриптер
Сообщения
621
Репутация
181
А утилита devcon.exe присутствует на компе ?
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Должен признаться(хотя и стыдно),я не большой знаток в системных вопросах ,
и глубоко в конфигурацию системы не полезу.
Сложное решение мне вряд ли подойдет
Так,что советы просьба давать по возможности подробные.

VladUs [?]
А утилита devcon.exe присутствует на компе ?
сейчас поищу



Добавлено:
Сообщение автоматически объединено:

VladUs [?]
А утилита devcon.exe присутствует на компе ?

Есть
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
VladUs
Есть недостаток в использовании параметра =net. DEVCON в этом случае цепляет и WIFI-устройства...
 

VladUs

Скриптер
Сообщения
621
Репутация
181
snoitaleR [?]
Есть недостаток в использовании параметра =net. DEVCON в этом случае цепляет и WIFI-устройства...
Поэтому данный способ я и назвал координальным.

Кстати есть и альтернативный вариант описанный в http://autoit-script.ru/index.php/topic,3925.0.html#post_inet_1
 

axlwor

Скриптер
Сообщения
657
Репутация
147
uac, права админа?
из командной строки запускается?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
У меня так работает.
Одна сетевая карта ПК -это ADSL модем, другая - локальная сеть.
OS Win XP Pro.
Включается интернет так:
Код:
Run(@ComSpec & " /c " & 'start rasdial Ukrtelekom Name Password', "")

Выключается интернет так:
Код:
Run(@ComSpec & " /c " & 'rasdial  Ukrtelekom  /disconnect', "")

Где:
Ukrtelekom - имя моего подключения к Интернет
Name - имя пользователя
Password - пароль пользователя
Надо бы обратить внимание (возможно), на имя пользователя.
Нет ли в имени пользователя пробелов, кириллицы?
Лучше (наверное) для простоты имя пользователя = одно сплошное слово без пробелов на латинице. Или командная строка будет чуть другой (кавычки)
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Ни один из приведенных способов не смог заставить работать у меня.
Понял,что это не совсем простая задача и зависит от многих субъективных
уникальных факторов конкретного РС.
Попробовал решить задачу более примитивно,но универсальнее.
Код:
#include <GuiListView.au3>

ConnectionSwitch("Подключение по локальной сети")

Func ConnectionSwitch($sNameConnect)
	$iSize = InetGetSize("http://www.autoitscript.com/autoit3/files/beta/update.dat")
	If $iSize Then
		$sText="Разорвать "
	Else
		$sText="Восстановить "
	EndIf
	If MsgBox(4100, "",$sText & "соединение ?")=6 Then 
		Opt("WinTitleMatchMode", 2) 
		ShellExecute('::{7007ACC7-3202-11D1-AAD2-00805FC1270E}')
		$hWnd=WinWaitActive("Сетевые подключения", "",2)
		$hLV=ControlGetHandle($hWnd, '', 'SysListView321')
		$iCount=_GUICtrlListView_GetItemCount($hLV )
		$iItem=-1
		For $i=1 To $iCount
			$sItemText=_GUICtrlListView_GetItemText($hLV, $i)
			If $sItemText=$sNameConnect Then 
				$iItem=$i
				ExitLoop
			EndIf
		Next
		If $iItem=-1 Then 
			MsgBox(4096,"","Соединение с именем : " & $sNameConnect & " не найдено")
		Else
			_GUICtrlListView_ClickItem($hLV, $iItem,"right")
			Send("{DOWN}")
			Send("{ENTER}")
		EndIf
		WinClose ( "Сетевые подключения" )
	EndIf
EndFunc


Вроде работает.
Вообще-то я ожидал просто возможности отсоединения модема от сетевой карты,к которой он подключен,
что позволяет быстро восстанавливать соединение.

Здесь же отключение происходит медленно , а на восстановление требуется вообще секунд 15
 
Верх