首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从windows窗体应用程序启动时,RDP / MSTSC忽略highdpi清单修复

从windows窗体应用程序启动时,RDP / MSTSC忽略highdpi清单修复
EN

Stack Overflow用户
提问于 2017-10-18 21:20:50
回答 1查看 1.3K关注 0票数 1

我正在使用VS2017,并使用Windows Forms应用程序为各种RDP设置文件创建了一个非常简单的‘启动器’。这只是调用直接链接到.rdp文件的Process.Start,或者直接链接到mstsc.exe

应用程序(和RDP会话)在标准PC上显示并正常工作。然而,我在高DPI设备上遇到了一个问题,比如Surface Books/pros。

RDP客户端不能正确伸缩是一个众所周知的问题,我们已经使用manifest/reg更改方法修复了这个问题。这已确认工作正常。双击.rdp配置文件也可以正常工作。

( https://www.blackforce.co.uk/2016/04/18/remote-desktop-rdp-resolution-on-a-surface-book )

我自己的应用程序也能以正确的比例正确显示。然而,当我使用Process.Start启动RDP时,RDP客户端的伸缩性很差,就像清单修复之前的情况一样。我试着单独打开客户端,使用.rdp文件,结果是一样的。我手动打开相同的.rdp文件,而不是通过我的应用程序,客户端的缩放是正确的。

任何人都可以复制它,或者建议为什么mstsc清单文件在以这种方式启动时会被忽略?我也尝试过使用ProcessStartInfo来设置UseShellExecute,但结果仍然是一样的。

EN

回答 1

Stack Overflow用户

发布于 2017-10-20 11:12:33

Windows桌面应用程序(如RDP )可以通过清单设置或在初始化期间通过API调用指定DPI缩放模式("DPI感知模式“)。当应用程序所在的显示器的比例因子发生变化时,它们的行为就会有所不同。您可以阅读有关此here的更多信息。

我推测(我还没有尝试过证实这一猜测) RDP进程正在使用清单来声明它的DPI感知(根据Monitor DPI感知),并且当您通过Process.Start启动一个进程时,指定的应用程序的DPI感知正在改变……可能与调用进程的DPI感知有关?

我会使用系统内部流程资源管理器来确定RDP应用程序按预期运行时的DPI感知,然后将其与从应用程序启动时RDP应用程序的DPI感知进行比较。如果是这种情况,请查看是否可以指定要在Process.Start中启动的进程的DPI感知。您可以尝试的另一件事是将WinForms应用程序的DPI感知设置为与RDP应用程序(每个监视器)相同的DPI感知,看看这是否有帮助。

此外,我假设您运行的操作系统大于8.1,因为在8.1中引入了对每个监视器的支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46811211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档