Автор Тема: 2 цикла в одном скрипте (While...WEnd)  (Прочитано 219 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн CRD [?]

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

Русское сообщество AutoIt

2 цикла в одном скрипте (While...WEnd)
« Отправлен: Апрель 16, 2018, 17:50:09 »

Оффлайн hedji [?]

  • Осваивающий
  • **
  • Сообщений: 233
  • Репутация: 33
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #1, Отправлен: Апрель 16, 2018, 17:54:07 »
Код покажите или задание поясните.
В общем случае: выход из первого цикла по условию.

Оффлайн CRD [?]

  • Новичок
  • *
  • Сообщений: 57

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #2, Отправлен: Апрель 16, 2018, 18:09:43 »
Для наглядности взял 2 скрипта, которые мне написали на форуме и скрестил. Вот мой код:

Код: AutoIt [Выделить]
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


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

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


Добавлено: Апрель 16, 2018, 18:27:01
Попробовал так:

Код: AutoIt [Выделить]
#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

Чудо не произошло (((
« Последнее редактирование: Апрель 16, 2018, 18:27:02 от CRD, Причина: Объединение сообщений »

Онлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 334
  • Репутация: 79
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #3, Отправлен: Апрель 16, 2018, 18:31:46 »
Код: AutoIt [Выделить]
#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

« Последнее редактирование: Апрель 17, 2018, 18:11:02 от Tempo »

Русское сообщество AutoIt

Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #3 Отправлен: Апрель 16, 2018, 18:31:46 »

Оффлайн CRD [?]

  • Новичок
  • *
  • Сообщений: 57

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #4, Отправлен: Апрель 16, 2018, 18:59:06 »
Tempo, теперь программы запускает, но соединение не восстанавливает (((

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

Помечен как лучший ответ пользователем CRD Отправлен Апрель 17, 2018, 16:46:28

Оффлайн slowhd [?]

  • Новичок
  • *
  • Сообщений: 20
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #5, Отправлен: Апрель 17, 2018, 14:52:52 »
просто под один цикл вбей
Код: AutoIt [Выделить]
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
 


Оффлайн CRD [?]

  • Новичок
  • *
  • Сообщений: 57

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #6, Отправлен: Апрель 17, 2018, 18:07:10 »
Разобрался. Благодарю всех за помощь :beer:

Русское сообщество AutoIt

Re: 2 цикла в одном скрипте (While...WEnd)
« Ответ #6 Отправлен: Апрель 17, 2018, 18:07:10 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
13 Ответов
3799 Просмотров
Последний ответ Сентябрь 07, 2011, 00:13:23
от hohmuch
11 Ответов
4764 Просмотров
Последний ответ Январь 27, 2012, 10:55:33
от komorov74
3 Ответов
2201 Просмотров
Последний ответ Октябрь 29, 2013, 04:51:40
от madmasles
4 Ответов
1514 Просмотров
Последний ответ Январь 29, 2014, 15:45:46
от Dima1337
8 Ответов
1940 Просмотров
Последний ответ Июль 30, 2014, 13:17:47
от madmasles
4 Ответов
963 Просмотров
Последний ответ Март 23, 2015, 13:48:32
от Pirat
5 Ответов
1512 Просмотров
Последний ответ Май 26, 2015, 23:09:42
от And
9 Ответов
1873 Просмотров
Последний ответ Сентябрь 19, 2015, 01:02:37
от Tosyk
3 Ответов
1304 Просмотров
Последний ответ Февраль 04, 2016, 11:55:32
от Alofa
2 Ответов
696 Просмотров
Последний ответ Июнь 02, 2016, 21:40:33
от kolosov