Что нового

По кнопке “выход”, скрипт не заканчивает работу

Neo

Новичок
Сообщения
46
Репутация
0
Пожалуйста.
Если сразу после запуска скрипт кликнуть “выход”, то скрипт заканчивает работу.
Если сначала кликнуть “старт” потом кликнуть “выход”, то скрипт продолжает работу.
Что сделать, чтобы заканчивал свою работу при клике на “выход”?
Код:
#NoTrayIcon
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
HotKeySet('{Esc}', '_Exit')
$var = "1" 

$gui = GUICreate(" Lot", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45, -1, 0x00000018); WS_EX_ACCEPTFILES
$sValue = GUICtrlCreateInput("0.00000001", 10, 5, 300, 20)
GUICtrlSetState(-1, $GUI_ACCEPTFILES)
;GUICtrlCreateInput ("", 10,  35, 300, 20)   ; will not accept drag&drop files
$btn = GUICtrlCreateButton("старт", 40, 75, 60, 20)
$btn2 = GUICtrlCreateButton('выход', 130, 75, 60, 20)
$sPass = GUICtrlCreateInput ("1", 10,  35, 75, 20)
GUISetState()
$msg = 0
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $btn ;And $sPass = $var
            if $var= GUICtrlRead($sPass)  Then _Funj()
			GUISetState(@SW_MINIMIZE, $gui)
		 Case $msg = $btn2

            GUIDelete($gui)
             _Exit()
		   Exit
        Case $msg = $GUI_EVENT_CLOSE

			GUIDelete($gui)

		   Exit
			;GUISetState(@SW_MINIMIZE, $gui)
    EndSelect
WEnd
Func  _Funj()
While 1

 _funcA()

Sleep(Random(6000, 12000, 1))
WEnd
EndFunc

Func _funcA()
Send("{S 30}")
EndFunc
 Func _Exit()
Exit
EndFunc
 
Автор
N

Neo

Новичок
Сообщения
46
Репутация
0
Garrett
Не знаю как условие написать
Код:
Func  _Funj()
While 1

 _funcA()
 If ЗДЕСЬ КАКОЕ УСЛОВИЕ НУЖНО? Then ExitLoop
Sleep(Random(6000, 12000, 1))
WEnd
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Neo
Код:
Func _Funj()
  _funcA()
  Local $Timer = TimerInit()
  Local $Random = Random(6000, 12000, 1)
  While Sleep(11)
    If GUIGetMsg() = $btn2 Then Exit
    If TimerDiff($Timer) > $Random Then ExitLoop
  WEnd
EndFunc



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

Исправил функцию. Теперь работает, как надо.
 
Автор
N

Neo

Новичок
Сообщения
46
Репутация
0
InnI сказал(а):
Исправил функцию. Теперь работает, как надо.
Спасибо. Скажите, почему вы заменили
Код:
Sleep(Random(6000, 12000, 1))

на
Код:
If TimerDiff($Timer) > $Random Then ExitLoop

это я читаю как - если разница во времени больше рандомно выбранного числа то выходим.
Я хотел, чтобы функция “_funcA()” вызывалась с паузой – через случайный промежуток времени.
Будет ли так?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Neo
почему вы заменили
Чтобы обработать нажатие кнопки.

чтобы функция “_funcA()” вызывалась с паузой – через случайный промежуток времени
Код:
Func _Funj()
  While 1
    _funcA()
    Local $Timer = TimerInit()
    Local $Random = Random(6000, 12000, 1)
    Do
      If GUIGetMsg() = $btn2 Then Exit
    Until TimerDiff($Timer) > $Random
  WEnd
EndFunc
 
Верх