Przypinaj aplikacje do wielu komputerów w systemie Windows 10

73

Jedną z wielkich nowych funkcji systemu Windows jest fakt, że wiele „wirtualnych” komputerów stacjonarnych jest teraz obsługiwanych natywnie, co pozwala organizować kolekcje okien razem i oddzielne grupy zadań.

To jest dobre.

Możesz przenosić okna między pulpitami, klikając przycisk „zadania”, a następnie klikając prawym przyciskiem myszy okno aplikacji i wybierając „Przenieś do ...”

To jest trochę niezgrabne i niezbyt dobre.

Mam dwa monitory i często lubię wyświetlać film na drugim monitorze, w przeglądarce internetowej lub odtwarzaczu multimedialnym, podczas gdy mam przeglądarkę i inne aplikacje na ekranie głównym. Robienie tego nie jest problemem w mojej obecnej konfiguracji, po prostu działa.

Wraz z pojawieniem się wirtualnych pulpitów chciałem umieścić przeglądarkę na jednym wirtualnym pulpicie, a inną aplikację na innym wirtualnym pulpicie i nadal móc oglądać wideo po zmianie pulpitu, skutecznie pokazując go na obu wirtualnych pulpitach. Użycie domyślnej aplikacji Film i TV do odtworzenia filmu, a następnie przejście na inny pulpit powoduje po prostu zatrzymanie filmu bez żadnego ostrzeżenia.

To nie jest dobre.

Miałem nadzieję, że albo dwa monitory będą miały własny wirtualny pulpit, albo będą to opcje „przypinania do wszystkich pulpitów” podobne do funkcji „lepkiego okna”, którą widziałem w wielu menedżerach okien opartych na Linuksie.

Czy jest jakiś sposób na osiągnięcie tego?

Mokubai
źródło
Nie wiem o tym, chociaż mam doświadczenie z wieloma systemami wykorzystującymi obszary robocze (różne systemy Linux), żaden z nich nigdy nie miał tej funkcji, co w pewnym sensie łamie koncepcję posiadania wielu miejsc pracy.
Daniel
2
@Daniel Rozmawiałem z kilkoma osobami, które nazywają to „lepkimi oknami”
Mokubai
2
@Psychogeek Mam na myśli zarówno wielomonitorowe, jak i wirtualne komputery stacjonarne, strona wielomonitorowa jest w porządku. Mogę otworzyć film, umieścić go na drugim ekranie i wszystko jest w porządku, ale jeśli przełączę się na inny pulpit za pomocą nowej funkcji wirtualnego pulpitu, okno wideo zniknie i (w niektórych przypadkach) całkowicie przestanie się odtwarzać. Chciałbym mieć sposób na przypięcie okna do wielu wirtualnych pulpitów.
Mokubai
Rozumiem, wiele programów do wirtualnych pulpitów miało tę funkcję, w której można przypisywać programy do konkretnych wirtualnych, wciąż istnieje wiele małych problemów z błędami, w zależności od metody.
Psycogeek,
6
Myślę, że dość standardowym przykładem tej potrzeby jest prawie każda aplikacja komunikacyjna. Chciałbym używać oddzielnych wirtualnych pulpitów dla różnych projektów, nad którymi pracuję, ale chciałbym przypinać / trzymać klientów IM i e-maile. Wydaje mi się, że jest to dość standardowy przypadek użycia, w którym chciałbym oddzielić moje obszary robocze bez konieczności zamiany pulpitu, aby otrzymywać powiadomienia e-mailem!
Colin K

Odpowiedzi:

100

Ta funkcja została teraz wydana jako jedna z kilku „Poprawek pulpitu wirtualnego” w rocznicowej aktualizacji systemu Windows 10 (kompilacja 14316):

Możesz teraz przypiąć okno, aby było dostępne na każdym pulpicie. Aby to zrobić, uruchom Widok zadań, a następnie kliknij prawym przyciskiem myszy okno, które chcesz przypiąć, i wybierz „Pokaż to okno na wszystkich komputerach”. Spróbuj przypiąć Skype lub Groove Music, aby zawsze były na wyciągnięcie ręki. A jeśli masz konfigurację wielomonitorową, możesz cieszyć się możliwością posiadania aplikacji e-mail na drugim monitorze, bez względu na to, na który komputer się przełączysz.

wprowadź opis zdjęcia tutaj

Daniel Ballinger
źródło
Artykuł mówi o byciu dostępnym na Windows Ring Insider Fast Ring. Czy masz jakąś oś czasu, kiedy spadnie ona dla zwykłych użytkowników?
Mokubai
1
@Mokubai O ile wiem, nie ma jeszcze oficjalnej publicznej daty premiery. Po prostu niejasne „To lato [półkuli północnej]”.
Daniel Ballinger
ale jak to odpiąć?
Mikey
@ Mikey Czy odznaczenie opcji „Pokaż X na wszystkich komputerach” nie działa dla Ciebie?
Daniel Ballinger
Działa na oknach, które mogę kliknąć, problem polega na tym, że nie są one widoczne w widoku zadań. Oczywiście było to widoczne wcześniej, kiedy go włączyłem, ale teraz, kiedy wchodzę do widoku zadań, okno znika ... Więc jaki jest inny sposób, aby go wyłączyć? Czy istnieje klucz reg? Obecnie mam ten problem z telegramem, który moim zdaniem jest QT (aplikacja wieloplatformowa). Żeby było jasne, okno jest widoczne na wszystkich komputerach, ale znika, gdy wchodzę do widoku zadania
Mikey
18

Tak. [prawie :)] Każde okno z atrybutem WS_EX_TOOLWINDOW jest widoczne na wszystkich komputerach.

Autohotkey jest w tym bardzo pomocny. Przykładowy skrypt - MyLoop.ahk:

WS_EX_TOOLWINDOW: = 0x00000080
Pętla
{
   WinSet, ExStyle, +% WS_EX_TOOLWINDOW%, ahk_class Chrome_WidgetWin_1
   Sen, 100
}

Umieść to w starcie systemu Windows, a okno przeglądarki Google Chrome „przyklei się” do wszystkich wirtualnych komputerów stacjonarnych.

Lub przypisz to jako skrót: Przykładowy skrypt - MyHotkeys.ahk:

WS_EX_TOOLWINDOW: = 0x00000080
+ MButton :: WinSet, ExStyle, ^% WS_EX_TOOLWINDOW%, A
^ MButton :: WinSet, AlwaysOnTop, przełącz, A

Umieść to w starcie systemu Windows i możesz PRZEŁĄCZYĆ stan „lepkiego” dowolnego okna, naciskając Shift + środkowy przycisk na nim.

Klawisz dodawania - Ctrl + środkowe kliknięcie przełącza stan „najwyższy”. Bardzo przydatne.

PS: nowoczesne aplikacje (np. Kalkulator Windows 10) w jakiś sposób to ignorują. Nie wiem dlaczego. Ale w przypadku okna Eksploratora Windows i większości „starych aplikacji” - wszystko działa dobrze

IDj
źródło
Próbowałem skryptów dla środkowego kliknięcia + skrótów klawiszowych. Ctrl + środkowy przycisk działał dobrze. Jednak nie mogłem zmusić całego wirtualnego pulpitu do pracy. Żadne z okien, które wypróbowałem, zostało przeniesione.
Daniel Ballinger
Pracował dla mnie. W moim przypadku zawsze chciałem ustawić go tak, aby pokazywał, więc zmieniłem ^znak karetki ( ) ze znakiem plus ( +).
ohaal
1

W oparciu o powyższe rozwiązanie @idj, jak to zrobić w C:

exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);
Noitidart
źródło