Windows-ввод — дополнение SDK 0.3
Разрешение пакета input (только api 0.3) и разрешённый пользователем PID.
CLI: --allow-process PID --allow-input. В менеджере выберите PID и разрешите
доступ к выбранному процессу: объявленный input включается при Load script.
Отдельного переключателя Control active window нет.
Чтение памяти по-прежнему требует process_read; input его не предоставляет.
Без разрешённого PID input выключен. Согласие на PID сбрасывается при его смене
или выборе другого пакета; снятие доступа выключает input. Разрешение заморожено на время сеанса.
bool input::enabled();
bool input::active();
bool input::key_down(uint virtualKey);
bool input::move_mouse(int dx, int dy);
bool input::click_left();
string input::last_error();
enabled безопасен без разрешения. Остальные вызовы требуют manifest input
и отдельного согласия; отсутствие согласия — script exception.
active проверяет живой target handle и PID foreground-окна. key_down принимает
Windows VK 1–254 и возвращает false, если выбранное окно не активно. Состояния
клавиш не записываются в журнал и не сохраняются. Глобальных hooks нет.
move_mouse и click_left доступны только в on_frame. Один move и один click
на кадр; dx/dy от −64 до 64, не менее 100 мс между кликами. Перед отправкой
повторно проверяется foreground PID. Клик — пара down/up в одном SendInput;
при частичной отправке предпринимается дополнительное отпускание. Удержание
кнопок/клавиш, ввод текста, shell и memory writes этим API не предоставлены.
Это обычный SendInput, не гарантированное получение события игрой. UIPI,
raw input и настройки приложения могут ограничивать работу. Проверка фокуса
и SendInput не атомарны: мгновенная смена foreground остаётся гонкой Windows.
Никакого доступа к защищённой памяти и обхода античита input не создаёт.
Проверки: tests/input.ps1 — no-grant, PID, foreground, phase, invalid VK,
undeclared grant и API version. Эти проверки не отправляют ввод в приложения
пользователя; приём мыши/кликов реальной игрой проверяется отдельно.