Здравствуйте, гость ( Вход | Регистрация )

> Pilot mod pack. Расширение функционала
DarkMaster
сообщение 26.7.2024, 18:34
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.766
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 30011
Пользователь №: 11.279



Пак функций переписанных на чистом 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


Прикрепленные файлы
Прикрепленный файл  lua_system_3.0.0b.zip ( 264,66 килобайт ) Кол-во скачиваний: 525
Прикрепленный файл  lua_system_3.0.1b.zip ( 271,92 килобайт ) Кол-во скачиваний: 1131
Прикрепленный файл  lua_system_3.0.2b.zip ( 306 килобайт ) Кол-во скачиваний: 1351
Прикрепленный файл  lua_system_3.0.3b.zip ( 315,64 килобайт ) Кол-во скачиваний: 489
Прикрепленный файл  lua_system_3.0.4b.zip ( 302,32 килобайт ) Кол-во скачиваний: 399


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 23.10.2025, 16:00
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.766
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 30011
Пользователь №: 11.279



Цитата

local arr = wnd.findwindow(nil, nil, "Notepad")

Вы задали класс окна. Вы точно именно это имели ввиду? Возможно вы хотели задать имя или путь? Так же обращаю ваше внимание на то, что "Notepad" подразумевает точное совпадение. Если там может что-то еще быть в виде хвоста - используйте "Notepad.*"


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
DarkMaster   Pilot mod pack. Расширение функционала   26.7.2024, 18:34
DarkMaster   reserved   30.7.2024, 11:51
DarkMaster   Господа, я понимаю время, все такое. Но кто-нибудь...   30.7.2024, 12:08
Madeus   В отпуске буду скоро потыкаю пока нет времени к со...   30.7.2024, 14:52
nykep   как это использовать, где выполнить require"l...   31.7.2024, 4:13
DarkMaster   Так а кто спросить то не дает?) Закидываем папку l...   31.7.2024, 9:48
nykep   Кажется я упускаю что-то важное, строка require...   1.8.2024, 0:43
DarkMaster   Вот поэтому мне и нужны другие люди. Потому, что т...   1.8.2024, 9:22
DarkMaster   3.0.1b Добавлены функции кликов в event и input...   1.8.2024, 9:33
nykep   wnd.workwindow(nil, "Блокнот") ошибку не...   1.8.2024, 15:36
DarkMaster   Это просто пример. по workwindow. В lua все ...   1.8.2024, 16:32
nykep   --lua require"lua_system\\init" ...   1.8.2024, 17:58
DarkMaster   по методам. все: send post event input должны раб...   1.8.2024, 20:12
kyja   клик с зажатым ctrl тестил на total commander...   1.8.2024, 23:46
DarkMaster   а вот и не всегда. если речь идет о post или send...   2.8.2024, 0:05
DarkMaster   Что-нибудь получилось?   3.8.2024, 22:59
nykep   у меня move выдает ошибку и с post и с input, клик...   4.8.2024, 15:22
DarkMaster   странно. А привязка точно верно сделана? Там что ...   4.8.2024, 16:50
DarkMaster   Залил 3.0.2b с фиксами. Там же из нового: sleep_r...   4.8.2024, 17:35
nykep   с такой привязкой window = wnd.tohandle(132756) вр...   5.8.2024, 17:55
DarkMaster   он найдет основное окно. там же нужно отправлять ...   5.8.2024, 18:31
nykep   Короче говоря window = wnd.tohandle(132756) привяз...   6.8.2024, 2:04
DarkMaster   первые два и не должны ибо там нужно привязывать ...   6.8.2024, 3:01
DarkMaster   Похоже нашел в чем проблема. Ты привязку к окну пр...   6.8.2024, 17:38
nykep   я всегда пытаюсь делать привязку к окну, я же гово...   6.8.2024, 18:39
DarkMaster   понял. А если через tohandle в то же родительское ...   6.8.2024, 18:46
nykep   ошибка происходит когда я не использую handle. Вот...   6.8.2024, 19:29
DarkMaster   Warning, can't apply a workwindow. 0 ERROR_SUC...   6.8.2024, 19:46
nykep   да, есть такая ошибка в логе. У меня оказывается и...   6.8.2024, 20:47
DarkMaster   есть такое. причем в текст если тыкает, то клик од...   6.8.2024, 21:01
DarkMaster   Поправил. Там еще мышь не возвращалась в input. Чу...   6.8.2024, 22:18
cocnen   C привязкой через путь или имя окна реальная пробл...   21.9.2024, 3:51
DarkMaster   Код можно? И фактическое имя окна. Очень сложно п...   21.9.2024, 9:16
фонарик   Здравствуйте. Подскажите пожалуйста, а такие функц...   24.9.2024, 1:18
DarkMaster   так я же выкладывал хинт. промпт не уверен. созда...   24.9.2024, 9:33
фонарик   оно cdata должно быть, а не number. log(tonumber(r...   24.9.2024, 23:16
DarkMaster   --lua require"lua_system\\init...   25.9.2024, 0:16
фонарик   Попробуйте открыть блокнот и выполнить мой код. Чт...   25.9.2024, 21:36
kanker   --lua require"lua_system\\init...   20.10.2025, 12:31
DarkMaster   я же обновил версию после твоего поста. краш при ...   25.9.2024, 22:11
фонарик   я же обновил версию после твоего поста. краш при о...   25.9.2024, 22:48
DarkMaster   log(tonumber(ffi.cast("int", (arr.handl...   25.9.2024, 23:07
фонарик   Так упасть не должно. Еще раз. Если во время хинта...   26.9.2024, 0:18
DarkMaster   В рамках данного расширения бессмысленно. Все фун...   26.9.2024, 1:00
фонарик   Попробуй вызвать hint.destroy() перед завершением ...   27.9.2024, 22:27
DarkMaster   hint.hide() hint.destroy() а так? У меня просто в...   27.9.2024, 22:36
фонарик   hint.hide() hint.destroy() а так? Может я что-то...   28.9.2024, 15:43
DarkMaster   Я сейчас очень загружен. Сделаю стенд, будут подро...   28.9.2024, 18:01
DarkMaster   3.0.3b mouse модуль добавлено сообщение о битом х...   19.10.2024, 19:32
Opener   [code]3.0.3b a runtime error. .\lua_system...   5.11.2024, 15:18
DarkMaster   ой. ща перевыложу. Кусок недописанный остался. пр...   5.11.2024, 16:01
DarkMaster   3.0.4b wnd модуль windowpos - выставлен флаг repa...   6.3.2025, 14:20
Levo222   Прикрепленные файлы Прикрепленный файл lua_syste...   13.9.2025, 10:21
DarkMaster   распаковать последнюю версию в папку lua_system ...   13.9.2025, 19:17
Levo222   распаковать последнюю версию в папку lua_system у...   13.9.2025, 20:18
DarkMaster   беспонятия. у меня нет кириллицы нигде.   13.9.2025, 22:29


Ответить в эту темуОткрыть новую тему
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 4.11.2025, 7:04
Designed by Nickostyle