Выражения сопоставления окон
Пользовательский интерфейс в EyeAuras, позволяющий выбирать конкретные окна с помощью пользовательского выражения.
Выражения сопоставления окон
Выражения позволяют вам определить выражение для выбора конкретного окна(или окон) на основе различных критериев. Эти выражения поддерживаются во всех действиях/триггерах в EyeAuras и позволяют вам контролировать, куда отправлять ввод, какое окно должно быть активным, какое окно сделать скриншот/запись и т. д.

Компоненты
Этот контроль включает три компонента:
Выпадающий список выбора окон: Нажатие на небольшую иконку вызывает выпадающий список всех активных окон. Выбор окна из этого списка генерирует выражение сопоставления по дескриптору окна или заголовку.
Поле ввода выражения: Текстовое поле для ввода выражения сопоставления. Система анализирует это выражение, чтобы определить окно(а) для выбора.
Отображение выбранного окна: Эта область отображает выбранные окна на основе определенного выражения. При наведении на отображение появляется подсказка с подробной информацией об окне, помогающая уточнить выражение.
Составить выражение
Правила ниже проверены по EyeAuras 20fd3d4 и PoeEye 0e02c98.
Выражение сравнивается с путём процесса, именем процесса, заголовком окна
и аргументами запуска. Совпадение любого подходящего поля достаточно.
Это не только поиск по заголовку и не строгий ограничитель процесса.
| Запись в поле | Как работает |
|---|---|
notepad | Подстрока в пути, заголовке или аргументах; имя процесса сравнивается целиком |
"My document" или 'My document' | Полное совпадение поля |
/^My document/ | Регулярное выражение для пути, заголовка или аргументов |
0x5A или &H5A | Нативный дескриптор окна |
notepad #2 | Второе совпадение после сортировки результатов |
#1 | Первое окно из подходящего списка |
Обычный текст и точное совпадение не учитывают регистр:
StringMatcher использует OrdinalIgnoreCase. Регулярные выражения
выполняются с RegexOptions.IgnoreCase. Кавычки требуют полного совпадения,
но не меняют регистр и не ограничивают поиск одним полем.
Regex вводится как /pattern/, без внешних кавычек. Запись "/pattern/"
сначала распознаётся как точный текст и не является способом включить regex.
Индекс ставится после выражения, за закрывающей кавычкой: "My document" #2,
а не "My document #2". Дескриптор окна может измениться после его пересоздания.
Сочетать условия
В IWindowMatcher.FindMatches запись notepad && /report/ последовательно
сужает результат: сначала окна по notepad, затем из них — по /report/.
notepad || calc выбирает первую непустую альтернативу; это не объединение
обоих наборов. Разбор операторов последовательный, без обещания скобок и
обычного приоритета логических выражений C#. IsMatch одного окна принимает
простое выражение; сложную строку применяйте через FindMatches.
Список зависит от провайдера и фильтров selector. Индекс считается с единицы после сортировки по времени создания процесса, Z-order, длине/тексту заголовка и PID; он не является постоянным идентификатором документа.
Свойства вроде [type=toplevel] обрабатывает selector. Наличие [visible]
или [focus] в строке само по себе не включает соответствующую фильтрацию;
видимость задаётся свойством selector OnlyVisible.
Для скрипта: окна, независимый список и foreground.
Для строгого выбора процесса используйте явный фильтр ProcessName, а не
пытайтесь перевести ahk_exe одним широким текстовым выражением.