1

Тема: Выполнение действия каждый час

Я написал скриптик с оповещением,пожалуйста пришлите как сделать так что бы каждый час срабатывал)

2

Re: Выполнение действия каждый час

Срабатывал по времени именно а не по задержке.

3 (изменено: serzh82saratov, 2021-01-19 17:35:50)

Re: Выполнение действия каждый час

Была похожая тема.
Я не стал оптимизировать код под задачу, поэтому помимо ежечасного срабатывания можно добавить ещё свои точки.



EveryHour = 00:00  ; минута и секунда каждого часа

Times := []
; Times.Push("17:18") ; добавить своё время, можно с секундами
 
_Time := SubStr(A_Now, 1, -4) StrReplace(EveryHour, ":")
; _Time := A_Now  ; если нужно начиная с текущего времени
Loop 24
{
	_Time += 1, hour   ; hour min sec
	Times.Push(RegExReplace(_Time,"\d{8}(\d{2})(\d{2})(\d{2})", "$1:$2:$3"))
}
TaskTimer(Times) ; Запуск отсчёта, кргда придёт время будет вызвана OnTimer
Return

OnTimer(Time)  {
	MsgBox, , , % Time, 1
}

TaskTimer(Arr)  {  
	Min := MinTime(Arr, Time) 
	SetTimer(Func("Mediator").Bind(Time, Arr), -Min)
	TrayTip, % "Следующий в:", % Time "`n`nЧерез: " FormatTime(Min) 
}

MinTime(Arr, byref Time) {
	For k, value in Arr
		odds := DifferenceTime(value)
		, (!Min || Min > odds) 
		&& (Min := odds, Time := value)
	Return Min
}

Mediator(Time, Arr) { 
	SetTimer(Func("TaskTimer").Bind(Arr), -100)
	SetTimer(Func("OnTimer").Bind(Time), -1) 
}

DifferenceTime(Time)  {
	T := StrSplit(Time, ":")
    Time := Time2 := A_YYYY A_MM A_DD T[1] T[2] (T[3] ? T[3] : "00")
    EnvSub, Time, A_Now, Second
    Time := (Time * 1000) - A_MSec
    If Time >= 0
        Return Time
    Time2 += 1, days
    EnvSub, Time2, A_Now, Second
    Return (Time2 * 1000) - A_MSec
}

FormatTime(Time)  {
	Rest := Mod(Time, 3600000)
	Hours := Format("{:02}", Time // 3600000)
	Min := Format("{:02}", Rest // 60000)
	Sec := Format("{:02}", Mod(Rest, 60000) // 1000)
	MSec := Format("{:03}", Mod(Rest, 1000)) 
	Return Hours ":" Min ":" Sec "," MSec
}

SetTimer(func, time) {
	SetTimer, % func, % time
}

Узнать когда сработает.


1:: MsgBox % "До следующего осталось: "
	. FormatTime(MinTime(Times, Time)) 
	. "`n`n" "Сработает в: " Time 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui