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


73

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

Это хорошо.

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

Это немного неуклюже и не совсем так хорошо.

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

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

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

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

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


Не то, что я знаю об этом, хотя у меня есть опыт работы с несколькими системами, использующими рабочие пространства (разные системы Linux), ни одна из которых никогда не имела такой возможности, что нарушает концепцию наличия нескольких рабочих мест.
Даниэль

2
@Daniel Я говорил с несколькими людьми, и они называют это «липкими окнами»
Мокубай

2
@Psychogeek Я имею в виду как мультимониторные, так и виртуальные рабочие столы, с несколькими мониторами все в порядке. Я могу открыть видео, поместить его на второй экран, и все в порядке, но если я переключаюсь на другой рабочий стол, используя новую функцию виртуального рабочего стола, окно видео исчезает и (в некоторых случаях) перестает воспроизводиться полностью. Я хотел бы иметь некоторый способ прикрепить окно к нескольким виртуальным рабочим столам.
Мокубай

Понятно, что многие программы для виртуальных рабочих столов имели такую ​​функцию, при которой вы могли бы назначать программы определенным виртуальным машинам, в зависимости от метода все еще существовало множество мелких проблем с ошибками.
Psycogeek

6
Я думаю, что довольно стандартный пример для этой потребности - почти любое коммуникационное приложение. Я хотел бы использовать отдельные виртуальные рабочие столы для разных проектов, над которыми я работаю, но я бы хотел прикрепить / прикрепить IM-клиентов и электронную почту. Мне кажется довольно стандартным вариантом использования, что я мог бы хотеть отделить мои рабочие пространства без необходимости подмены рабочего стола только для получения уведомлений по электронной почте!
Колин К

Ответы:


100

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

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

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


В посте рассказывается о том, чтобы быть доступным на Windows Insider Fast Ring. У вас есть какие-нибудь сроки, когда это станет обычным пользователем?
Мокубай

1
@Mokubai Насколько я могу судить, дата публичного релиза еще не определена. Просто смутное «Это [Северное полушарие] лето».
Даниэль Баллинджер

но как вы его откручиваете?
Мики,

@Mikey Отключение опции «Показывать X на всех рабочих столах» не работает для вас?
Даниэль Баллинджер,

Работает на окнах, которые я могу нажать, проблема в том, что они не видны в представлении задач. Конечно, это было видно раньше, когда я включал его, но теперь, когда при входе в вид задач окно исчезает .. Так, как еще можно отключить его? Есть ли ключ рег? В настоящее время у меня есть проблема с телеграммой, которую я считаю QT (кроссплатформенное приложение). Просто чтобы быть ясным, окно видно на всех рабочих столах, но исчезает, когда я вхожу в представление задач
Мики

18

Ага. [почти :)] Каждое окно с атрибутом 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 Calculator) как-то игнорируют это. Не знаю почему. Но для окна Windows Explorer и большинства «старых приложений» - все работает нормально


Я попробовал скрипты для среднего клика + горячие клавиши. Ctrl + средняя кнопка работала хорошо. Однако я не мог заставить работать весь виртуальный рабочий стол. Ни одно из окон, на которых я пробовал переходить.
Даниэль Баллинджер

Работал на меня. В моем случае я всегда хотел, чтобы он показывался, поэтому поменял знак вставки ( ^) со знаком плюс ( +).
ohaal

1

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

exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.