Автокликер Clickermann :: Форум

Основной раздел => Использование => Topic started by: TNT on July 04, 2018, 11:47:32 PM

Title: Ручной запуск пошагового выполнения скрипта
Post by: TNT on July 04, 2018, 11:47:32 PM
Допустим есть скрипт, который должен выполнять последовательно различные действия. Запуск каждого следующего действия подтверждается пользователем.
Как красивее реализовать интерактив с пользователем для запуска следующего шага?
Все функции не работают если не присваивать возвращаемое значение переменной. Приходится заводить лишнюю переменную, перфекционист внутри меня негодует. )
Мое приложение работает поверх всех окон, поэтому появляющиеся диалоговые окна иногда бывают не видны.
Варианты с нажатием клавиш тоже не очень устраивают поскольку хочется как-то отображать текущий шаг (название или хотя бы номер).

Есть какие-то еще варианты, которые были бы лишены если не всех, то хотя бы части перечисленных недостатков?
Title: Re: Ручной запуск пошагового выполнения скрипта
Post by: Vint on July 05, 2018, 12:04:33 PM
  • Держать цикл, который обрабатывает нажатия клавиш и "слушать" нужную юклавишу, которая запускает следующий шаг, на мой взгляд слишком избыточно и громоздко для такой простой задачи
Варианты с нажатием клавиш тоже не очень устраивают поскольку хочется как-то отображать текущий шаг (название или хотя бы номер).

Почему цикл ожидания нажатия слишком избыточен? Мы ведь всё равно ждём.
Я использовал как раз ожидание нажатия клавиш/кнопок мыши с оповещением шага в трее по 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("Текущий шаг - покупка. Нажмите пробел для действия [продолжения]")

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