Автокликер 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("Текущий шаг - покупка. Нажмите пробел для действия [продолжения]")
 Делал настройщик - задание начальных данных пользователем для последующей работы скрипта. Там у всех были разные начальные условия и делать суперуниверсальный определятор автоматом грозило увеличением кода в несколько раз, а времени обработки... ещё больше.