<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; Выполнение действия каждый час]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=16002</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=16002&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Выполнение действия каждый час».]]></description>
		<lastBuildDate>Tue, 19 Jan 2021 12:34:19 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Выполнение действия каждый час]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145038#p145038</link>
			<description><![CDATA[<p>Была похожая <a href="http://forum.script-coding.com/viewtopic.php?pid=104068#p104068">тема</a>.<br />Я не стал оптимизировать код под задачу, поэтому помимо ежечасного срабатывания можно добавить ещё свои точки.<br /></p><div class="codebox"><pre><code>

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

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

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

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

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

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

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

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

SetTimer(func, time) {
	SetTimer, % func, % time
}
</code></pre></div><p>Узнать когда сработает.<br /></p><div class="codebox"><pre><code>
1:: MsgBox % &quot;До следующего осталось: &quot;
	. FormatTime(MinTime(Times, Time)) 
	. &quot;`n`n&quot; &quot;Сработает в: &quot; Time 
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 19 Jan 2021 12:34:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145038#p145038</guid>
		</item>
		<item>
			<title><![CDATA[Re: Выполнение действия каждый час]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145031#p145031</link>
			<description><![CDATA[<p>Срабатывал по времени именно а не по задержке.</p>]]></description>
			<author><![CDATA[null@example.com (sampandrup)]]></author>
			<pubDate>Tue, 19 Jan 2021 10:58:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145031#p145031</guid>
		</item>
		<item>
			<title><![CDATA[Выполнение действия каждый час]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145030#p145030</link>
			<description><![CDATA[<p>Я написал скриптик с оповещением,пожалуйста пришлите как сделать так что бы каждый час срабатывал)</p>]]></description>
			<author><![CDATA[null@example.com (sampandrup)]]></author>
			<pubDate>Tue, 19 Jan 2021 10:52:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145030#p145030</guid>
		</item>
	</channel>
</rss>
