Миграция с AutoHotkey — буфер обмена

Сопоставление API буфера обмена AutoHotkey со службами буфера обмена EyeAuras.

Миграция с AutoHotkey — буфер обмена

Эта страница пригодится при переносе A_Clipboard, ClipboardAll, ClipWait и OnClipboardChange.

Краткая сводка

Что нужно из AutoHotkeyAPI AHKЧем заменить в EyeAurasПервый вариант на C#ОценкаПримечания
Чтение или запись текста буфера обменаA_Clipboard, ClipWait, OnClipboardChangeсервис IClipboardManagerClipboard.SetText("hello");С базовым текстом всё нормально, но полного аналога поведения AHK пока нет.Есть нативный сервис буфера обмена, но в API-картах пока не описан отдельный wrapper для скриптов. Для ClipWait, ClipboardAll и событий изменения буфера обмена готового решения пока нет.

Текст в буфере обмена

AutoHotkey v2:

A_Clipboard := "hello"

C# Action в desktop-host с зарегистрированными нативными сервисами:

csharp
IClipboardManager Clipboard { get; init; }

Clipboard.SetText("hello");
Log.Info($"Прочитано: {Clipboard.GetText() ?? "<нет текста>"}");

Рекомендация: Для базового текста используйте сервис, зарегистрированный как IClipboardManager в нативном модуле. Полная миграция поведения AHK для буфера обмена пока не готова: для ClipWait, ClipboardAll и событий изменения нужны отдельные рецепты.

После вызова в буфере должен быть текст hello, в журнале — прочитанное значение. GetText() может вернуть null, если текста нет или буфер не удалось открыть; SetText() может бросить исключение, например при занятом буфере. Это синхронная операция, токена отмены в контракте нет.

Сервис общий, скрипт не должен его освобождать. В обычный класс передавайте IClipboardManager явно. Текстовый путь использует Win32 на вызывающем потоке; наличие UI scheduler в реализации не означает автоматический переход на него. Методы изображений и data object используют WinForms напрямую: для них отдельно обеспечьте подходящий STA/UI-контекст. Здесь показан только текст, без обещания переноса всех форматов, ClipWait или событий. См. AHK-009.

Ссылки для проверки