Kapalı Bina Galvanoplastik cevabı ben sağlayacak bir AHK komut var Ctrl+ Win+ Leftve Ctrl+ Win+ Rightyani - şalter RDP oturumu içinde başka tuşlara ödün vermeden, tam ekran RDP oturumu içinden, yerel bilgisayarda masaüstü için kısayol Alt+ Tabhepsi hala ve benzeri RDP oturumunda normal olarak çalışın.
Düzenli kısayol tuşunun uzak bilgisayarda çalışmasını istediğimizden, RDP oturumunu başlatırken "Windows tuş kombinasyonlarını uygula" ayarı için "Yalnızca tam ekranı kullanırken" ayarına sahip olmalısınız.
Aslında senaryoyu AHK forumlarında bulduğum başka bir senaryoya dayandırdım .
Bu ne yapar:
- Komut dosyasını yerel makinenizde çalıştırın (uzak masaüstünde değil). Benimkine yapıştırdım,
C:\users\<user>\documents\AutoHotkey.ahk
bu yüzden ahk’a tartışmasız başladığım anlar.
- Bir RDP oturumu içindeyseniz ve Ctrl+ Win+ ( Leftveya right) düğmesine basarsanız , komut dosyası önce Ctrl+ Alt+ Home, RDP başlık çubuğunu odaklamak üzere gönderir, sonra da masaüstünü değiştirmek için masaüstü anahtar combo gönderir.
Not: İki veya daha fazla sanal-uzak masaüstü kullanırken (örn. Bir yerel sanal masaüstü, her birinde tam ekran bir RDP penceresi olan iki sanal masaüstü) kullanıldığında biraz sorun çıkarsa da, şu an üzerinde çalışmak için zamanım yok. . Sorun, bir sanal-uzak masaüstünden diğerine geçtiğinizde, kısayol tuşunu açmanız ve yeniden bağlamanız gerekir ve bunu tespit etmekte zorlanıyorsunuz (olmasa da - RDP başlık çubuğunun farklı bir pencere sınıfı var ama yok ' t her zaman bunu topla).
Ahk betiği:
;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