1

Тема: AHK: Запуск функции или метки по времени каждый час в заданные минуты

Есть ли возможность на AutoHotkey запускать определенную функцию или метку по времени, например каждый час, только не интервально как в SetTimer, а ровно каждый час в 00 минут 00 секунд, 12:00, 13:00, 14:00 и так каждый час.
То есть другими словами запускать функцию или метку в определенные минуты каждый час.
Или без варианта по типу таймера на каждую секунду с проверкой времени больше никак нельзя сделать?

2

Re: AHK: Запуск функции или метки по времени каждый час в заданные минуты

Можно сделать непрерывный цикл, а в него вставить проверку конкретных минут и секунд.
SetTimer тоже можно запускать каждые полсекунды или чаще, если внутренние действия не слишком громоздки.

3

Re: AHK: Запуск функции или метки по времени каждый час в заданные минуты

Есть встроенная переменная A_Min - текущая минута (2 цифры) от 00 до 59. Можно проверять её содержимое каждые 45 секунд.

4

Re: AHK: Запуск функции или метки по времени каждый час в заданные минуты

В первый раз рассчитываете, сколько времени осталось до наступления следующего часа, запускаете таймер единоразово, а потом просто устанавливаете таймер на раз в час.

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

5

Re: AHK: Запуск функции или метки по времени каждый час в заданные минуты

teadrinker, да, наверное это наиболее лучший вариант в данном случае. Благодарю.

6 (изменено: Clannad5, 2022-09-20 05:02:23)

Re: AHK: Запуск функции или метки по времени каждый час в заданные минуты

teadrinker
А мне вот всегда было интересно, если компьютер будет виснуть за каждый час примерно на 1 минуту, то SetTimer будет отставать или нет?
Время на часах, как я понимаю, берётся через Bios+синхронизация интернета и поэтому там отставания всегда будут в пределах нормы даже после перезагрузки пк, но работает ли SetTimer по такому же принципу?

7

Re: AHK: Запуск функции или метки по времени каждый час в заданные минуты

Насколько я помню, системные функции, связанные с отсчётом времени, базируются на аппаратном таймере, так что зависания процесса не должны сказываться, если только они не происходят в тот момент, когда таймер должен сработать.

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

8 (изменено: Clannad5, 2022-09-20 13:31:00)

Re: AHK: Запуск функции или метки по времени каждый час в заданные минуты

teadrinker пишет:

если только они не происходят в тот момент, когда таймер должен сработать.

То есть всё же шансы есть, но можно же ведь как-то себя обезопасить, скажем через A_TickCount?

Чтобы он вначале выполнял для проверки одну команду и если она выполнится в течение 50-100 мс, то запускать действие?А если нет, то перезапустить таймер?

Однако не имеет особого смысла, если компьютер подвиснет в момент выполнения основного кода .