Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: TNT on July 04, 2018, 11:47:32 PM
-
Допустим есть скрипт, который должен выполнять последовательно различные действия. Запуск каждого следующего действия подтверждается пользователем.
Как красивее реализовать интерактив с пользователем для запуска следующего шага?
- DIALOGBOX - нельзя задать позицию, вылезает в центре экрана
- INPUTBOX - сохраняет позицию, но обязательно нужно задавать время, идет некрасивый отсчет 9999 секунд
- RADIOBOX - пожалуй лучший вариант, но все равно слишком громоздкое окно
Все функции не работают если не присваивать возвращаемое значение переменной. Приходится заводить лишнюю переменную, перфекционист внутри меня негодует. )
Мое приложение работает поверх всех окон, поэтому появляющиеся диалоговые окна иногда бывают не видны.
- Держать цикл, который обрабатывает нажатия клавиш и "слушать" нужную юклавишу, которая запускает следующий шаг, на мой взгляд слишком избыточно и громоздко для такой простой задачи
- Можно как-то управлять выполнением текущего скрипта и ставить его на паузу? Тогда можно было бы снимать с паузы стандартными хоткеями и запускать выполнение следующего шага.
Варианты с нажатием клавиш тоже не очень устраивают поскольку хочется как-то отображать текущий шаг (название или хотя бы номер).
Есть какие-то еще варианты, которые были бы лишены если не всех, то хотя бы части перечисленных недостатков?
-
- Держать цикл, который обрабатывает нажатия клавиш и "слушать" нужную юклавишу, которая запускает следующий шаг, на мой взгляд слишком избыточно и громоздко для такой простой задачи
Варианты с нажатием клавиш тоже не очень устраивают поскольку хочется как-то отображать текущий шаг (название или хотя бы номер).
Почему цикл ожидания нажатия слишком избыточен? Мы ведь всё равно ждём.
Я использовал как раз ожидание нажатия клавиш/кнопок мыши с оповещением шага в трее по HINTPOPUP. Ничего сложного в этом нет.
SUB(wait_command, $message)
WAITMS(100)
$wait_time = $_time_t - 1
$command = 0
WHILE($command = 0)
// блок выводящий сообщение что от нас ждут
IF($wait_time < $_time_t)
HINTPOPUP($message, "Внимание!")
$wait_time = $_time_t + 10
WAITMS(50)
END_IF
// #SPACE
IF(ISKEYDOWN(#SPACE) = 1)
$command = 1
LOGWRITE ("нажали SPACE")
HINTPOPUP("нажали SPACE")
// дествие по SPACE
WHILE(ISKEYDOWN(#SPACE) = 1) // ожидаем отпускания
WAITMS(50)
END_CYC
WAITMS(50)
END_IF
// другие обрабатываемые клавиши
// #ESC - пропуск команды (отмена ожидания)
IF(ISKEYDOWN(#ESC) = 1)
$command = 100
HINTPOPUP("отмена")
WHILE(ISKEYDOWN(#SPACE) = 1) // ожидаем отпускания
WAITMS(50)
END_CYC
END_IF
WAITMS(50)
END_CYC
END_SUB
//==============================================================================
wait_command("Текущий шаг - покупка. Нажмите пробел для действия [продолжения]")
Делал настройщик - задание начальных данных пользователем для последующей работы скрипта. Там у всех были разные начальные условия и делать суперуниверсальный определятор автоматом грозило увеличением кода в несколько раз, а времени обработки... ещё больше.