-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
остановка функции при условии.
в коде вызываем функцию, которая будет работать постоянно(через каждый 3 минуты)
Код:
AdlibEnable("Timetosleep",180000)
в этой функции есть переменная. например
Код:
global $i=0
func Timetosleep()
$i+=1
endfunc
паралельно это функции в "главном" коде программа выполняется какаято другая функция(не столь важно).
Вопрос: как сделать чтобы при достижении скажем $i=5(через 15минут) мы останавливали функцию в "главном" коде, а при $i=6(спустя три минуты после паузы) снова ее возобновляли.
|
Не знаю, правильно ли я понял :search:
!AutoIt Version: 3.3.6.0
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $i = 0, $begin = 0
Global $iTimeSleep = 3 * 60 ; 3 Минуты
AdlibRegister('_Timetosleep', 180000)
AdlibRegister('_TrackingTimer', 1000)
$Form1 = GUICreate("", 243, 58, 348, 246, BitOR($WS_CAPTION, $WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
$Button1 = GUICtrlCreateButton("Х", 8, 8, 227, 41, 0)
GUISetState()
Do
Until GUIGetMsg() = $Button1
Func _Timetosleep()
$i += 1
ConsoleWrite('> ' & $i & @CRLF)
If $i = 5 Then
$begin = TimerInit()
AdlibUnRegister('_Timetosleep')
EndIf
EndFunc ;==>_Timetosleep
Func _TrackingTimer()
If $begin > 0 And Round(TimerDiff($begin) / 1000) > $iTimeSleep Then AdlibRegister('_Timetosleep', 180000)
EndFunc ;==>_TrackingTimer
|
реализация знакома и понятна. вотЪ только вопрос- продолжит ли он с местра разЪединения фнкию, или нанет заново
|
Малец не правильно написал код ...
Функцию _Timetosleep он продолжит, те глобальная переменная $i будет приращиваться (Остановится на 5 ... после паузы 3 минуты будет 6,7,8 ...)
Код:
#include <WindowsConstants.au3>
Global $i = 0, $begin = 0, $fTimerOff = False
Global $iTimeSleep = 3 * 60 ; 3 Минуты
AdlibRegister('_Timetosleep', 180000)
AdlibRegister('_TrackingTimer', 500)
$Form1 = GUICreate("", 243, 58, 348, 246, BitOR($WS_CAPTION, $WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
$Button1 = GUICtrlCreateButton("Х", 8, 8, 227, 41, 0)
GUISetState()
Do
Until GUIGetMsg() = $Button1
Func _Timetosleep()
$i += 1
ConsoleWrite('> ' & $i & @CRLF)
If $i = 5 Then
$begin = TimerInit()
AdlibUnRegister('_Timetosleep')
EndIf
EndFunc ;==>_Timetosleep
Func _TrackingTimer()
If $begin > 0 And Round(TimerDiff($begin) / 1000) > $iTimeSleep And Not $fTimerOff Then
AdlibRegister('_Timetosleep', 180000)
$fTimerOff = True
EndIf
EndFunc ;==>_TrackingTimer
|
Время: 20:15.
© OSzone.net 2001-