🪟 Как отобразить окно, полностью вышедшее за границы дисплея
Такая проблема возникла у моей коллеги. Кнопка приложения есть на панели задач, а при наведении курсора отображается эскиз окна. Но при клике на них окно не появляется на виду. Девушка самостоятельно догадалась, что окно находится за границами экрана 🙏 Для начала она попробовала лежащие на поверхности решения.
👌 Простой случай
Есть два с половиной основных пути:
🔹 Снэп. Если зажать клавишу Win и нажимать стрелки, например, ← или →, окно должно прилепиться к левому или правому краю дисплея.
🔹 Перемещение из меню заголовка окна. Последовательное нажатие Alt+Spacebar - ↓ (стрелка вниз) - Enter активирует перемещение окна. Дальше двигать стрелками или нажать стрелку и двигать мышь, пока окно не появится перед глазами.
🔹 Пункт "Расположить окна каскадом" (Cascade Windows) в контекстном меню панели задач. Способ предложил в чате Александр Рыжов после публикации поста. Замечу, что в Windows 11 это уже выпилили.
Это все не помогло, потому что у коллеги был...
🏋️ Тяжелый случай
Проблема возникала с подключением к ВМ Hyper-V в режиме расширенного сеанса. Окно исчезало из виду после нажатия кнопки [ ] в панели подключения к ВМ, см. картинку↓ В этом случае фокус остается внутри окна ВМ! Поэтому все сочетания клавиш отрабатывают в виртуальной ОС нежели применяются к окну подключения к ней 👈 То есть приемы из простого случая тут не срабатывали.
Ситуация дополнительно усложнялась тем, что ВМ крутилась на хосте, подключение к которому тоже осуществлялось по RDP - удаленка! 😎 Я подкинул еще пару простых танцев под бубен - отключение внешнего монитора от ноутбука и запрет расширенного сеанса в настройках Hyper-V. Они не решили проблему, но второе хотя бы давало возможность приступить к работе, пусть и лишь на одном дисплее.
👉 Для решения проблемы мы подвинули окно с помощью #PowerShell! В топе Google легко нашлась тема на SuperUser с удобной функцией Set-Window.
Коллега сохранила скрипт с именем Set-Window.ps1 в папке Downloads и выполнила:
cd $env:userprofile\downloads
. .\Set-Window.ps1
Set-Window -ProcessName vmconnect -PassThru
На выходе было примерено так:
Id : 26220
ProcessName : vmconnect
Size : 1782,1012
TopLeft : 1914,1
BottomRight : 3296,883
Здесь TopLeft : 1914,1 означало, что окно сдвинуто на 1914 пикселей от левого края дисплея. При разрешении 1920х1080, окно почти полностью находилось за правым краем. Справа торчали лишь 6 пикселей, которые коллега не замечала.
Меняем позицию окна:
Set-Window -ProcessName vmconnect -x 100 -y 100
И оно выходит на видное место ✌️