Пак функций переписанных на чистом luajit с существенным расширением функционала.
Планируется к дальнейшему расширению и включению в пилот по умолчанию. Можно счтиать бета версией. Крайне желательно получить фидбеки по функционалу, ошибкам и т.д.
По поводу мышки и клавиатуры. Для работы с неактивным окном рекомендуется post. Для работы с активным окном input.
Для использования выпонить:
Код
require"lua_system\\init"
Внимание! Все функции вызываются, как часть модулей! Т.е.:
Код
sys.wait()
proc.exec()
mouse.send.left()
И т.д.
Вызовы просто wait(), exec(), send.left(), left() - не допустимы! В данном случае будут вызваны функции стандартного пилота(если они существуют) либо будет краш с ошибкой из-за попытки вызова nil/обращния к индексу функции, а не массива и т.д.
Краткий список функций. Подробнее в readme.txt
Системные. Массив sys.
Код
    define            - безопасно объявить через cdef
    geterr            - получить последнюю ошибку
    indexof           - получить индекс элемента в массиве
    inpairs_sorted    - итератор аналогичный in pairs(), но в афаитном порядке
    ispilot           - яляется ли среда пилотом
    lg                - вывести содержимое в лог (в т.ч. таблицы)
    random_g          - случайное число с распределением по гауссу
    registryread      - прочитать ключ реестра
    utf16_to_ascii    - преобразовать UTF-16 в ASCII
    utf16_to_file     - записать UTF-16 в файл
    utf8_to_ascii     - преобразовать UTF-8 в ASCII
    utf8_to_utf16     - преобразовать UTF-8 в UTF-16
Процессы. Массив proc.
Код
    cd                - получить/установить текущую директорию
    getenvironment    - получить текущие переменные окружения
    exec              - запустить исполняемый файл
    execandwait       - запустить исполняемый файл и ждать выполнения
    execpipe          - запустить исполняемый файл и открыть пайпы
    exepath           - путь к исполняемому файлу
    setaffinity       - назначить ядра процессу
    setpriority       - установить приоритет процеса
    terminate         - уничтожить окно
Окна. Массив wnd.
Код
    findwindow        - найти окно
    getcontroltext    - получить текст контрола (кнопки)
    getfocus          - получить хэндл окна с фокусом клавиатуры
    getforeground     - получить активное окно
    getwindow         - получить окно относительно другого
    getwindowclass    - получить класс окна
    getwindowtext     - получить имя окна
    isvisible         - является ли окно невидимым
    postmessage       - отправить post сообщение окну
    sendmessage       - отправить send сообщение окну
    setcontroltext    - задать текст контрола (кнопки)
    setwindowtext     - задать имя окна
    showwindow        - показать/свернуть/развернуть/скрыть окно
    tohandle          - преобразовать число в хэндл
    windowfromcursor  - хэндл окна под курсором
    windowfrompoint   - хэндл окна в точке
    windowinfo        - получить информацию об окне
    windowpid         - получить PID окна
    windowpos         - получить позицию окна
    workwindow        - назначить рабочим окном
Мышь. Массив mouse.
Код
    mousepos          - получить текущие координаты мыши
    Методы кликов мышкой:
    post
    send
    event
    input
    Каждый из методов имеет следующие функции:
    move              - переместить мышь
    left              - кликнуть левой кнопкой
    left_double       - двойной клик левой кнопкой
    left_down         - нажать левую кнопку
    left_up           - отпустить левую кнопку
    right             - кликнуть правой кнопкой
    right_double      - двойной клик правой кнопкой
    right_down        - нажать правую кнопку
    right_up          - отпустить правую кнопку
    middle            - кликнуть средней кнопкой
    middle_double     - двойной клик средней кнопкой
    middle_down       - нажать среднюю кнопку
    middle_up         - отпустить средню кнопку
    m4                - кликнуть mouse4 кнопкой
    m4_double         - двойной клик mouse4 кнопкой
    m4_down           - нажать mouse4 кнопку
    m4_up             - отпустить mouse4 кнопку
    m5                - кликнуть mouse5 кнопкой
    m5_double         - двойной клик mouse5 кнопкой
    m5_down           - нажать mouse5 кнопку
    m5_up             - отпустить mouse5 кнопку
    wheel_down        - переместить колесо вниз
    wheel_up          - переместить колесо вверх
    wheel_left        - переместить колесо влево
    wheel_right       - переместить колесо вправо
    Методы имеют следующие опции:
    move_before_click - переместить мышь в точку клика
    move_after_click  - вернуть мышь после клика
    move_func         - функция перемещения мыши
    move_split        - разделять перемещение и клик (только input и event)
    timeout_inner     - задержка межу down и up
    timeout_outer     - задержка между up и down (не блокирующая)
    timeout_move      - задержка межу move и down
    mod_inner         - использовать флаг зажатия ctrl/shift вместо зажатия (только send и post)
    clock_up          - время последнего клика
Клавиатура. Массив kbd.
Код
    getlayout         - получить текущую раскладку клавиатуры
    getlayoutlist     - получить список доступных раскладок
    keystate          - получить состояние клавиши
    keystateasync     - получить состояние клавиши асинхронно.
    setlayout         - установить раскладку клавиатуры
    Методы отправки нажатий клавиатуры:
    send
    post
    event
    input
    Каждый из методов имеет следующие функции:
    key  - нажать и отпустить клавишу
    text - отправить текст
    down - нажать клавишу
    up   - отпустить клавишу
Время. Массив time.
Код
    clock_hp            - таймер с высоким разрешением
    clock_hp_int64      - таймер с высоким разрешением результат в int64
    clock_hp_resolution - количество тиков таймера с высоким разрешением в секунду
    clock_hp_result[0]  - результат выполнения clock_hp_int64()
    day                 - текущий день
    hour                - текущий час
    min                 - текущая минута
    month               - текущий месяц
    sec                 - текущая секунда
    sleep               - приостановить программу
    sleep_hp            - приостановить программу с высокой точностью
    sleep_random        - случайная пауза
    sleep_random_g      - случайная пауза с распределением по гауссу
    timer               - создать объект-таймер
    timestamp           - строковый таймштамп
    weekday             - текущий день недели
    year                - текущий год
 Сообщение отредактировал DarkMaster - 25.9.2025, 7:52