Windows 10: passa da un desktop virtuale all'altro nel desktop remoto a schermo intero


28

Ho 3 desktop virtuali in Windows 10.
Su uno di quei desktop eseguo mstsc a schermo intero.

Per cambiare desktop posso usare windows + ctrl + sinistra o destra.
Ma quando sono in un mstsc a schermo intero, questa chiave viene catturata da mstsc e la commutazione non funziona.
C'è un modo per cambiare questo comportamento?


Ho bisogno di una risposta anche su questo!
Antony

1
Voto, perché questo sarebbe fantastico. Sarebbe bello scegliere quali combinazioni di tasti di Windows si applicano a RDP o al computer
MikeMurko,

Risposte:


32

Stavo cercando una soluzione a questo problema e ne ho appena trovato uno!

CTRL+ ALT+ HOMErestituisce lo stato attivo della tastiera all'host quando si trova in Desktop remoto.
Quindi puoi fare WIN+ CTRL+ LEFTo RIGHTpassare da un desktop virtuale all'altro.
Non è l'ideale, ma probabilmente avrò un accordo con i tasti autohot con queste 2 scorciatoie.


1
È così fottutamente geniale !! Stavo cercando qualcosa del genere da un po 'e il migliore che ho trovato è stato Ctrl + alt + break (pausa), che chiude la modalità a schermo intero - è molto scomodo! Ti darei generosità se fosse così stackoverflow, ma non posso farlo qui. Grazie +1!
Kiril Kirov,

Ti amo così tanto, prendi i miei uppoints !!
Fedaykin,

7

Si scopre che nel client desktop remoto, è necessario selezionare "Solo questo computer" quando si tratta di applicare la combinazione di tasti di Windows.

Risorse locali del desktop remoto


4
Funziona, ma ora non posso usare ALT + TAB
r03

1
Ho anche lo stesso problema. Vorrei che ci fosse un modo per ignorarlo, basta vincere + ctrl + sinistra / destra
Ege Özcan,

1
@ EgeÖzcan c'è (una specie di)! Vedi questa risposta
Luca,

4

Innanzitutto, volevo che i tasti Windows funzionassero sul computer remoto ( Alt-Tabad esempio), quindi ho "Solo quando si utilizza lo schermo intero" per l'impostazione "Applica combinazioni di tasti Windows".

Quindi, poiché pochissime combinazioni di tasti sono in grado di farti uscire dal desktop remoto quando è a schermo intero, devi usare CTRL-ALT-HOME, che porta la barra di connessione, ma restituisce anche il controllo al computer locale.

Così ho scritto questo autohotkey script: switchVirtualDesktopWithRD.ahk . È completamente basato su questo script , quindi non mi merito. L'ho semplicemente modificato per le mie esigenze . Puoi aggiustarlo al tuo ...

Nel mio caso, ho solo due desktop virtuali: il primo è quello principale e il secondo è dove eseguo un client desktop remoto a schermo intero.

Cosa fa lo script quando premo CTRL-ALT-HOME:

  • Se mi trovo sul secondo desktop virtuale, quello su cui eseguo un client desktop remoto a schermo intero, quello mostra prima la barra di connessione. Quindi premo di HOMEnuovo il tasto (con CTRLe ALTancora premuto) e torno al primo desktop principale. Se sul secondo desktop non è in corso alcuna sessione a schermo intero, il primo combinaison passa immediatamente al primo desktop.

  • Se sono sul primo desktop, passa immediatamente al secondo.

In altre parole, uso sempre CTRL-ALT-HOMEper passare da un desktop all'altro.


Mi piace questo. Se eseguiamo uno script ahk sui computer remoti (e li impostiamo per l'avvio quando effettui l'accesso), mi chiedo se potremmo tradurre un CTRL-WIN-LEFTto CTRL-ALT-HOMEe attivare l'interruttore di attivazione sulla barra di connessione RDP dal ahk remoto. Quindi devi solo premere CTRL-WIN-LEFTdue volte per farlo cambiare desktop.
Luca,

Ho funzionato, ma con uno script in esecuzione solo sul computer locale - non è necessario per ahk sul telecomando: D
Luca

3

Costruendo la risposta dell'elettrotipo, ho uno script AHK che consentirà ai tasti di scelta rapida Ctrl+ Win+ Lefte Ctrl+ Win+ Rightdi cambiare desktop sul computer locale, da una sessione RDP a schermo intero, senza sacrificare altre chiavi all'interno della sessione RDP - vale a dire Alt+ Tabe simili tutti ancora funziona normalmente durante la sessione del PSR.

Poiché vogliamo che il normale tasto di scelta rapida funzioni sul computer remoto, all'avvio della sessione RDP è necessario avere "Solo quando si utilizza lo schermo intero" per l'impostazione "Applica combinazioni di tasti Windows".

In realtà ho basato il mio script su un altro script che ho trovato sui forum AHK.

Cosa fa:

  • Esegui lo script sul tuo computer locale (non sul desktop remoto). Ho incollato il mio in C:\users\<user>\documents\AutoHotkey.ahkmodo che corra quando inizio ahk senza argomenti.
  • Se ci si trova all'interno di una sessione RDP e si preme Ctrl+ Win+ ( Lefto right) lo script invia prima Ctrl+ Alt+ Homeper focalizzare la barra del titolo RDP, quindi invia la combinazione di tasti del desktop del commutatore per cambiare effettivamente il desktop.

Nota: diventa un po 'buggy quando si usano due o più desktop virtuali-remoti (ad esempio un desktop virtuale locale, due desktop virtuali con una finestra RDP a schermo intero su ciascuno) ma non ho più tempo di lavorarci su adesso . Il problema è quando si passa da un desktop virtuale-remoto a un altro, è necessario separare e ricollegare il tasto di scelta rapida e ha problemi a rilevarlo (anche se non dovrebbe - la barra del titolo RDP ha una classe di finestre diversa ma non lo fa ' t prenderlo sempre).

Ahk script:

;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

A volte sembra che non funzioni - trovo che devo rilasciare e premere nuovamente i Ctrl+Wintasti a volte quando vado da un desktop locale a un telecomando o viceversa. Prova che se non funziona, o aumenta SLEEP_VAL nella parte superiore dello script per aumentare il ritardo tra l'invio Ctrl+Alt+HomeeCtrl+Win+Left
Luca

3

Se hai un touchpad, puoi provare il gesto con quattro dita.

Dal supporto Microsoft: gesti del touchpad per Windows 10

Cambia desktop virtuale: posiziona quattro dita sul touchpad e scorri verso destra o sinistra.

Sto lavorando con due desktop virtuali in Windows 10. Su uno di quei desktop accedo a Win 7 tramite Desktop remoto in modalità schermo intero.

Posso passare da un desktop virtuale all'altro con questo singolo gesto. Per me funziona.


-1

Ho risolto il problema con la necessità di premere e rilasciare i tasti di scelta rapida modificando lo script in modo da legare i tasti di scelta rapida durante l'esecuzione e non separarli mai.


Si prega di chiarire e aggiungere un po 'più di contesto a questa risposta per comunicare esattamente ciò che si sta suggerendo. Sai, considera di aggiungere qualche riferimento a questa risposta a supporto di ciò che affermi. Altrimenti, leggi "Perché ho bisogno di 50 reputazione per commentare" per assicurarti di capire come puoi iniziare a commentare.
Pimp Juice IT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.