1 (изменено: golemjkeee, 2026-01-14 19:08:11)

Тема: AHK: Выполнение условия в определенное время, взятое из 2х переменных

Всем привет. Я дилетант в этом деле, но сам код длинный очень (на 1400 строк), скидываю кусок, который отрабатывает не так, как хотелось бы.

Вообщем проверка времени была когда-то реализована так:

FormatTime, TT,, Time
if (TT = "8:55" or TT = "8:56" or TT = "8:57"){
}

в указанное время в кавычках условие выполнялось.
Теперь пытаюсь переделать, чтоб к текущему часу прибавлялся 1, а к минутам 1,2,3(к минутам = чтоб не пропустить момент)
И второй вариант это когда я сам задаю сколько к часу прибавить ( InputBox, HTIMEINPUT, ... ), суть примерно таже, просто HTIMEAFK1 := HREALTIME + HTIMEINPUT
Прибавка к текущему часу выполнена так:

		FormatTime, REALTIME,, Time
		word_array := StrSplit(REALTIME, ":") ; Делит значения разделенные двоеточиями.
		HREALTIME := word_array[1] ; до двоеточия записывает в переменную (часы)
		MREALTIME := word_array[2] ; после двоеточия записывает в переменную (минуты)
		MTIMEAFK1 := MREALTIME ; минуты
		MTIMEAFK22 := MREALTIME + 1 ; минуты +1
		MTIMEAFK33 := MREALTIME + 2 ; минуты +2
		MTIMEAFK2 := Format("{:02}", MTIMEAFK22) ; добавляет 0, чтоб 2значное число было если после прибавления получилось 1-значное
		MTIMEAFK3 := Format("{:02}", MTIMEAFK33) ; добавляет 0, чтоб 2значное число было если после прибавления получилось 1-значное
		HTIMEAFK1 := HREALTIME + 1 ; +1 час
		FormatTime, TT,, Time
		if (TT := "%HTIMEAFK1%:%MTIMEAFK1%" or TT := "%HTIMEAFK1%:%MTIMEAFK2%" or TT := "%HTIMEAFK1%:%MTIMEAFK3%"){
		}

Но почему-то ahk выполняет условие, считая, что время уже наступило...
Как пофиксить? Пробовал TT = "%HTIMEAFK1%:%MTIMEAFK1%" - условие не выполняет в нужное время...

2

Re: AHK: Выполнение условия в определенное время, взятое из 2х переменных

if (TT = HTIMEAFK1 . ":" . MTIMEAFK1 || TT = HTIMEAFK1 . ":" . MTIMEAFK2 || TT = HTIMEAFK1 . ":" . MTIMEAFK3) {
    
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Выполнение условия в определенное время, взятое из 2х переменных

teadrinker
О, спасибо огромное!

Но я вот щас дошел до того, что достаточно одного условия: >=

FormatTime, TT,, Time
if TT >= %HTIMEAFK1%:%MTIMEAFK1%

Вроде как отрабатывает верно, и не надо ничего к минутам там приплюсовывать

4

Re: AHK: Выполнение условия в определенное время, взятое из 2х переменных

Если задача выполнить действие в определённое время, то вообще такая проверка времени не нужна, нужно просто задать таймер на однократное выполнение через рассчитанный интервал.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Выполнение условия в определенное время, взятое из 2х переменных

teadrinker
Да, я изучал таймеры, но чёт в свое время не получилось реализовать через них, показалось слишком муторным и сложным
Поэтому у меня просто куча меток, и он по ним сверху вниз идет, в которых внутри куча разных условий, в том числе 3 условия связанных со временем, если какое то условие выполнилось - идет на нужную метку, выполняет действия, и снова возвращается в main))
Я уверен, что можно сделать гораздо короче чем 1500 строк и лучше, но мои задачи выполняет, и замечательно)