1

由于远程桌面协议 8.1 版默认 Windows 的远程桌面连接可以将当前系统规模应用到远程计算机,例如,如果您使用 2 倍规模,您将看到应用了相同规模的远程计算机桌面(如果服务器的 RDP 组件版本至少是 8.1)。问题是仅当您以全屏模式连接或远程桌面大小选项与本地桌面大小完全匹配时才会应用比例。在其他情况下,远程桌面规模与本地规模不同步。

似乎远程桌面大小中的组件检查等于本地桌面大小,然后才自动应用缩放。

我正在使用 MS RDP COM 组件来支持我的应用程序中的 RDP 连接。IMsRdpClient9 接口有方法UpdateSessionDisplaySettings可以在工作会话期间更改远程桌面分辨率和比例。如果我在连接或登录后立即使用它(例如 onConnected 或 onLoginComplete 事件),则返回 hresult 为 E_UNEXPECTED,但如果我等待两秒钟,则可以成功调用 UpdateSessionDisplaySettings。我不喜欢这种方法,因为用户可以看到没有比例的远程桌面,然后它会闪烁,然后应用新的比例。

我希望在每种情况下都自动将本地比例(如果服务器支持)应用于远程桌面会话:不仅在全屏模式下,而且在用户选择的分辨率下也是如此。我知道这是可以做到的,因为 RoyalTS 应用团队以某种方式解决了这个问题。

也许有人以前遇到过这个问题?也许我可以以某种方式对有关本地桌面大小的组件撒谎?我在这里没有想法。任何帮助表示赞赏。

4

2 回答 2

2

解决方案不在 UpdateSessionDisplaySettings 方法中。它位于 IMsRdpExtendedSettings 界面中。您需要在连接之前设置属性:

this.SetExtendedProperty("DesktopScaleFactor", this.GetDesktopScaleFactor()); this.SetExtendedProperty("DeviceScaleFactor", this.GetDeviceScaleFactor());

您可以在此处获取详细信息:

https://blog.devolutions.net/2016/08/smart-resizing-and-high-dpi-issues-in-remote-desktop-manager.html

于 2016-08-05T03:21:06.320 回答
0

使用AdvancedSettings.SmartSizing属性的诀窍。

此选项在连接完成后立即缩放屏幕。

正如我所知,当我们调整本地窗口的大小时,旧的 RoyalTS 应用程序会断开连接并重新连接到远程桌面以重新缩放屏幕。

于 2016-05-16T10:52:36.417 回答