Windows 10: สลับ deskop เสมือนขณะอยู่ในเดสก์ท็อประยะไกล


28

ฉันมีเดสก์ท็อปเสมือน 3 ตัวใน Windows 10
บนเดสก์ท็อปตัวใดตัวหนึ่งฉันเรียกใช้ mstsc fullscreen

หากต้องการสลับเดสก์ท็อปฉันสามารถใช้ windows + ctrl + ซ้ายหรือขวา
แต่เมื่อฉันอยู่ใน mstsc แบบเต็มหน้าจอปุ่มนี้ถูกจับโดย mstsc และการสลับไม่ทำงาน
มีวิธีในการเปลี่ยนพฤติกรรมนี้หรือไม่?


ฉันต้องการคำตอบเกี่ยวกับเรื่องนี้ด้วย!
แอนโทนี

1
การขึ้นลงเพราะจะดีมาก มันจะเป็นการดีถ้าเลือกชุดคีย์ของ Windows ที่ใช้กับ RDP หรือคอมพิวเตอร์
MikeMurko

คำตอบ:


32

ฉันกำลังมองหาวิธีแก้ไขปัญหานี้และพบเพียงหนึ่ง!

CTRL+ ALT+ HOMEให้ความสำคัญกับคีย์บอร์ดกลับไปยังโฮสต์เมื่ออยู่ใน Remote Desktop
จากนั้นคุณสามารถทำWIN+ CTRL+ LEFTหรือRIGHTเพื่อสลับระหว่างเดสก์ท็อปเสมือนจริง
ไม่เหมาะ แต่ฉันอาจมีปุ่มช็อตอัตโนมัติจัดการกับทางลัดทั้งสองนี้


1
นั่นคือ f *** ที่ยอดเยี่ยม !! ฉันกำลังมองหาบางอย่างเช่นนี้ชั่วครู่และสิ่งที่ดีที่สุดที่ฉันพบคือ Ctrl + alt + break (หยุดชั่วคราว) ซึ่งปิดโหมดเต็มหน้าจอ - มันอึดอัดมาก! ฉันจะให้รางวัลแก่คุณถ้าเป็นเช่นนี้stackoverflowแต่ฉันไม่สามารถทำได้ที่นี่ ขอบคุณ +1!
คิริลคิรอฟ

รักมากพาฉันไปด้วย !!
Fedaykin

7

ปรากฎว่าในไคลเอนต์เดสก์ท็อประยะไกลคุณควรเลือก "เฉพาะคอมพิวเตอร์เครื่องนี้" เมื่อใช้การรวมคีย์ของ Windows

ทรัพยากรท้องถิ่นเดสก์ท็อประยะไกล


4
ใช้งานได้ แต่ตอนนี้ฉันไม่สามารถใช้ ALT + TAB
r03

1
ฉันยังมีปัญหาเดียวกัน ฉันหวังว่าจะมีวิธีที่จะทำให้มันเพิกเฉยเพียงแค่ชนะ + ctrl + left / right
Ege Özcan

1
@ EgeÖzcanมี (เรียงลำดับ)! ดูคำตอบนี้
ลุ

4

ก่อนอื่นฉันต้องการให้ปุ่ม Windows ทำงานบนคอมพิวเตอร์ระยะไกล ( Alt-Tabเช่น) ดังนั้นฉันจึงมี "เมื่อใช้งานแบบเต็มหน้าจอ" สำหรับการตั้งค่า "ใช้ปุ่มกด Windows ร่วมกัน"

จากนั้นเนื่องจาก combinaisons สำคัญน้อยมากที่สามารถพาคุณออกจากเดสก์ท็อประยะไกลเมื่อมันเป็นแบบเต็มหน้าจอคุณต้องใช้CTRL-ALT-HOMEซึ่งจะนำแถบการเชื่อมต่อ แต่ยังให้การควบคุมกลับไปยังเครื่องคอมพิวเตอร์

ดังนั้นผมจึงเขียนนี้AutoHotKeyสคริปต์: switchVirtualDesktopWithRD.ahk มันขึ้นอยู่กับสคริปต์นี้อย่างสมบูรณ์ดังนั้นฉันจึงไม่มีเครดิต ฉันก็มีการปรับเปลี่ยนมันสำหรับความต้องการของฉัน คุณสามารถปรับให้เข้ากับคุณ ...

ในกรณีของฉันฉันมีเดสก์ท็อปเสมือนสองตัวเท่านั้นอันแรกคือเดสก์ท็อปหลักและที่สองคือที่ที่ฉันเรียกใช้ไคลเอนต์เดสก์ท็อประยะไกลแบบเต็มหน้าจอ

สคริปต์ทำอะไรเมื่อฉันกดCTRL-ALT-HOME:

  • ถ้าฉันอยู่บนเดสก์ท็อปเสมือนที่สองหนึ่งที่ฉันเรียกใช้ไคลเอนต์เดสก์ท็อประยะไกลเต็มหน้าจอนั้นแสดงแถบการเชื่อมต่อครั้งแรก จากนั้นฉันกดHOMEปุ่มอีกครั้ง (พร้อมCTRLและALTยังกด) และฉันกลับไปที่เดสก์ท็อปหลักตัวแรก หากไม่มีเซสชันเต็มหน้าจอที่เกิดขึ้นบนเดสก์ท็อปที่สอง Combinaison แรกจะสลับไปที่เดสก์ท็อปแรกทันที

  • ถ้าฉันอยู่บนเดสก์ท็อปแรกมันจะเปลี่ยนเป็นอันที่สองทันที

กล่าวอีกนัยหนึ่งฉันมักใช้CTRL-ALT-HOMEเพื่อสลับระหว่างเดสก์ท็อป


ฉันชอบสิ่งนี้. ถ้าเราเรียกใช้สคริปต์ AHK บนคอมพิวเตอร์ระยะไกล (s) (และกำหนดให้เริ่มต้นเมื่อคุณเข้าสู่ระบบ) ผมสงสัยว่าถ้าเราสามารถแปลCTRL-WIN-LEFTไปCTRL-ALT-HOMEและเรียกสลับโฟกัสไปที่บาร์เชื่อมต่อ RDP จาก AHK ระยะไกล จากนั้นคุณเพียงแค่ต้องกดCTRL-WIN-LEFTสองครั้งเพื่อให้มันเปลี่ยนเดสก์ท็อป
ลุค

ฉันทำให้มันทำงานได้ แต่ด้วยสคริปต์ที่รันเฉพาะบนเครื่องโลคอล - ไม่จำเป็นต้อง ahk บนรีโมท: D
Luke

3

สร้างคำตอบของ electrotypeฉันมีสคริปต์ AHK ที่จะเปิดใช้งานCtrl+ Win+ LeftและCtrl+ Win+ Rightฮอตคีย์เพื่อสลับเดสก์ท็อปบนคอมพิวเตอร์ท้องถิ่นจากภายในเซสชัน RDP เต็มหน้าจอโดยไม่ต้องเสียสละคีย์อื่น ๆ ภายในเซสชัน RDP - เช่นAlt+ Tabและคล้ายกันทั้งหมด ทำงานได้ตามปกติภายในเซสชัน RDP

เนื่องจากเราต้องการให้ปุ่มทางลัดปกติทำงานบนคอมพิวเตอร์ระยะไกลคุณต้องมี "เมื่อใช้งานเต็มหน้าจอ" สำหรับการตั้งค่า "ใช้คีย์ Windows ร่วมกัน" เมื่อเริ่มเซสชัน RDP

จริง ๆ แล้วฉันใช้สคริปต์ของฉันกับสคริปต์อื่นที่ฉันพบในฟอรัม AHK

มันทำอะไร:

  • เรียกใช้สคริปต์บนเครื่องท้องถิ่นของคุณ (ไม่ใช่บนเดสก์ท็อประยะไกล) ฉันวางของฉันลงไปC:\users\<user>\documents\AutoHotkey.ahkดังนั้นมันจะทำงานเมื่อฉันเริ่ม ahk โดยไม่มีข้อโต้แย้ง
  • หากคุณอยู่ในเซสชัน RDP และกดCtrl+ Win+ ( Leftหรือright) สคริปต์จะส่งCtrl+ Alt+ ก่อนHomeเพื่อโฟกัสแถบชื่อ RDP จากนั้นส่งคำสั่งผสมคีย์เดสก์ท็อปสลับไปที่จริงสลับเดสก์ท็อป

หมายเหตุ:มันมีข้อผิดพลาดเล็กน้อยเมื่อใช้เดสก์ท็อประยะไกลเสมือนตั้งแต่สองตัวขึ้นไป (เช่นเดสก์ท็อปเสมือนหนึ่งตัวเดสก์ท็อปเสมือนสองตัวที่มีหน้าต่าง RDP เต็มหน้าจอ) แต่ตอนนี้ฉันไม่มีเวลาทำงานอีกต่อไป . ปัญหาคือเมื่อคุณสลับจากเดสก์ท็อประยะไกลเสมือนหนึ่งไปยังอีกเดสก์ท็อปคุณต้องยกเลิกการผูกและเชื่อมโยงฮอตคีย์ใหม่และมีปัญหาในการตรวจพบสิ่งนี้ (แม้ว่าจะไม่ควร - แถบชื่อ RDP มีคลาสหน้าต่างที่แตกต่างกัน ไม่รับสิ่งนี้เสมอ)

สคริปต์ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.