Закрепление приложений на нескольких рабочих столах в Windows 10

Закрепление приложений на нескольких рабочих столах в Windows 10

Одной из важных новых функций Windows является то, что теперь поддерживается несколько «виртуальных» рабочих столов, что позволяет вам организовывать коллекции окон вместе и разделять группы задач.

Это хорошо.

Вы можете перемещать окна между рабочими столами, нажав кнопку «Задачи», а затем щелкнув правой кнопкой мыши по окну приложения и выбрав «Переместить в...».

Это немного неуклюже и не очень хорошо.

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

С появлением виртуальных рабочих столов мне захотелось разместить браузер на одном виртуальном рабочем столе, а другое приложение на другом виртуальном рабочем столе и при этом иметь возможность смотреть видео при переключении рабочих столов, фактически отображая его наобавиртуальные рабочие столы. Использование стандартного приложения «Кино и ТВ» для воспроизведения видео и последующий переход на другой рабочий стол просто приводит к остановке видео без всякого предупреждения.

Это не хорошо.

Я надеялся, что либо у двух мониторов будет свой собственный виртуальный рабочий стол, либо будет какая-то опция «закрепить на всех рабочих столах», похожая на функцию «закрепленного окна», которую я видел во многих оконных менеджерах на базе Linux.

Есть ли способ этого добиться?

решение1

Эта функция теперь выпущена как одна из нескольких«Улучшения виртуального рабочего стола»вЮбилейное обновление Windows 10(Сборка 14316):

Теперь вы можете закрепить окно, чтобы оно было доступно на каждом рабочем столе. Для этого запустите Task View, затем щелкните правой кнопкой мыши по окну, которое вы хотите закрепить, и выберите «Показать это окно на всех рабочих столах». Попробуйте закрепить Skype или Groove Music, чтобы они всегда были у вас под рукой. А если у вас многомониторная настройка, вам может понравиться возможность иметь приложение электронной почты на втором мониторе, независимо от того, на какой рабочий стол вы переключаетесь.

введите описание изображения здесь

решение2

Да. [почти :)] Каждое окно с атрибутом WS_EX_TOOLWINDOW видно на всех рабочих столах.

Autohotkey в этом деле очень помогает. Пример скрипта - MyLoop.ahk:

WS_EX_TOOLWINDOW := 0x00000080
Петля
{
   WinSet, ExStyle, +%WS_EX_TOOLWINDOW%, ahk_class Chrome_WidgetWin_1
   Сон,100
}

Добавьте это в автозагрузку Windows, и окно Google Chrome будет «прилипать» ко всем виртуальным рабочим столам.

Или назначьте это как горячую клавишу: Пример скрипта - MyHotkeys.ahk:

WS_EX_TOOLWINDOW := 0x00000080
+MButton::WinSet, ExStyle, ^%WS_EX_TOOLWINDOW%, A
^MButton::WinSet, AlwaysOnTop, переключение, A

Поместите это в автозагрузку Windows, и вы сможете ПЕРЕКЛЮЧАТЬ «закрепленное» состояние для любого окна, нажав Shift+кнопку средней кнопки мыши на нем.

Клавиша добавления - Ctrl+клик средней кнопки переключает состояние "самый верхний". Очень полезно.

PS: современные приложения (например, калькулятор Windows 10) почему-то игнорируют это. Не знаю почему. Но для окна проводника Windows и большинства "старых приложений" - это работает нормально

решение3

Основываясь на решении @idj выше, вот как это сделать на языке C:

exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);

Связанный контент