Что нового

[Время, дата] включить цикл в определенное время

andreitrane

Новичок
Сообщения
141
Репутация
3
как сделать чтобы цикл включался в заданное время?
например если уехал куда нибудь, ставишь время 18:30, он ждет именно этого времени и включается
и если можете, приведите пример с чекбоксом повтора, например если чекбокс нажат, то скрипт выполняет действие в заданное время, а как закончит выполнение снова ждет это время, но только на следующий день
а если чекбокс не нажат, то скрипт просто выполняет дйствие и останавливается
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Время, дата] включить скрипт в определенное время

Планировщик заданий есть в каждой винде
 
Автор
A

andreitrane

Новичок
Сообщения
141
Репутация
3
Re: [Время, дата] включить скрипт в определенное время

axlwor [?]
Планировщик заданий есть в каждой винде
при чем тут планировщик??
я хочу сделать в программе 2 функции: ручное выполнение (то есть нажал и сразу начало выполняться) или выполнение по времени (то есть поставил определенное время, программа ждет этого времени и включает цикл)
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
andreitrane
Нужно создать вспомогательный цикл, который будет проверять, соответствует ли текущее время установленному таймеру. Если соответствует, то выполнять программу. Не обязательно делать точное соответствие до секунды, достаточно проверить, что текущее время больше установленного таймера.
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Попробуй функцию _Now(), например. В Autoit куча готовых функций, связанных с временем.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Подобные вопросы ведь уже рассматривались ???
Если посмотреть здесь внизу этого топика: Раздел : Похожие темы,
то наверняка найдется ответ на поставленный вопрос.
В крайнем случае воспользоваться поиском нетрудно. :smile:

Если уж надо получить полностью готовый скрипт, то для этого существует раздел : http://autoit-script.ru/index.php?board=8.0
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
andreitrane
Можно так попробовать:
Код:
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Global $sHour, $sMin, $fWork = False, $fExit = False, $sDayOld

HotKeySet('{Esc}', '_Exit')

_MySetting()

While 1
	If Not $fWork Then
		If @HOUR == $sHour Then
			If @MIN >= $sMin Then
				$sDayOld = @MDAY
				_MyFunc()
			EndIf
		ElseIf @HOUR > $sHour Then
			$sDayOld = @MDAY
			_MyFunc()
		EndIf
	EndIf
	If $sDayOld And $sDayOld <> @MDAY Then
		$fWork = False
	EndIf
	Sleep(500)
WEnd

Func _MySetting()
	Local $nComboHour, $nComboMin, $nCheckboxExit, $nButtonGo, $nMsg, $s_Hour, $s_Min
	For $i = 0 To 23
		$s_Hour &= StringFormat('%02d|', $i)
	Next
	For $i = 0 To 60 Step 10
		$s_Min &= StringFormat('%02d|', $i)
	Next
	GUICreate('Setting', 250, 150)
	GUICtrlCreateLabel('Часы', 50, 10, 50, 17, $SS_CENTER)
	GUICtrlCreateLabel('Минуты', 150, 10, 50, 17, $SS_CENTER)
	$nComboHour = GUICtrlCreateCombo('', 50, 35, 50, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE))
	GUICtrlSetData(-1, $s_Hour, '18')
	$nComboMin = GUICtrlCreateCombo('', 150, 35, 50, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE))
	GUICtrlSetData(-1, $s_Min, '30')
	$nCheckboxExit = GUICtrlCreateCheckbox('Выход после выполнения', 50, 70, 150, 20)
	$nButtonGo = GUICtrlCreateButton('Вперед', 60, 105, 130, 25)
	GUISetState()

	While 1
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				Exit
			Case $nButtonGo
				$sHour = GUICtrlRead($nComboHour)
				$sMin = GUICtrlRead($nComboMin)
				If GUICtrlRead($nCheckboxExit) = $GUI_CHECKED Then
					$fExit = True
				EndIf
				TraySetToolTip('Время выполнения: ' & StringFormat('%d:%d', $sHour, $sMin))
				ExitLoop
		EndSwitch
	WEnd
	GUIDelete()
EndFunc   ;==>_MySetting

Func _MyFunc()
	MsgBox(64, 'Info', 'Часы: ' & @HOUR & @LF & 'Минуты: ' & @MIN)
	If $fExit Then Exit
	$fWork = True
	TraySetToolTip(StringFormat('%d.%d.%d', @MDAY, @MON, @YEAR) & '  Выполнено в ' & StringFormat('%d:%d', @HOUR, @MIN))
EndFunc   ;==>_MyFunc

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Верх