Выражения сопоставления окон

Пользовательский интерфейс в 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 одним широким текстовым выражением.