Что нового

Поведение программы в зависимости от наличия доступа к Интернету

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Собственно вопрос в теме. Помогите автоматически приостанавливать скрипт если нет доступа к интернету и восстанавливать работу если интернет появляется))
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
;код...............

AdlibRegister('_CheckNet', 10)

;код...............

Func _CheckNet()
	If Not Ping('www.autoit-script.ru') > 0 Then
		Do
				Sleep(100)
		Until Ping('www.autoit-script.ru') > 0
	EndIf
EndFunc
 
Автор
DarWiM

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Zaramot
Насколько много это будет занимать оперативки?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Могу ещё такой вариант предложить:

Код:
Global Const $INTERNET_CONNECTION_CONFIGURED = 0x40
Global Const $INTERNET_CONNECTION_LAN        = 0x02
Global Const $INTERNET_CONNECTION_MODEM      = 0x01
Global Const $INTERNET_CONNECTION_MODEM_BUSY = 0x08
Global Const $INTERNET_CONNECTION_OFFLINE    = 0x20
Global Const $INTERNET_CONNECTION_PROXY      = 0x04
Global Const $INTERNET_RAS_INSTALLED         = 0x10

Global $Internet = 1

While 1
	$iConnect = _WinAPI_InternetGetConnectedState(BitOR($INTERNET_CONNECTION_LAN, $INTERNET_CONNECTION_MODEM, $INTERNET_CONNECTION_PROXY))
	If Not $iConnect Then
		If Not $Internet Then
		    ConsoleWrite('! Соединение с итернет отсутствует' & @CRLF)
			$Internet = 1
		EndIf
	Else
		If $Internet Then
            ConsoleWrite('- Соединение с итернет установлено' & @CRLF)
			$Internet = 0
		EndIf
	EndIf
	Sleep(100)
Wend

Func _WinAPI_InternetGetConnectedState($iFlag)
	Local $Ret = DllCall('wininet.dll', 'bool', 'InternetGetConnectedState', 'dword*', $iFlag, 'dword', 0)
	If (@error) Or (Not IsArray($Ret)) Then
		Return SetError(@error, @extended, 0)
	EndIf
	Return $Ret[0] <> 0
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Viktor1703 , у меня пров дает инет по витой паре без модема, но дозвон используется...может быть поэтому твой скрипт не сработал? пишет , что инет есть в любом случае :smile:

если по теме, то я использую
Код:
InetRead("http://www.yandex.ru")

в цикле. чем хорошо - эта функция работает с прокси . не нужно заморачиваться насчет логинов и паролей.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Александр, честно говоря я мало чего знаю о этой функции, Вы пробовали флаги подобрать?

И та функция тоже работает с прокси - $INTERNET_CONNECTION_PROXY
 
Верх