Список открытых окон • Выбор окна • Принудительный единый размер (например, 1280×720 / 1920×1080) • Идеально для демонстраций и screen sharing
Зачем • Функции • Как работает • Старт • Сборка и релиз • Локализация • Ограничения и заметки • Вклад • Releases
- 🇨🇳 Китайский —
README.zh-CN.md - 🇬🇧 Английский —
README.md - 🇫🇷 Французский —
README.fr-FR.md - 🇩🇪 Немецкий —
README.de-DE.md - 🇯🇵 Японский —
README.ja-JP.md - 🇰🇷 Корейский —
README.ko-KR.md - 🇵🇹 Португальский —
README.pt-PT.md - 🇷🇺 Русский (этот файл)
- 🇪🇸 Испанский —
README.es-ES.md - 🇹🇷 Турецкий —
README.tr-TR.md
Хотите улучшить переводы? PR приветствуются. См. Локализация.
WindowResizer — лёгкая утилита для Windows (WPF / .NET), которая:
- Показывает список всех открытых видимых окон
- Позволяет выбрать окно
- Позволяет применить целевой размер (ширина × высота) с помощью популярных пресетов (720p / 1080p / 1440p и т. д.) или пользовательского размера
Особенно полезно, если вы:
- часто презентуете
- делаете шаринг экрана/окна
- записываете демо/уроки
- стримите или преподаёте онлайн
…потому что единый размер окна делает картинку чище:
- окно проще красиво вписать в OBS/Meet/Teams/Zoom
- компоновка “слайды + приложение” остаётся стабильной
- области захвата не нужно постоянно перенастраивать
Важно: WindowResizer меняет размер окна, а не разрешение монитора.
Если вы часто шарите экран/окна, вы уже знаете эти боли:
- одно и то же окно приложения получается чуть разного размера на разных машинах
- область захвата в OBS “плывёт”, когда окно двигают или меняют размер
- элементы интерфейса выглядят крупнее/мельче в зависимости от размера окна и DPI
- “просто потянуть окно мышкой” никогда не получается одинаково и отнимает время перед каждой демкой
Проект создан, чтобы сделать процесс быстрым и воспроизводимым:
- выбрать окно
- выбрать размер
- готово
- Список открытых окон (заголовок + процесс + handle)
- Поиск/фильтр по заголовку / процессу / handle
- Выбор окна и принудительное применение целевого размера
- Быстрые пресеты (популярные “презентационные” размеры)
- Полный список распространённых размеров
- Добавление пользовательских размеров
- Удаление пользовательских размеров
- Пользовательские размеры сохраняются локально (персистентно)
- Современный тёмный интерфейс с кастомной title bar (в стиле Windows 11)
- Единый, быстрый для выбора и действия макет
- Список окон на всю ширину, выровнен и прокручивается
- Иконка приложения для профессионального вида в панели задач
- Встроенные языковые пакеты (XAML ResourceDictionaries)
- Смена языка на лету (перезапуск не нужен)
- Поддержка RTL (арабский) через переключение FlowDirection
- Нет телеметрии
- Нет аналитики
- Нет сетевых запросов
- Приложение использует только стандартные Win32 API для перечисления и изменения размера окон
Внутри WindowResizer использует стандартные API Windows:
EnumWindows— перечисление окон верхнего уровняIsWindowVisible,GetWindowText— фильтрация и получение заголовковGetWindowThreadProcessId— привязка окон к имени процессаGetWindowRect— чтение текущего размера окнаSetWindowPos— применение новой ширины/высоты (опционально сохраняя позицию)ShowWindow(SW_RESTORE)— восстановление, если окно было свёрнуто, перед изменением размера
Приложение (best-effort) DPI-aware, чтобы размеры были более предсказуемыми на системах со scaling.
- Windows 10/11
- .NET SDK (рекомендуется: .NET 8 SDK)
- Visual Studio 2022 (опционально, но удобно) или сборка через CLI
dotnet
dotnet restore
dotnet rundotnet clean
dotnet build -c ReleaseВывод:
.\bin\Release\net8.0-windows\
Создаёт чистую папку для распространения.
dotnet publish -c ReleaseВывод:
.\bin\Release\net8.0-windows\publish\
dotnet publish -c Release -r win-x64 --self-contained trueВывод:
.\bin\Release\net8.0-windows\win-x64\publish\
dotnet publish -c Release -r win-x64 --self-contained true `
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=trueWindowResizer хранит простые локальные настройки (например, язык и пользовательские размеры) в профиле пользователя (AppData).
Ничего никуда не отправляется.
- Некоторые окна нельзя изменить по размеру (они могут блокировать или игнорировать
SetWindowPos) - UWP-приложения, игры и специальные окна могут вести себя иначе
- “Разрешение” здесь — это размер окна (ширина × высота), а не разрешение монитора
- DPI scaling влияет на воспринимаемый размер; приложение старается быть DPI-aware, но поведение может отличаться между приложениями
Инструменты, которые взаимодействуют с другими окнами, должны быть прозрачными.
Open source означает:
- любой может проверить, что делает приложение
- нет скрытой телеметрии или неожиданного поведения
- сообщество может улучшать и поддерживать проект в долгую
Проект намеренно небольшой, понятный и легко форкается — чтобы оставаться полезным тем, кому важна стабильная размерность окна в профессиональном процессе.
Подробности см. в файле LICENSE.
