Что нового

Будильник выдает сообщения каждый час, ориентируясь на текущее время

RipVanWinkel

Чайник
Сообщения
55
Репутация
0
Версия AutoIt: 3.3.14.2

Описание:
Здравствуйте, дорогие друзья.
Помогите решить задачу по будильнику.

В файл время.txt записан текст "20:00:00"
Как скриптом сделать следующую операцию: к времени "20:00:00" - прибавить 8 часов (получиться 4:00:00), а затем каждый час сверяться с текущим реальным временем (которое на часах) и выдавать Msgbox "осталось столько-то часов до 4:00:00" ?

Примечания:
 

Вложения

Автор
R

RipVanWinkel

Чайник
Сообщения
55
Репутация
0
IMStrelcov, слушайте - тут слишком много всего.
У меня только одна арифметическая операция по сложению времени и цикл на периодическое появление сообщения.
И все.

А у вас там на несколько страниц чего-то написано.



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

IMStrelcov
Я посмотрел файл - он совершенно никак не связан с моим вопросом.
У вас - обычные часы, которые висят на мониторе поверх всех окон.

А я спрашивал - как к времени "20:00:00" - прибавить 8 часов (получится 4:00:00), а затем каждый час сверяться с текущим реальным временем (которое на часах) и выдавать Msgbox "осталось столько-то часов до 4:00:00" ?
 

Tempo

Скриптер
Сообщения
460
Репутация
119
Код:
#include <Date.au3>
#include <MsgBoxConstants.au3>

Global Const $FILE = @ScriptDir & "\Время.txt"
Global Const $ADD_HOUR = 8
Global $__g_sAlarmDate, $g_bAlarmExit = True

_Alarm_Set(_DateAdd("h", $ADD_HOUR, _NowCalcDate() & " " & FileReadLine($FILE)))
If @error Then Exit MsgBox($MB_TOPMOST + $MB_ICONERROR, Default, "Неверное время")

While Sleep(10)
WEnd

Func _Alarm_Set($sAlarmDate)
	Local $iDiffTicks = _DateDiff("s", _NowCalc(), $sAlarmDate) * 1000
	If $iDiffTicks < 0 Then Return SetError(1, 0, 0)

	$__g_sAlarmDate = $sAlarmDate
	AdlibRegister("_Alarm_Go", $iDiffTicks)
	AdlibRegister("_Alarm_Check", 1000 * 60 * 60)
EndFunc   ;==>_Alarm_Set

Func _Alarm_Check()
	Local $sAlarmDateFormat = _DateTimeFormat($__g_sAlarmDate, 5)
	Local $iDiffTicks = _DateDiff("s", _NowCalc(), $__g_sAlarmDate) * 1000
	If $iDiffTicks > -1 Then
		Local $iH, $iM, $iS
		_TicksToTime($iDiffTicks, $iH, $iM, $iS)
		MsgBox($MB_TOPMOST + $MB_ICONINFORMATION, Default, StringFormat("До: %s, осталось: %i ч. %i м. %i с.", $sAlarmDateFormat, $iH, $iM, $iS))
	Else
		AdlibRegister("_Alarm_Check")
	EndIf
EndFunc   ;==>_Alarm_Check

Func _Alarm_Go()
	MsgBox($MB_TOPMOST + $MB_ICONINFORMATION, Default, "Будильник")
	If $g_bAlarmExit Then Exit
EndFunc   ;==>_Alarm_Go
 
Автор
R

RipVanWinkel

Чайник
Сообщения
55
Репутация
0
Tempo
Большое спасибо вам, за ответ.
 
Верх