Сам он не завершается, его завершает Autoit, если далее нет кода. Ваш пример просто перезапускает сам себя, будучи не выгруженным, из памяти. Тот же цикл с MsgBox аналогичен вашему примеру.art279 сказал(а):при нажатии на кнопку ОК либо при истечении времени ожидания скрипт сам завершается, тут Exit никчему, а вот в скрипте Shutdown_close он прсутствует: http://autoit-script.ru/index.php/topic,2483.new.html#new
While 1
MsgBox(64, "Info", "TEST", 5)
;~ $dist=(@ScriptFullPath)
;~ Run($dist)
WEnd
MsgBox(64, "Info", "TEST")
$dist=(@ScriptFullPath)
Run($dist)
Exit
Garrett сказал(а):art279 объясните, пожалуйста, какой тут смысл в Exit
Код:;~~~ Case $msg = $button3 MsgBox(64, "info", "Вы отменили действие") Run($self) Exit ;~~~
Yashied сказал(а):Вот здесь все давно уже реализовано.
if WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
Yashied сказал(а):Объедините этот Ваш пример с предыдущим. Будет работать (если будет, то всегда ли)? Т.е. будет работать перезапуск скрипта при наличии защиты от повторного запуска в Вашей реализации?
#include <GUIConstants.au3>
if WinExists(@ScriptName) then Exit
AutoItWinSetTitle(@ScriptName)
Opt("TrayIconDebug", 1)
;Opt("TrayAutoPause", 0)
;Opt("TrayIconHide", 1)
GUICreate("Сообщение от Админа!", 575,100)
GUICtrlCreateGroup ("КОМПЬЮТЕР СЕГОДНЯ ВЫКЛЮЧАТЬ НЕЛЬЗЯ! ТОЛЬКО ПРИ НЕОБХОДИМОСТИ!", 10, 10, 555, 70)
$button1=GUICtrlCreateButton ("ВЫКЛЮЧИТЬ КОМПЬЮТЕР", 15, 35, 175, 40)
$button2=GUICtrlCreateButton ("ПЕРЕЗАГРУЗИТЬ КОМПЬЮТЕР", 200, 35, 175, 40)
$button3=GUICtrlCreateButton ("ОТМЕНА", 385, 35, 175, 40)
$title="Завершение работы Windows"
;$title="Выключить компьютер"
$dist=(@ScriptFullPath)
if @WDAY=5 And @HOUR<20 Then
Do
WinWait($title)
Send("{ESC}")
MsgBox(262208, "Сообщение от Админа", "СЕГОДНЯ КОМПЬЮТЕР НЕ ОТКЛЮЧАЕМ!!!")
while 1
GUISetState()
$msg=GUIGetMsg()
Select
Case $msg = $button1
MsgBox(64, "info", "Вы выбрали выключение")
Shutdown(1)
Exit
Case $msg = $button2
MsgBox(64, "info", "Вы выбрали перезагрузку")
Shutdown(2)
Exit
Case $msg = $button3
MsgBox(64, "info", "Вы отменили действие")
Run($dist)
Exit
EndSelect
WEnd
Until 1
EndIf
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
MsgBox(64, "info", "Вы отменили действие")
Run(@ScriptFullPath)
Sleep(100)
Exit
art279 сказал(а):Как я понял все тут обсуждают методы надёжного перезапуска скрипта после завершения его работы?! Если да то вот мой вариант демонстрации перезапуска скрипта...
Yashied сказал(а):Вернемся немного назад.
art279 сказал(а):Как я понял все тут обсуждают методы надёжного перезапуска скрипта после завершения его работы?! Если да то вот мой вариант демонстрации перезапуска скрипта...
Так вот, Ваш метод ненадежный.
art279 сказал(а):А разве Ваш полностью надёжный?
art279 сказал(а):Или Вам приятно новичков в грязь ударять (при том что некоторые из них довольно неплохие идеи высказывают....)?
Подтверждаю. Более того, уже проделан титанический труд для развития всего сообщества AutoIt.надеюсь многие здесь это подтвердят)
`p r o x y сказал(а):По-моему, самый надежный и, тем более, самый-самый гибкий метод уже предложен.
Run(@ScriptFullPath...
Автор темы | Похожие темы | Форум | Ответы | Дата |
---|---|---|---|---|
Э | Надежный метод различать вкладки IE с почти совпадающими заголовками | Общие вопросы по AutoIt | 0 | |
S | Надежный ли это код приема данных? | Общие вопросы по AutoIt | 0 | |
Надежный перезапуск скрипта | UDF - Пользовательские функции | 3 |