Windows 10: Ganti deskop virtual saat berada di desktop jarak jauh fullscreen

28

Saya memiliki 3 desktop virtual di Windows 10.
Di salah satu desktop tersebut saya menjalankan layar penuh mstsc.

Untuk beralih desktop saya bisa menggunakan windows + ctrl + kiri atau kanan.
Tetapi ketika saya berada di layar penuh mstsc kunci ini ditangkap oleh mstsc dan beralih tidak berfungsi.
Apakah ada cara untuk mengubah perilaku ini?

r03
sumber
Saya perlu jawaban untuk ini juga!
Antony
1
Upvoting, karena ini akan menjadi hebat. Akan lebih baik untuk memilih kombinasi tombol Windows mana yang berlaku untuk RDP atau komputer
MikeMurko

Jawaban:

32

Saya sedang mencari solusi untuk masalah ini dan baru saja menemukan satu!

CTRL+ ALT+ HOMEmengembalikan fokus keyboard ke host ketika di Remote Desktop.
Kemudian Anda dapat melakukan WIN+ CTRL+ LEFTatau RIGHTuntuk beralih di antara virtual desktop.
Tidak ideal, tetapi saya mungkin akan memiliki kesepakatan autohotkey dengan 2 pintasan ini.

BignOOse
sumber
1
Itu sangat brilian !! Saya sedang mencari sesuatu seperti ini untuk sementara dan yang terbaik yang saya temukan adalah Ctrl + alt + break (jeda), yang menutup mode layar penuh - sangat tidak nyaman! Aku akan memberimu hadiah jika ini stackoverflow, tapi aku tidak bisa melakukan ini di sini. Terima kasih +1!
Kiril Kirov
Sangat mencintaimu, ambil poinku !!
Fedaykin
7

Ternyata di klien desktop jarak jauh, Anda harus memilih "Hanya komputer ini" ketika menerapkan Windows Key Combination.

Sumber Daya Lokal Remote Desktop

Antony
sumber
4
Itu bekerja, tapi sekarang saya tidak bisa menggunakan ALT + TAB
r03
1
Saya juga punya masalah yang sama. Saya berharap ada cara untuk membuatnya diabaikan, hanya menang + ctrl + kiri / kanan
Ege Özcan
1
@ EgeÖzcan ada (semacam)! Lihat jawaban ini
Lukas
4

Pertama, saya ingin kunci Windows berfungsi pada komputer jarak jauh ( Alt-Tabmisalnya), jadi saya harus "Hanya ketika menggunakan layar penuh" untuk pengaturan "Terapkan kombinasi tombol Windows".

Kemudian, karena sangat sedikit kombinasi tombol yang dapat mengeluarkan Anda dari desktop jarak jauh saat layar penuh, Anda harus menggunakannya CTRL-ALT-HOME, yang membawa bilah koneksi, tetapi juga mengembalikan kontrol ke komputer lokal.

Jadi saya menulis skrip autohotkey ini : switchVirtualDesktopWithRD.ahk . Ini sepenuhnya didasarkan pada skrip ini , jadi saya tidak mengambil kredit. Saya hanya memodifikasinya untuk kebutuhan saya . Anda dapat menyesuaikannya dengan milik Anda ...

Dalam kasus saya, saya hanya memiliki dua desktop virtual: yang pertama adalah yang utama, dan yang kedua adalah tempat saya menjalankan klien desktop jarak jauh layar penuh.

Apa yang dilakukan skrip ketika saya menekan CTRL-ALT-HOME:

  • Jika saya berada di virtual desktop kedua, di mana saya menjalankan klien desktop jarak jauh layar penuh, yang pertama menunjukkan bilah koneksi. Saya kemudian menekan HOMEtombol lagi (dengan CTRLdan ALTmasih ditekan) dan saya kembali ke desktop utama pertama. Jika tidak ada sesi layar penuh yang terjadi di desktop kedua, kombinasi pertama segera beralih ke desktop pertama.

  • Jika saya berada di desktop pertama, ia langsung beralih ke yang kedua.

Dengan kata lain, saya selalu menggunakan CTRL-ALT-HOMEuntuk berpindah antar desktop.

elektrotipe
sumber
Saya suka ini. Jika kita menjalankan skrip ahk pada komputer jarak jauh (dan mengaturnya untuk memulai ketika Anda masuk), saya bertanya-tanya apakah kita bisa menerjemahkan CTRL-WIN-LEFTke CTRL-ALT-HOMEdan memicu saklar fokus ke bilah koneksi RDP dari ahk jarak jauh. Maka Anda hanya perlu menekan CTRL-WIN-LEFTdua kali untuk mengaktifkan desktop.
Luke
Saya membuatnya bekerja, tetapi dengan skrip yang berjalan hanya pada mesin lokal - tidak perlu untuk ahk pada remote: D
Luke
3

Membangun off jawaban electrotype ini saya memiliki script AHK yang akan memungkinkan Ctrl+ Win+ Leftdan Ctrl+ Win+ Righthotkeys untuk beralih desktop pada komputer lokal, dari dalam sesi RDP layar penuh, tanpa mengorbankan salah kunci lain dalam sesi RDP - yaitu Alt+ Tabdan mirip semua masih berfungsi seperti biasa dalam sesi RDP.

Karena kami ingin agar tombol pintasan biasa berfungsi di komputer jarak jauh, Anda harus memiliki "Hanya saat menggunakan layar penuh" untuk pengaturan "Terapkan kombinasi tombol Windows" saat memulai sesi RDP.

Saya sebenarnya mendasarkan skrip saya dari skrip lain yang saya temukan di forum AHK.

Apa fungsinya:

  • Jalankan skrip pada mesin lokal Anda (bukan pada desktop jarak jauh). Saya menempelkan milik saya ke dalam C:\users\<user>\documents\AutoHotkey.ahksehingga berjalan ketika saya mulai ahk tanpa argumen.
  • Jika Anda berada di dalam sesi RDP dan tekan Ctrl+ Win+ ( Leftatau right) skrip pertama-tama mengirim Ctrl+ Alt+ Homeuntuk memfokuskan bilah judul RDP kemudian mengirimkan kombo tombol sakelar desktop untuk benar-benar mengganti desktop.

Catatan: itu menjadi sedikit buggy ketika menggunakan dua atau lebih desktop virtual-remote (mis. Satu desktop virtual lokal, dua desktop virtual dengan jendela RDP layar penuh pada masing-masing) tetapi saya tidak punya waktu untuk mengerjakannya lagi sekarang. . Masalahnya adalah ketika Anda beralih dari satu desktop virtual-jauh ke yang lain, Anda harus melepaskan dan memutar kembali hot key dan mengalami kesulitan mendeteksi ini (meskipun seharusnya tidak - bilah judul RDP memiliki kelas jendela yang berbeda tetapi tidak t selalu mengambil ini).

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
Luke
sumber
Kadang-kadang rasanya tidak berfungsi - saya merasa saya harus melepaskan dan menekan kembali Ctrl+Wintombol kadang-kadang ketika saya pergi dari desktop lokal ke remote atau sebaliknya. Cobalah jika itu tidak berfungsi, atau tambah SLEEP_VAL di bagian atas skrip untuk meningkatkan penundaan antara pengiriman Ctrl+Alt+HomedanCtrl+Win+Left
Luke
3

Jika Anda memiliki touchpad, Anda dapat mencoba gerakan empat jari.

Dari Dukungan Microsoft - Gerakan bidang sentuh untuk Windows 10

Berpindah virtual desktop: Tempatkan empat jari pada touchpad dan geser ke kanan atau kiri.

Saya bekerja dengan dua desktop virtual di Windows 10. Pada salah satu desktop itu saya mengakses Win 7 melalui Remote Desktop dalam mode layar penuh.

Saya dapat beralih di antara dua desktop virtual dengan gerakan tunggal ini. Ini bekerja untuk saya.

smperez
sumber
-1

Saya menyelesaikan masalah dengan harus menekan dan melepaskan tombol pintas dengan mengubah skrip sehingga mengikat tombol pintas saat dijalankan dan tidak pernah melepaskan ikatannya.

Greg
sumber
Mohon klarifikasi dan tambahkan sedikit konteks pada jawaban ini untuk menyampaikan apa yang Anda sarankan dengan tepat. Anda tahu, pertimbangkan untuk menambahkan referensi ke jawaban ini untuk mendukung apa yang Anda sebutkan. Kalau tidak, baca "Mengapa saya perlu 50 reputasi untuk berkomentar" untuk memastikan Anda memahami bagaimana Anda dapat mulai berkomentar.
Pimp Juice,