Переход с AutoHotkey на EyeAuras
Материалы для переноса скриптов AutoHotkey в скриптинг, триггеры, действия и сервисы EyeAuras.
Переход с AutoHotkey на EyeAuras
Это основная страница по миграции скриптов AutoHotkey в EyeAuras. Тема AHK слишком большая для одного документа, поэтому подробные заметки по переходу вынесены в отдельные страницы по направлениям.
Используйте эту страницу вместе с AHK Gaps. Там собраны моменты, которые требуют дополнительной проверки, прежде чем их можно будет считать полноценными эквивалентами.
С чего начать перенос
Выберите одну операцию исходного скрипта: отправку текста, поиск окна или обработчик клавиши. Откройте соответствующий раздел ниже и выполните небольшой C# Action с явно полученными сервисами. Сначала проверьте наблюдаемый эффект, затем переносите состояние и длительный цикл работы.
Таблицы показывают маршруты, а не гарантируют полное совпадение семантики. В списке расхождений остаются режимы Send, правила потоков AHK, DPI, контролы и драйверные способы ввода. Указанные в нём ID — темы миграции, а не новые API.
Как читать это руководство
- В примерах AutoHotkey в первую очередь используются имена и синтаксис v2. Отличия v1, включая командный синтаксис и особенности
ErrorLevel, отмечаются как нюансы миграции. - Скрипты EyeAuras — это C#-скрипты. У файлов верхнего уровня есть доступ к host members, таким как
Sleep(...),AuraTree,VariablesиcancellationToken; сервисы обычно внедряются как свойства скрипта. - В примерах миграции отдавайте приоритет прямым script API и сервисам.
Actions,TriggersиOverlaysимеет смысл упоминать только тогда, когда пользователь собирает настраиваемое поведение в Aura Tree, либо когда компонент даёт существенную runtime-логику по домену, а не просто тонкую обёртку над API. - У каждого соответствия должна быть короткая оценка. Недостаточно написать просто «возможно» — в гайде должно быть понятно, когда подход EyeAuras чище, когда он просто приемлем, когда неудобен, а когда лучше оформить решение как helper или recipe.
Разделы
| Раздел | Для чего использовать | Текущее состояние |
|---|---|---|
| Hotkeys | Метки горячих клавиш, Hotkey, #HotIf, простые действия по хоткею | Есть первые примеры конверсии и ссылки на исходники. Нужна доработка для custom combo/prefix. |
| Keyboard And Mouse | Send, SendText, SendInput, GetKeyState, KeyWait, MouseMove, Click | Есть конверсии для прямого ввода, ожидания клавиши и кликов по координатам. Грамматика Send пока остаётся пробелом. |
| Windows | WinExist, WinActive, WinWait, WinActivate, ControlClick, ControlSend | Есть поиск и активация одного окна. Нужна полная таблица токенов WinTitle. |
| CV, Pixels, And Images | CoordMode, PixelGetColor, PixelSearch, ImageSearch | Есть конверсия PixelSearch. Нужны CoordMode и таблицы для чтения цвета одного пикселя. |
| Runtime, Timers, And State | Sleep, SetTimer, переменные, globals, shared state | Есть sleep и обычное состояние. Нужны recipes для таймеров и общих переменных. |
| Clipboard | A_Clipboard, ClipboardAll, ClipWait, события буфера обмена | Есть заготовка. Нужна проверка script DI и событий. |
| DLL And Native Interop | DllCall, CallbackCreate, Buffer, NumGet, NumPut, raw Win32 | Сначала прямые примеры P/Invoke; существующие API EyeAuras/PoeShared можно использовать как варианты переписывания. |
| AHK Gaps | Междоменные семантические различия и список того, что ещё надо проверить | Здесь ведётся учёт нерешённых моментов и кандидатов на helper-функции. |
Сводная матрица
| Что нужно в AutoHotkey | API AHK | Основной раздел | Путь в EyeAuras | Оценка |
|---|---|---|---|---|
| Запускать код по хоткею | Метки хоткеев вроде ^!s::, Hotkey, #HotIf | Hotkeys | [Keybind], IHotkeyTracker | Хорошо подходит для статических хоткеев; для динамических и контекстных нужно больше сопоставлений. |
| Отправлять ввод с клавиатуры или текст | Send, SendText, SendInput | Keyboard And Mouse | ISendInputScriptingApi | Хорошо подходит для явного ввода; слабое место — полная грамматика Send из AHK. |
| Читать состояние клавиш или мыши | GetKeyState, KeyWait | Keyboard And Mouse | ISendInputScriptingApi.IsKeyDown, IsMouseDown | GetKeyState выглядит нормально; для KeyWait нужен helper. |
| Двигать мышь и кликать | MouseMove, Click, MouseClick, MouseGetPos | Keyboard And Mouse | ISendInputScriptingApi | Хорошо, особенно с overloads по координатам. |
| Проверять и выбирать окна | WinExist, WinActive, WinWait, WinWaitActive | Windows | IWindowSelector.FindWindow(...), IWindowMatcher, window services | Хорошо для поиска одного окна; для семантики ожидания нужен отдельный паттерн. |
| Активировать окна | WinActivate | Windows | IWindowSelector.GetWindow(...), WindowHandleExtensions.Activate(...) | Хорошо работает как прямой script code после получения handle. |
| Спать или повторить позже | Sleep, SetTimer | Runtime, Timers, And State | Script Sleep(...), loops, services, observables | Sleep реализуется хорошо; SetTimer требует переработки подхода. |
| Искать пиксели или изображения | PixelGetColor, PixelSearch, ImageSearch, CoordMode | CV, Pixels, And Images | CV.ForScreen(), CV.ForWindow(...), ICvAccessor | Более явно, чем в AHK, но и тяжелее по структуре. |
| Читать или писать текст в буфер обмена | A_Clipboard, ClipWait, OnClipboardChange | Clipboard | IClipboardManager | Есть операция записи/чтения Unicode-текста; полное поведение буфера обмена пока слабое место. |
| Хранить состояние скрипта | Переменные, built-in variables, globals | Runtime, Timers, And State | Локальные переменные/поля/объекты C#; ScriptVariable<T> — только для shared state | Для обычного состояния лучше, чем в AHK; для общего состояния нужны понятные recipes. |
| Вызывать нативные DLL | DllCall, CallbackCreate, Buffer, NumGet, NumPut | DLL And Native Interop | Типизированные C#-обёртки P/Invoke; существующие API как варианты переписывания | Прямой эквивалент есть, но в C# нужны явные сигнатуры и понимание правил lifetime. |
Ссылки по EyeAuras
- Scripting Runtime — правила script host, правила для helper classes,
KeybindAttribute,ExecutionAnchorsиIVariablesScriptingApi. - Input, Hooks, Hotkeys — keybinds, hotkey triggers, input simulators и
ISendInputScriptingApi. - Window Handles —
IWindowHandle,IWindowSelector,IWindowListProvider, matching и activation. - OSD Selection — интерактивный выбор окон, областей, точек и цветов.
- Computer Vision / Images — capture,
ImageSearch,PixelSearch, OCR и обработка изображений. - ISendInputScriptingApi — вывод клавиатуры и мыши из скриптов.
- IComputerVisionExperimentalScriptingApi — CV accessors для экрана и окон.
- IVariablesScriptingApi — общие и persistent переменные скрипта.