Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: 123 on September 23, 2014, 04:25:46 PM
-
В скрипте есть долгое ожидание, которое должно быть строго определённое время, но иногда оно не нужно и хотелось бы сделать возможность нажатием клавиши во время этого ожидания завершать его досрочно, чтобы скрипт продолжал работу дальше. На ум приходит только слоёный пирог из этих 2 команд - их многократное чередование, сжатое с помощью цикла. Но тогда пострадает точность всего срока ожидания. Придётся регулировать его методом тыка. Оно может получаться разным на компах разной мощности или даже на одном и том же при разной загруженности.
Можно ли сделать как-то получше ожидание с возможностью прерывания? Существует ли возможность точной ориентации по времени скрипта, в котором смесь разных команд и ожиданий?
-
Только циклом можно проконтролировать нажатия клавиш
// вариант с циклом-задержкой
$ms = $_ms // засекаем время
$count = 0
WHILE(($count < 10)&(iskeydown(#ctrl)=0)) // задержка на 10 секунд отменяемая Ctrlом
INC($count,1)
WAITMS(999)
END_CYC
LOGWRITE ("Прошло 1: ", $_ms-$ms)
// вариант с обычной задержкой
$ms = $_ms // засекаем время
WAIT(10)
LOGWRITE ("Прошло 2: ", $_ms-$ms)
HALT
Лог:
18:23:32 Прошло 1: 10003
18:23:42 Прошло 2: 10000
-
Чтобы не накапливать ошибку WAIT не используй её для паузы в этом случае. Ориентируйся на системное время.
От "компов разной мощности или даже на одном и том же при разной загруженности" зависеть не будет.
$time = $_ms+600000 // 10 минут
WHILE(($time > $_ms)&(iskeydown(#ctrl)=0))
WAITMS(20)
END_CYC