远程桌面:向远程 PC 发送 Ctrl-Alt-左箭头/Ctrl-Alt-右箭头

远程桌面:向远程 PC 发送 Ctrl-Alt-左箭头/Ctrl-Alt-右箭头

Ctrl我需要在我的计算机上的应用程序中使用- Alt-Left ArrowCtrl- Alt-组合键Right Arrow。当我使用远程桌面连接到该计算机时,远程桌面客户端 (mstsc.exe) 或 RDP 服务器实现会吞掉这些组合键。这些组合键似乎被保留给远程桌面,尽管它们似乎没有执行任何操作。

有没有办法(支持或不支持)来禁用此行为,以便将组合键发送到我的应用程序?

更新 2022-12-01:正如所指出的布拉格格里斯,这个问题已在版本中修复1.2.2924Windows 远程桌面客户端。

答案1

热键 Ctrl++AltLeft Arrow++ 被远程桌面客户端占用CtrlAlt它们Right Arrow 唯一的作用是将您切换回主机。

看起来这是某个从未完全编程和完成的预期功能,但没有办法关闭它。微软甚至没有在其官方文档中列出这些热键 远程桌面服务快捷键

解决方案 1:使用 Microsoft Store 版本

可以在 Microsoft Store 中找到另一个版本的 RDP,网址为 微软远程桌面

此版本没有此半实现功能,因此可以毫无问题地通过这些热键。这已在 Windows 10 版本 1903 上得到验证。

解决方案 2:翻译客户端和服务器上的热键

该解决方案将使用自动热键 安装在客户端和服务器上,以便:

  • 在客户端上,将上述热键转换为其他不会被 RDP 拦截的热键
  • 在服务器上,将这些键转换回上述热键。

例如,您可以在客户端上使用以下 AutoHotkey 脚本“rdp hotkeys_slave.ahk”将
Ctrl+ Alt+转换arrowAlt+ Win+ arrow

#SingleInstance Force
#IfWinActive, ahk_exe mstsc.exe
;Send Alt+Win+Left when user types Ctrl+Alt+Left
^!Left::
send !#{Left}
return

;Send Alt+Win+Right when user types Ctrl+Alt+Right
^!Right::
send !#{Right}
return

该脚本仅限于使用 mstsc.exe 进程 #如果胜利[不]有效 / #如果胜利[不]存在

不幸的是,Autohotkey 脚本只有在重新启动后才能在全屏 RDP 中工作激活全屏后(看这里:如何修复 AHK 以将按键发送到 RDP 全屏?)所以我们需要第二个脚本“rdp hotkeys_master.ahk”来实现这一点:

#Persistent
SetTimer, ReloadOnRDPMaximized, 500
return

ReloadOnRDPMaximized:
If WinActive("ahk_class TscShellContainerClass")
{
    WinGet, maxOrMin, MinMax, ahk_class TscShellContainerClass

    if (maxOrMin = 0) {
        WinGetPos, PosX, PosY, WinWidth, WinHeight, ahk_class TscShellContainerClass

        if (PosY = 0) {
            ; it is fully maximized therefore reload "script.ahk"
            Run "autohotkey" "rdp hotkeys_slave.ahk"

            ; wait until window gets deactivated so you don't reload it again.
            WinWaitNotActive, ahk_class TscShellContainerClass

        }
    }
}

您可以在服务器上使用以下 AutoHotkey 脚本将
Alt+ Win+转换arrowCtrl+ Alt+ arrow

;Send Ctrl+Alt+Left when user types Ctrl+Win+Left
!#Left::
send !^{Left}
return

;Send Ctrl+Alt+Right when user types Ctrl+Win+Right
!#Right::
send !^{Right}
return

要使脚本在启动时运行,请将它们全部放在相应设备的自动启动文件夹中(键入 Win+R 和 shell:startup)

答案2

感谢海报和迄今为止的答案;这些帮助我解决了类似的问题:我的台式电脑的文本编辑器上有使用的键盘快捷键Ctrl+Alt+...,我希望能够在远程访问机器时使用它们。

使用此 AHK 脚本,我输入Win而不是Alt,并且能够完成下面注释的命令。现在,无论我使用哪台 PC 访问远程桌面 PC(即在家或旅行时),我都可以使用我的快捷方式(并且 Win 非常接近 Alt)。这是我的 AHK 脚本:

;Send Ctrl+Alt+Left keys when user types Ctrl+Win+Left
^#Left::
send !^{Left}
return

;Send Ctrl+Alt+Right keys when user types Ctrl+Win+Right
^#Right::
send !^{Right}
return

;Send Ctrl+Alt+Up keys when user types Ctrl+Win+Up
^#Up::
send !^{Up}
return

;Send Ctrl+Alt+Down keys when user types Ctrl+Win+Down
^#Down::
send !^{Down}
return

;Send Ctrl+Alt+Shift+Left keys when user types Ctrl+Win+Shift+Left
^#+Left::
send !^+{Left}
return

;Send Ctrl+Alt+Shift+Right keys when user types Ctrl+Win+Shift+Right
^#+Right::
send !^+{Right}
return

;Send Ctrl+Alt+Shift+Up keys when user types Ctrl+Win+Shift+Up
^#+Up::
send !^+{Up}
return

;Send Ctrl+Alt+Shift+Down keys when user types Ctrl+Win+Shift+Down
^#+Down::
send !^+{Down}
return

注意,我在远程桌面连接中使用“在远程计算机上应用 Windows 组合键...”,因此我运行此脚本在远程计算机上

虽然可能有更有效的 AHK 方法来做到这一点,但上面的方法对我来说是有效的。希望这也能帮助别人。

答案3

我想分享一个更短的Autohotkey脚本来修复全部 AltRDP 拦截的组合。

该脚本不会重新映射依赖于#密钥的常见组合,因此几乎不会产生冲突,因为与之组合的密钥AppsKey非常罕见。

客户

*^LAlt::^AppsKey
return

服务器

*^AppsKey::^LAlt
return

答案4

不管怎样,如果你需要 Ctrl + Alt + Up 才能在 VSCode 中工作,一个更简单的方法就是将其重新映射为 Ctrl + Alt + Num8

在此处输入图片描述

相关内容