Windows 10: Przełącz wirtualny deskop na pełnym ekranie zdalnego pulpitu

28

Mam 3 wirtualne pulpity w systemie Windows 10.
Na jednym z tych komputerów uruchamiam pełny ekran mstsc.

Aby przełączyć pulpit, mogę użyć Windows + Ctrl + lewo lub prawo.
Ale kiedy jestem w trybie pełnoekranowym mstsc, ten klucz jest przechwytywany przez mstsc i przełączanie nie działa.
Czy istnieje sposób na zmianę tego zachowania?

r03
źródło
Potrzebuję też odpowiedzi na to!
Antony
1
Upvoting, bo byłoby świetnie. Byłoby miło wybrać, które kombinacje klawiszy Windows mają zastosowanie do RDP lub komputera
MikeMurko

Odpowiedzi:

32

Szukałem rozwiązania tego problemu i właśnie znalazłem!

CTRL+ ALT+ HOMEprzywraca fokus klawiatury do hosta w trybie pulpitu zdalnego.
Następnie możesz zrobić WIN+ CTRL+ LEFTlub RIGHTprzełączać się między wirtualnymi pulpitami.
Nie jest to idealne rozwiązanie, ale prawdopodobnie będę miał do czynienia z tymi dwoma skrótami.

BignOOse
źródło
1
To jest cholernie genialne !! Szukałem czegoś takiego przez jakiś czas i najlepsze, co znalazłem, to Ctrl + Alt + Break (pauza), który zamyka tryb pełnoekranowy - to bardzo niewygodne! Dałbym ci nagrodę, gdyby tak było stackoverflow, ale nie mogę tego tutaj zrobić. Dzięki +1!
Kiril Kirov
Tak bardzo cię kocham, weź moje uwagi !!
Fedaykin
7

Okazuje się, że w kliencie pulpitu zdalnego należy wybrać „Tylko ten komputer”, jeśli chodzi o stosowanie kombinacji klawiszy Windows.

Lokalne zasoby pulpitu zdalnego

Antony
źródło
4
To działa, ale teraz nie mogę używać ALT + TAB
r03
1
Ja również mam ten sam problem. Chciałbym, aby istniał sposób, aby ignorować to po prostu wygrać + ctrl + lewo / prawo
Ege Özcan
1
@ EgeÖzcan jest (tak jakby)! Zobacz tę odpowiedź
Łukasz
4

Po pierwsze, chciałem, aby klucze Windows działały na komputerze zdalnym ( Alt-Tabna przykład), więc mam ustawienie „Tylko podczas korzystania z pełnego ekranu” dla ustawienia „Zastosuj kombinacje klawiszy Windows”.

Następnie, ponieważ bardzo niewiele kluczowych kombinacji jest w stanie wyciągnąć cię ze zdalnego pulpitu, gdy jest on na pełnym ekranie, musisz użyć CTRL-ALT-HOME, co powoduje pasek połączenia, ale także daje kontrolę lokalnemu komputerowi.

Więc napisałem ten AutoHotkey skrypt: switchVirtualDesktopWithRD.ahk . Jest całkowicie oparty na tym skrypcie , więc nie biorę uznania. Po prostu zmodyfikowałem go do moich potrzeb . Możesz to przyznać swoje ...

W moim przypadku mam tylko dwa wirtualne pulpity: pierwszy to główny, a drugi to miejsce, w którym uruchamiam pełnoekranowego klienta zdalnego pulpitu.

Co robi skrypt po naciśnięciu CTRL-ALT-HOME:

  • Jeśli korzystam z drugiego wirtualnego pulpitu, tego, na którym uruchamiam pełnoekranowego klienta zdalnego pulpitu, to najpierw pokazuje pasek połączenia. Następnie HOMEponownie naciskam klawisz (z CTRLi ALTnadal wciśnięty) i wracam do pierwszego, głównego pulpitu. Jeśli na drugim pulpicie nie ma sesji pełnoekranowej, pierwsza kombinacja natychmiast przełącza się na pierwszy pulpit.

  • Jeśli jestem na pierwszym pulpicie, natychmiast przełącza się na drugi.

Innymi słowy, zawsze używam CTRL-ALT-HOMEdo przełączania między komputerami stacjonarnymi.

elektrotyp
źródło
Lubię to. Jeśli uruchamiamy skrypt AHK na komputerze zdalnym (S) (i ustawić je do uruchamiania podczas logowania), zastanawiam się, czy moglibyśmy przetłumaczyć CTRL-WIN-LEFTdo CTRL-ALT-HOMEi wyzwalać przełącznik ostrości na pasku połączenia RDP ze zdalnego AHK. Następnie wystarczy nacisnąć CTRL-WIN-LEFTdwukrotnie, aby zmienić pulpit.
Luke
Mam go działającego, ale ze skryptem działającym tylko na lokalnej maszynie - nie potrzeba ahk na pilocie: D
Luke
3

Opierając się na odpowiedzi typu elektrycznego, mam skrypt AHK, który pozwoli Ctrl+ Win+ Lefti Ctrl+ Win+ Rightskrótom klawiszowym przełączać pulpity na komputerze lokalnym, z sesji pełnoekranowej RDP, bez poświęcania jakichkolwiek innych kluczy w sesji RDP - tj. Alt+ TabI podobne wszystkie nadal pracować normalnie w sesji RDP.

Ponieważ chcemy, aby zwykły klawisz skrótu działał na komputerze zdalnym, musisz mieć opcję „Tylko podczas korzystania z pełnego ekranu” dla ustawienia „Zastosuj kombinacje klawiszy systemu Windows” podczas rozpoczynania sesji RDP.

Właściwie oparłem swój skrypt na innym skrypcie znalezionym na forach AHK.

Co to robi:

  • Uruchom skrypt na komputerze lokalnym (nie na zdalnym pulpicie). Wkleiłem mój, C:\users\<user>\documents\AutoHotkey.ahkwięc działa, kiedy uruchamiam ahk bez żadnych argumentów.
  • Jeśli jesteś w sesji RDP i naciśniesz Ctrl+ Win+ ( Leftlub right), skrypt najpierw wysyła Ctrl+ Alt+, Homeaby skoncentrować pasek tytułu RDP, a następnie wysyła kombinację klawiszy przełączania pulpitu w celu przełączenia pulpitu.

Uwaga: podczas korzystania z dwóch lub więcej wirtualnych zdalnych pulpitów (np. Jeden lokalny pulpit wirtualny, dwa wirtualne pulpity z pełnoekranowym oknem RDP na każdym z nich) robi się trochę wadliwie, ale nie mam teraz czasu, aby nad tym popracować . Problem polega na tym, że kiedy przełączasz się z jednego wirtualnego pulpitu zdalnego na inny, musisz cofnąć powiązanie i ponowne powiązanie klawisza skrótu i ​​ma on problem z wykryciem tego (choć nie powinno - pasek tytułu RDP ma inną klasę okna, ale nie ma zawsze to odbieraj).

Skrypt Ahk:

;setTimer, windowwatch, 500
#persistent
#usehook
SLEEP_VAL := 500
DEBUG := false
keys_bound := false

while true {
    ;Debug("Waiting")
    sleep, SLEEP_VAL
    keys_bound := WaitBind()
}

WaitBind() {
    WinWaitActive, ahk_class TscShellContainerClass
    Debug("bind")
    hotkey LWin & Left, ctrl_win_left_key, on
    hotkey LWin & Right, ctrl_win_right_key, on
    return true
}

WaitUnbind() {
    WinWaitNotActive, ahk_class TscShellContainerClass
    Debug("unbind")
    hotkey LWin & Left, ctrl_win_left_key, off
    hotkey LWin & Right, ctrl_win_right_key, off
    return false
}

Debug(msg) {
    global DEBUG
    if (DEBUG) {
        tooltip %msg%
        settimer, TooltipClear, 2000
    }
}
return

z_key:
    ; simple script for testing - change the z to 'he'
    send, he
    Debug("done z")
return

j_key:
    ; testing if we can activate the RDP title bar
    send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
    Debug("done j")
Return

ctrl_win_left_key:
    ; we are intercepting all Win+Left combinations so we have to do Win+Shift+Left and Win+Left manually to preserve them inside the RDP
    GetKeyState, shiftState, Shift
    GetKeyState, ctrlState, Ctrl
    if (shiftState = "D") {
        ; by default in windows Ctrl+Shift+Win+Left will act like Shift+Win+Left - shift takes precedence
        Debug("done shift win left")
        send {Shift down}{LWin down}{Left}{LWin up}{Shift up}
    } else if (ctrlState = "D") {
        Debug("done ctrl win left")
        ; the magic happens here
        send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
        keys_bound := WaitUnbind()
        ;Sleep, SLEEP_VAL ;give the OS time to focus on the title bar
        send {Ctrl down}{LWin down}{Left}{LWin up}{Ctrl up}
    } else {
        Debug("done win left")
        send {LWin down}{Left}{LWin up}
    }
Return

ctrl_win_right_key:
    ; we are intercepting all Win+Right combinations so we have to do Win+Shift+Right and Win+Right manually to preserve them inside the RDP
    GetKeyState, shiftState, Shift
    GetKeyState, ctrlState, Ctrl
    if (shiftState = "D") {
        ; by default in windows Ctrl+Shift+Win+Left will act like Shift+Win+Left - shift takes precedence
        Debug("done shift win right")
        send {Shift down}{LWin down}{Right}{LWin up}{Shift up}
    } else if (ctrlState = "D") {
        Debug("done ctrl win right")
        ; the magic happens here
        send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
        keys_bound := WaitUnbind()
        ;Sleep, SLEEP_VAL ;give the OS time to focus on the title bar
        send {Ctrl down}{LWin down}{Right}{LWin up}{Ctrl up}
    } else {
        Debug("done win right")
        send {LWin down}{Right}{LWin up}
    }
Return


TooltipClear:
    ; just a routine to turn off tooltip after x milliseconds
    tooltip
    settimer, TooltipClear, off
Return

windowwatch:
    ifwinactive ahk_class TscShellContainerClass
    {
      Debug("bind")
      hotkey LWin & Left, ctrl_win_left_key, on
      hotkey LWin & Right, ctrl_win_right_key, on
    }
    else
    {
     Debug("unbind")
     hotkey LWin & Left, ctrl_win_left_key, off
     hotkey LWin & Right, ctrl_win_right_key, off
    }
Return
Luke
źródło
Czasami wydaje się, że to nie działa - Ctrl+Winczasami muszę zwolnić i ponownie nacisnąć klawisze, gdy przechodzę z lokalnego pulpitu do pilota lub odwrotnie. Spróbuj, jeśli to nie działa, lub zwiększ wartość parametru SLEEP_VAL u góry skryptu, aby zwiększyć opóźnienie między wysłaniem Ctrl+Alt+HomeaCtrl+Win+Left
Luke
3

Jeśli masz touchpad, możesz wypróbować gest czterema palcami.

Z pomocy technicznej Microsoft - gesty touchpada w systemie Windows 10

Przełączanie wirtualnych pulpitów: Umieść cztery palce na touchpadzie i przeciągnij w prawo lub w lewo.

Pracuję z dwoma wirtualnymi pulpitami w systemie Windows 10. Na jednym z tych komputerów uzyskuję dostęp do systemu Windows 7 za pośrednictwem pulpitu zdalnego w trybie pełnoekranowym.

Jednym gestem mogę przełączać się między dwoma wirtualnymi pulpitami. Mi to pasuje.

smperez
źródło
-1

Rozwiązałem problem z naciskaniem i zwalnianiem skrótów klawiszowych, zmieniając skrypt, tak aby po uruchomieniu uruchamiał skróty i nigdy ich nie przywiązywał.

Greg
źródło
Wyjaśnij i dodaj nieco więcej kontekstu do tej odpowiedzi, aby dokładnie przekazać to, co sugerujesz. Wiesz, zastanów się nad dodaniem do tej odpowiedzi odniesienia do tego, co podałeś. W przeciwnym razie przeczytaj artykuł „Dlaczego potrzebuję 50 reputacji, aby komentować”, aby upewnić się, że możesz zacząć komentować.
Pimp Juice IT