Что нового

2 цикла в одном скрипте (While...WEnd)

CRD

Новичок
Сообщения
57
Репутация
0
Друзья, подскажите, как использовать 2 цикла в одном скрипте. Первый срабатывает, второй не работает ((( Или так нелья ?
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код покажите или задание поясните.
В общем случае: выход из первого цикла по условию.
 
Автор
C

CRD

Новичок
Сообщения
57
Репутация
0
Для наглядности взял 2 скрипта, которые мне написали на форуме и скрестил. Вот мой код:

Код:
Global $interface = '"Беспроводная сеть"'
Global $wifipoints = '"Office112"'
While 1
    If InetGetSize("http://www.ya.ru/") = 0 Then
        RunWait('netsh.exe wlan disconnect interface=' & $interface, '', @SW_HIDE)
        Sleep(1000)
        RunWait('netsh.exe wlan connect name=' & $wifipoints & ' interface=' & $interface, '', @SW_HIDE)
        Sleep(4000)
    EndIf
WEnd

While Sleep(250)
    If _Timer_GetIdleTime() > 30000 Then
        If ProcessExists("notepad.exe") Then ProcessClose("notepad.exe")
        If Not ProcessExists("TeamViewer.exe") Then Run("TeamViewer.exe")
    Else
        If ProcessExists("TeamViewer.exe") Then ProcessClose("TeamViewer.exe")
        If Not ProcessExists("notepad.exe") Then Run("notepad.exe")
    EndIf
WEnd


Идея такова, чтоб если комп находился в режиме простоя запускалась тимка, если за компом я работаю, включается другое приложение ... Но не хочет запускать ни тимку, ни блокнот (((

Но соединение с сетью реанимирует ...


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

Попробовал так:

Код:
#include <Timers.au3>
#include <Date.au3>

AdlibRegister("Reconnect", 30000) ; каждые 30 секунд вызываем функцию Reconnect
Sleep(3000) ; в течение 3 сек
Exit

Func Reconnect()
Global $interface = '"Беспроводная сеть"'
Global $wifipoints = '"Office112"'
    If InetGetSize("http://www.ya.ru/") = 0 Then
        RunWait('netsh.exe wlan disconnect interface=' & $interface, '', @SW_HIDE)
        Sleep(1000)
        RunWait('netsh.exe wlan connect name=' & $wifipoints & ' interface=' & $interface, '', @SW_HIDE)
        Sleep(4000)
    EndIf
EndFunc

While Sleep(250)
    If _Timer_GetIdleTime() > 30000 Then
        If ProcessExists("notepad.exe") Then ProcessClose("notepad.exe")
        If Not ProcessExists("TeamViewer.exe") Then Run("TeamViewer.exe")
    Else
        If ProcessExists("TeamViewer.exe") Then ProcessClose("TeamViewer.exe")
        If Not ProcessExists("notepad.exe") Then Run("notepad.exe")
    EndIf
WEnd
Чудо не произошло (((
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <Timers.au3>
#include <Date.au3>

AdlibRegister("_Reconnect", 30000)

While Sleep(250)
	If _Timer_GetIdleTime() > 30000 Then
		If ProcessExists("notepad.exe") Then ProcessClose("notepad.exe")
		If Not ProcessExists("TeamViewer.exe") Then Run("TeamViewer.exe")
	Else
		If ProcessExists("TeamViewer.exe") Then ProcessClose("TeamViewer.exe")
		If Not ProcessExists("notepad.exe") Then Run("notepad.exe")
	EndIf
WEnd

Func _Reconnect()
	Local $sInterface = '"Беспроводная сеть"'
	Local $sWifipoints = '"Office112"'
	If Not InetGetSize("http://www.ya.ru/") Then ;Ping("http://www.ya.ru/")?
		RunWait('netsh.exe wlan disconnect interface=' & $sInterface, '', @SW_HIDE)
		Sleep(1000)
		RunWait('netsh.exe wlan connect name=' & $sWifipoints & ' interface=' & $sInterface, '', @SW_HIDE)
		Sleep(4000)
	EndIf
EndFunc   ;==>_Reconnect
 
Автор
C

CRD

Новичок
Сообщения
57
Репутация
0
Tempo, теперь программы запускает, но соединение не восстанавливает (((

И не очено понял твой комментарий с пингом ?
 

slowhd

Новичок
Сообщения
28
Репутация
1
просто под один цикл вбей
Код:
Global $interface = '"Беспроводная сеть"'
Global $wifipoints = '"Office112"'
While 1
    If InetGetSize("http://www.ya.ru/") = 0 Then
        RunWait('netsh.exe wlan disconnect interface=' & $interface, '', @SW_HIDE)
        Sleep(1000)
        RunWait('netsh.exe wlan connect name=' & $wifipoints & ' interface=' & $interface, '', @SW_HIDE)
        Sleep(4000)
    EndIf
 Sleep(250)
    If _Timer_GetIdleTime() > 30000 Then
        If ProcessExists("notepad.exe") Then ProcessClose("notepad.exe")
        If Not ProcessExists("TeamViewer.exe") Then Run("TeamViewer.exe")
    Else
        If ProcessExists("TeamViewer.exe") Then ProcessClose("TeamViewer.exe")
        If Not ProcessExists("notepad.exe") Then Run("notepad.exe")
    EndIf
WEnd
 
Автор
C

CRD

Новичок
Сообщения
57
Репутация
0
Разобрался. Благодарю всех за помощь :beer:
 
Верх