Что нового

Рестарт скрипта

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
А я бы вынес всю работу в функцию - и читается проще и exitloop'ы считать не нужно
Код:
HotKeySet("{F4}", "Restart")

Global $Restart = False

; главный цикл
While 1
  $Restart = False
  MainScript()
WEnd

; главная функция скрипта
Func MainScript()
  MsgBox(0, "", "Ввод данных")
  While Sleep(1000)
    ConsoleWrite("Обработка данных" & @CRLF)
    If $Restart Then Return
    ConsoleWrite("Вызовы функций" & @CRLF)
    If $Restart Then Return
    ConsoleWrite("Какие-то другие циклы" & @CRLF)
    ConsoleWrite("---------------------" & @CRLF)
    If $Restart Then Return
  WEnd
EndFunc

; функция перезапуска
Func Restart()
  $Restart = True
EndFunc
 
A

Alofa

Гость
Согласен, тоже такой вариант рассматривал.
Но согласитесь неудобно после каждой функции делать проверку
Код:
If $Restart Then Return

А если таких функций очень много, или работа какой-либо из них занимает очень много времени?
Да согласен, перезагрузка не очень красивый вариант, но альтернативы пока не вижу.

Можно правда попробовать через
Код:
AdlibRegister()

Но это будет тормозить скрипт (ИМХО), хотя не больше в/у варианта.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Поэтому в каждом цикле нужно не While 1 а While $ready
 
Автор
S

saloma

Новичок
Сообщения
19
Репутация
0
"сложна непатятна" хотя для справки почитать интересно
рабочий вариант, если кому интересно
Код:
HotKeySet("{F1}", "Start")
HotKeySet("{F2}", "Stop")
HotKeySet("{F5}", "MyExit")
Global $pid
While 1
    Sleep(10)
WEnd
Func Start()
   If Not ProcessExists("1.exe") Then
    $pid = Run("1.exe")
EndIf
 EndFunc
 Func Stop()
   ProcessClose($pid)
 EndFunc
Func MyExit()
    Exit
EndFunc
 
A

Alofa

Гость
saloma сказал(а):
рабочий вариант ...
saloma я смотрю вас такое устраивает.
А как же ваша задача:
saloma сказал(а):
Можно ли сделать кнопку, что бы в любой момент выполнения скрипта, я мог ее нажать, и скрипт начинал работу заново, с ввода значений.
... одна кнопка, один скрипт?

Да ладно, не важно, в любом случае тема уже решена.
 
Верх