通过键盘命令切换出远程桌面

通过键盘命令切换出远程桌面

问题:

我需要在 RDP 上下文和 Windows 主机上下文之间切换,以便Alt+Tab和 等关键命令Win能够在给定的环境中按预期工作。


环境:

我在主机和远程都运行 Windows 10,并使用 RDP 进行连接。我在主机端使用 ICUE 作为我的主要键盘宏软件,但我并不反对将内容定向到 autohotkey 脚本或自定义 c# 可执行文件。


先前的研究:

  1. 我可以成功实现这一点,方法是让 ICUE 在主机上下文中打开我的 Web 浏览器(并切换到它),这使用宏键相当简单。问题是 Web 浏览器通常实例化速度相当慢,并且需要关闭。

  2. 我按照建议创建了一个空的可执行文件这个问题但我感觉由于它没有附加的窗口,所以它会在没有焦点开关的情况下关闭。

  3. 我不能简单地使用Alt+,Tab因为 RDP 会吞噬命令,而我需要能够Win在 RDP 和主机中使用。我知道我可以使用AltGr+PgDn进行交换,但我不喜欢这种解决方案,因为它限制了我对 RDPWin密钥的访问,而我的AltGr密钥基本上离我的页面密钥只有一手之遥,这显然很不舒服。

  4. 考虑到我的正常设置中有大量监视器,我一直在使用绑定到LCtrl+的自动热键脚本Space将窗口设置为始终位于顶部,然后在需要切换回主机时单击此窗口。


问题:

创建这样的上下文切换键命令可能是一个好的选择吗?

答案1

很棒的帖子...我过去有过非常类似的需求,并且有几种方法可以做到这一点(或足够相似以适应您想要做的事情) - 我倾向于利用 AutoHotkey,但您可以使用任何东西。

  1. 使用 RDP 或类似远程桌面软件的共享剪贴板功能运行两个后台脚本或程序,一个在本地,一个在远程。在远程端触发您选择的热键以将剪贴板设置为唯一字符串,并在本地端的剪贴板上检测该字符串(因为剪贴板将自动传递回本地端,可以在本地检测到更改,例如在 AutoHotkey 中使用命令OnClipboard)。然后您可以在本地端执行任何您想要的操作(如果您愿意,可以恢复窗口,或者通过 shell 执行另一个程序)。最后,在远程端或本地端,可以在采取行动后恢复或擦除原始剪贴板。这对我来说非常有效,但唯一的缺点——取决于您的连接延迟——是链接上剪贴板的传输时间。这种方法本身并不总是感觉“敏捷”,但功能齐全。

  2. 使用利用键盘专用驱动程序/软件的键盘。Logitech 的大多数键盘以及其他 USB 附加键盘都具有此功能。例如,在 Logitech 键盘上,您可以设置 Fn+[F1 到 F12] 来运行另一个程序、脚本等。因此,例如,您可以分配 Fn+F10 来运行将恢复 RDP 窗口的程序,并且此按键不会发送到 RDP 会话,因为 Logitech 驱动程序/软件会检测到它并将在本地运行它被分配运行的程序。如果您不想更换键盘,也可以使用这种方法的轻微变化,即获得单独的 USB 键盘——有更便宜和更昂贵的版本,但任何带有驱动程序的东西都可以,您可以将其设置为运行外部程序或可执行文件。

  3. 最后,我之前没有实现过一个选项,但这个选项可能可行,即使用 AutoHotkey HID 代码来使用您身边的额外键盘或鼠标(因此它基本上具有相同的按键,并且您可能手边有一个,而不必购买)。在这种情况下,您可以从该设备检测 HID 特定的输入(而不是您的常规键盘/鼠标),即使它会发送相同的按键/按钮,然后在本地执行程序以恢复 RDP 窗口。

答案2

我对这个具体问题的解决方案如下:

我在主机上编译了以下 autohotkey 可执行脚本:

WinActivate Program Manager
return

这会将“焦点”窗口设置为我的主机桌面(没有最小化到桌面(就像Win+D那样)。然后关闭脚本。

我在 ICUE 中将其设置为按键驱动的可执行文件(尽管我毫不怀疑其他特定于供应商的键盘软件中也可以实现类似的功能),这样当我按下特定的宏键并且我在使用按键吞噬应用程序(例如 RDP 或 Hyper-V)时,它就会触发脚本。

相关内容