Перемещение окна с названием, которое соответствует шаблону в C#

Пример Установите размер и положение другого приложения в C# использует функцию API FindWindow, чтобы найти окно с данным заголовком. К сожалению, FindWindow находит только окно, если заголовок является точным совпадением. Если вы знаете только часть названия или если в заголовке есть дополнительные пробелы или другие символы, FindWindow не найдет его.

В этом примере перечислены окна рабочего стола и поиск одного с заголовком, который соответствует регулярному выражению. Следующий код показывает, как метод FindWindowTitleMatch запускает процесс.

Метод FindWindowTitleMatch сохраняет шаблон, который должен соответствовать переменной MatchPattern. Он также инициализирует значения MatchedHandle и MatchedTitle значениям по умолчанию, которые он вернет, если он не может найти соответствующее окно.

Затем метод вызывает метод EnumDesktopWindows, передавая ему метод FilterCallback как метод, который функция API должна вызывать для каждого из окон, которые он перечисляет.

После завершения EnumDesktopWindows программа копирует значения, содержащиеся в переменных MatchedHandle и MatchedTitle, в возвращаемые переменные метода.

В следующем коде показан метод FilterCallback, который вызывается функцией API EnumDesktopWindows.

Метод использует функцию API GetWindowText для получения заголовка текущего окна. Если окно видимо и заголовок не пуст, метод использует расширение строки Matches, чтобы определить, соответствует ли заголовок целевому шаблону. (Информацию о расширении строки Matches см. В Сделайте расширение строки, чтобы определить, соответствует ли строка регулярному выражению в C# .)

Если название соответствует, метод сохраняет свой дескриптор и заголовок в переменных MatchedHandle и MatchedTitle и возвращает false, чтобы сообщить EnumDesktopWindows, что нет необходимости продолжать перечисление окон. Если заголовок не соответствует, метод возвращает true, чтобы сообщить EnumDesktopWindows, что он еще не нашел совпадения и что он должен продолжить перечисление других окон.

После того, как он найдет соответствующее окно, основная программа использует метод SetWindowPlacement для восстановления окна, чтобы он не был сведен к минимуму или не был максимизирован. Затем он использует метод SetWindowPosition, чтобы переместить окно в нужную позицию.

Как в примере Установите другой размер и положение приложения в C# , будьте осторожны, когда вы перемещаете окна. Если вы переместите окно с экрана, вам нужно будет использовать эту программу или что-то подобное, чтобы вернуть ее.

Источник: http://csharphelper.com/blog/2016/12/move-a-window-with-a-title-that-matches-a-pattern-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *