Что нового

Запуск функции в указанае время

kolosov

Новичок
Сообщения
137
Репутация
0
Добрый день. Токая проблема ,не запускается функция в указанный час.
Вот что должен делать код:
1) В интерфейсе программы указывается, час и минута.
2)Как только время на компьютере и в программе совпадает, должно запуститься одно из 4 действий(Так же указанных в интерфейсе)
Проблема в том что, когда время совпадает, не чего не происходит.
Вот собственно код:
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 176, 103)
$Group9 = GUICtrlCreateGroup("Профилактика игры ", 392, 176, 185, 81)
$Label13 = GUICtrlCreateLabel("Начало в :", 400, 200, 56, 17)
Global $StartTimerOnHour = GUICtrlCreateInput("04", 456, 200, 21, 21)
$Label14 = GUICtrlCreateLabel(" :", 476, 200, 10, 17)
Global $StartTimerOnMin = GUICtrlCreateInput("00", 484, 200, 21, 21)
Global $ComboTimerOut = GUICtrlCreateCombo("Сколько ждать?", 400, 224, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "30 минут|60 минут|90 минут|120 минут")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Start= GUICtrlCreateButton("Start",10,10)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $Num1=0,$Num2 = 0
Global	$TimerHour = GUICtrlRead($StartTimerOnHour)
Global	$TimerMin = GUICtrlRead($StartTimerOnMin)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Start
			Start()
	EndSwitch
WEnd


Func Start()
	While 1
	Switch GUICtrlRead( $ComboTimerOut)
		Case "30 минут"
			Select
				Case @HOUR = $TimerHour
					$Num1 = $Num1 + 1
				Case @MIN = $TimerMin
					$Num2 = $Num2 +1
				Case $Num1 >=1 And $Num2 >=1
					MsgBox(0,"","3")
					Sleep(30000)
			EndSelect
		Case "60 минут"
			Select
				Case @HOUR = $TimerHour
					$Num1 = $Num1 + 1
				Case @MIN = $TimerMin
					$Num2 = $Num2 +1
				Case $Num1 >=1 And $Num2 >=1
					MsgBox(0,"","6")
					Sleep(60000)
				Case "90 минут"
								EndSelect
			Select
				Case @HOUR = $TimerHour
					$Num1 = $Num1 + 1
				Case @MIN = $TimerMin
					$Num2 = $Num2 +1
				Case $Num1 >=1 And $Num2 >=1
					MsgBox(0,"","9")
					Sleep(90000)
				Case "120 минут"
					EndSelect
			Select
				Case @HOUR = $TimerHour
					$Num1 = $Num1 + 1
				Case @MIN = $TimerMin
					$Num2 = $Num2 +1
				Case $Num1 >=1 And $Num2 >=1
					MsgBox(0,"","12")
					Sleep(120000)
					EndSelect
	EndSwitch
	WEnd
EndFunc

Надеюсь на вашу помощь!
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Вот уменьшил основную функцию. Но всё ровно не работает (
Код:
Func Start()
	While 1
	Switch GUICtrlRead( $ComboTimerOut)
		Case "30 минут"
			Select
				Case @HOUR = $TimerHour And @MIN = $TimerMin
					MsgBox(0,"","3")
					Sleep(30000)
			EndSelect
		Case "60 минут"
			Select
				Case @HOUR = $TimerHour And @MIN = $TimerMin
					MsgBox(0,"","6")
					Sleep(60000)
					EndSelect
				Case "90 минут"
			Select
				Case @HOUR = $TimerHour And @MIN = $TimerMin
					MsgBox(0,"","9")
					Sleep(90000)
					EndSelect
				Case "120 минут"
			Select
				Case @HOUR = $TimerHour And @MIN = $TimerMin
					MsgBox(0,"","12")
					Sleep(120000)
					EndSelect
	EndSwitch
	WEnd
EndFunc



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

Серьёзно? Не кто не может помочь с этим вопросом?


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

Решил :laugh:.Просто нужно обновить переменную в самой функции а не в начале кода.
Вот так:
Код:
Func Start()
	$TimerHour = GUICtrlRead($StartTimerOnHour)
	$TimerMin = GUICtrlRead($StartTimerOnMin)
	While 1
		MsgBox(0,"",$TimerHour& " "& $TimerMin)
	Switch GUICtrlRead( $ComboTimerOut)
		Case "30 минут"
If @HOUR = $TimerHour And @MIN = $TimerMin Then
					MsgBox(0,"","3")
					Sleep(30000)
					EndIf
		         Case  "60 минут"
If @HOUR = $TimerHour And @MIN = $TimerMin Then		
	            MsgBox(0,"","6")
					Sleep(60000)
					EndIf
				   Case  "90 минут"
If @HOUR = $TimerHour And @MIN = $TimerMin Then				
	            MsgBox(0,"","9")
					Sleep(90000)
					EndIf
				   Case  "120 минут"
If @HOUR = $TimerHour And @MIN = $TimerMin Then	
	            MsgBox(0,"","12")
					Sleep(120000)
					EndIf
	EndSwitch
	WEnd
EndFunc

Может кому пригодиться )
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
... Ваш код

        Case $Start
			Start()
            AdlibRegister('Start', 60 * 1000)


Func Start()
	Local $iTimeH = GUICtrlRead($StartTimerOnHour)
	Local $iTimeM = GUICtrlRead($StartTimerOnMin)

	If @HOUR = $iTimeH And @MIN = $iTimeM Then
		MsgBox(0, '', 'Время пришло')
		Sleep(Number(GUICtrlRead($ComboTimerOut)) * 1000)
	EndIf

EndFunc



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

Или вот http://autoit-script.ru/index.php?topic=14706.0 TimeEvent - Событие по дате и времени
 
Верх