Windows 10: Перемикайте віртуальний дескоп під час віддаленого робочого столу з повноекранним екраном


28

У мене є 3 віртуальних настільних комп’ютера в Windows 10.
На одному з таких робочих столів я запускаю mstsc повноекранний екран.

Для перемикання робочого столу я можу використовувати windows + ctrl + ліворуч або праворуч.
Але коли я перебуваю на повноекранному mstsc, ця клавіша фіксується mstsc і перемикання не працює.
Чи є спосіб змінити таку поведінку?


Мені потрібна відповідь і на це!
Антоній

1
Оновлення, бо це було б чудово. Було б непогано вибрати, які комбінації клавіш Windows застосовуються до RDP або комп'ютера
MikeMurko

Відповіді:


32

Я шукав рішення цієї проблеми і просто знайшов її!

CTRL+ ALT+ HOMEдає фокус на клавіатурі назад для розміщення, коли він знаходиться на віддаленому робочому столі.
Потім ви можете зробити WIN+ CTRL+ LEFTабо RIGHTпереключитися між віртуальними робочими стільницями.
Не ідеально, але я, мабуть, матиму справу з автоматичною клавішею з цими двома ярликами.


1
Це так f *** блискуче !! Я деякий час шукав щось подібне, і найкраще, що я знайшов, це Ctrl + alt + break (пауза), який закриває режим повноекранного режиму - це дуже незручно! Я б давав вам нагороду, якби це було stackoverflow, але я не можу цього зробити тут. Дякую +1!
Кирило Кіров

Люблю так сильно, прийміть мої точки зору !!
Федайкін

7

Виявляється, у віддаленому настільному клієнті слід вибрати "Тільки цей комп'ютер", коли мова йде про застосування Windows Key Combination.

Локальні ресурси віддаленого робочого столу


4
Це працює, але тепер я не можу використовувати ALT + TAB
r03

1
У мене теж така ж проблема. Я хотів би, щоб був спосіб ігнорувати просто win + ctrl + зліва / справа
Ege Özcan

1
@ EgeÖzcan є (свого роду)! Дивіться цю відповідь
Лука

4

По-перше, я хотів, щоб клавіші Windows працювали на віддаленому комп’ютері ( Alt-Tabнаприклад), тому в налаштуваннях "Застосувати поєднання ключів Windows" у мене є "Тільки коли використовується повний екран".

Тоді, оскільки дуже мало ключових комбінацій здатні вивести вас з віддаленого робочого столу, коли він перебуває на повноекранному режимі, вам доведеться користуватися CTRL-ALT-HOME, що приносить панель підключення, а також повертає контроль на локальний комп'ютер.

Тому я написав цей AutoHotkey сценарій: switchVirtualDesktopWithRD.ahk . Це повністю засновано на цьому сценарії , тому я не беру на себе кредиту. Я просто модифікував це для моїх потреб . Ви можете налаштувати його на свої ...

У моєму випадку у мене є лише два віртуальних настільних комп’ютера: перший - основний, а другий - я запускаю повноекранний клієнт віддаленого робочого столу.

Що робить сценарій, коли натискаю CTRL-ALT-HOME:

  • Якщо я перебуваю на другому віртуальному робочому столі, на тому, де я запускаю повноекранний клієнт віддаленого робочого столу, який спочатку показує панель підключення. Потім я знову натискаю HOMEклавішу (з CTRLі ALTще натискаю) і повертаюся до першого, основного робочого столу. Якщо на другому робочому столі не відбувається повноекранний сеанс, перший поєднання негайно переходить на перший робочий стіл.

  • Якщо я на першому робочому столі, він переходить на другий негайно.

Іншими словами, я завжди використовую CTRL-ALT-HOMEдля перемикання між настільними.


Мені подобається це. Якщо ми запустимо скрипт ahk на віддалених комп’ютерах (і встановимо їх, щоб вони почалися під час входу в систему), мені цікаво, чи вдалося б нам перевести a CTRL-WIN-LEFTна CTRL-ALT-HOMEта запустити перемикач фокусу на панель з'єднання RDP з віддаленого ahk. Тоді вам потрібно просто натиснути CTRL-WIN-LEFTдвічі, щоб переключити його на робочий стіл.
Лука

У мене це працює, але зі сценарієм, який працює лише на локальній машині - немає потреби в ahk на пульті: D
Лука

3

Створюючи відповідь на електротип, у мене є сценарій AHK, який дозволить Ctrl+Win + Leftта Ctrl+ Win+ Rightгарячі клавіші перемикати настільні комп’ютери на локальному комп’ютері, в межах повноекранного сеансу RDP, не приносячи шкоди жодним іншим клавішам в межах сеансу RDP - тобто Alt+ Tabта подібних усіх досі працювати як нормально протягом сеансу RDP.

Оскільки ми хочемо, щоб звичайна клавіша швидкого доступу працювала на віддаленому комп'ютері, під час запуску сеансу RDP ви повинні мати параметр "Тільки при використанні повного екрану" для параметра "Застосувати комбінації клавіш Windows".

Я фактично базував свій сценарій на іншому сценарії, який я знайшов на форумах AHK.

Що це робить:

  • Запустіть сценарій на локальній машині (а не на віддаленому робочому столі). Я вставив мою, C:\users\<user>\documents\AutoHotkey.ahkщоб вона запускалася, коли я починаю ах без аргументів.
  • Якщо ви знаходитесь у сеансі RDP і натискаєте Ctrl+ Win+ ( Leftабо right), сценарій спочатку надсилає Ctrl+ Alt+ Homeдля фокусування заголовка рядка RDP, а потім надсилає комбіновану клавішу перемикача на робочому столі, щоб фактично переключити робочий стіл.

Примітка. При використанні двох або більше віртуальних настільних настільних комп'ютерів стає дещо помилковим (наприклад, один локальний віртуальний робочий стіл, два віртуальних робочих стільниці з вікном RDP на повноекранному екрані на кожному), але я не маю часу працювати над цим більше зараз . Проблема полягає в тому, що ви переходите з одного віртуального віддаленого робочого столу на інший, вам потрібно від’єднати та повторно зв’язати гарячу клавішу, і у неї виникають проблеми з виявленням цього (хоча це не повинно - рядок заголовка RDP має інший клас вікон, але він не робить ' t завжди підбирайте це).

Сценарій 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

Іноді здається, що це не працює - я вважаю, що мені потрібно відпустити та повторно натискати Ctrl+Winклавіші, коли я переходжу з локального робочого столу на віддалений або навпаки. Спробуйте, якщо це не працює, або збільште SLEEP_VAL вгорі сценарію, щоб збільшити затримку між відправленням Ctrl+Alt+HomeтаCtrl+Win+Left
Лука

3

Якщо у вас є тачпад, ви можете спробувати жест з чотирма пальцями.

Від підтримки Microsoft - жести тачпада для Windows 10

Переключення віртуальних робочих столів: розмістіть чотири пальці на тачпаді та проведіть пальцем праворуч чи ліворуч.

Я працюю з двома віртуальними настільними комп'ютерами в Windows 10. На одному з таких робочих столів я отримую доступ до програми Win 7 через віддалений робочий стіл у повноекранному режимі.

Я можу перемикатися між двома віртуальними робочими стільницями за допомогою цього єдиного жесту. Це працює для мене.


-1

Я вирішив проблему з необхідністю натиснути та відпустити гарячі клавіші, змінивши сценарій, щоб він зв’язував гарячі клавіші під час запуску і ніколи не відв'язував їх.


Будь ласка, уточніть та додайте трохи більше контексту до цієї відповіді, щоб передати те, що саме ви пропонуєте. Ви знаєте, розгляньте можливість додавання посилань на цю відповідь, що підтверджує те, що ви заявляєте. В іншому випадку прочитайте "Чому мені потрібно коментувати 50 репутацій", щоб зрозуміти, як можна починати коментувати.
Pimp Juice IT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.