Author Topic: Ручной запуск пошагового выполнения скрипта  (Read 2707 times)

0 Members and 1 Guest are viewing this topic.

TNT

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Допустим есть скрипт, который должен выполнять последовательно различные действия. Запуск каждого следующего действия подтверждается пользователем.
Как красивее реализовать интерактив с пользователем для запуска следующего шага?
  • DIALOGBOX - нельзя задать позицию, вылезает в центре экрана
  • INPUTBOX - сохраняет позицию, но обязательно нужно задавать время, идет некрасивый отсчет 9999 секунд
  • RADIOBOX - пожалуй лучший вариант, но все равно слишком громоздкое окно
Все функции не работают если не присваивать возвращаемое значение переменной. Приходится заводить лишнюю переменную, перфекционист внутри меня негодует. )
Мое приложение работает поверх всех окон, поэтому появляющиеся диалоговые окна иногда бывают не видны.
  • Держать цикл, который обрабатывает нажатия клавиш и "слушать" нужную юклавишу, которая запускает следующий шаг, на мой взгляд слишком избыточно и громоздко для такой простой задачи
  • Можно как-то управлять выполнением текущего скрипта и ставить его на паузу? Тогда можно было бы снимать с паузы стандартными хоткеями и запускать выполнение следующего шага.
Варианты с нажатием клавиш тоже не очень устраивают поскольку хочется как-то отображать текущий шаг (название или хотя бы номер).

Есть какие-то еще варианты, которые были бы лишены если не всех, то хотя бы части перечисленных недостатков?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
  • Держать цикл, который обрабатывает нажатия клавиш и "слушать" нужную юклавишу, которая запускает следующий шаг, на мой взгляд слишком избыточно и громоздко для такой простой задачи
Варианты с нажатием клавиш тоже не очень устраивают поскольку хочется как-то отображать текущий шаг (название или хотя бы номер).

Почему цикл ожидания нажатия слишком избыточен? Мы ведь всё равно ждём.
Я использовал как раз ожидание нажатия клавиш/кнопок мыши с оповещением шага в трее по HINTPOPUP. Ничего сложного в этом нет.

Code: (clickermann) [Select]
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("Текущий шаг - покупка. Нажмите пробел для действия [продолжения]")

Делал настройщик - задание начальных данных пользователем для последующей работы скрипта. Там у всех были разные начальные условия и делать суперуниверсальный определятор автоматом грозило увеличением кода в несколько раз, а времени обработки... ещё больше.


« Last Edit: July 05, 2018, 12:15:02 PM by Vint »