Windows 10 Windows 10中的遗留应用程序和扩展

Windows 10 Windows 10中的遗留应用程序和扩展,windows-10,dpi,windows-10-desktop,Windows 10,Dpi,Windows 10 Desktop,我们有一个基于Microsoft Access的非常旧的应用程序。UI的部分仍然是MicrosoftAccess,其他部分使用WinForms,最新部分使用WPF(试图一步一步地摆脱旧部分) 我们在Windows 10和高DPI监视器中发现了一个奇怪的缩放问题,现在我正在寻找解决这个问题的方法,最好是不涉及更改旧UI的方法 为了能够在这种高DPI监视器上工作,Windows的缩放比例应设置为200% 问题是:当用户登录时,将缩放设置为200%,启动我们的应用程序会导致字符串使用太大的字体来填充字

我们有一个基于Microsoft Access的非常旧的应用程序。UI的部分仍然是MicrosoftAccess,其他部分使用WinForms,最新部分使用WPF(试图一步一步地摆脱旧部分)

我们在Windows 10和高DPI监视器中发现了一个奇怪的缩放问题,现在我正在寻找解决这个问题的方法,最好是不涉及更改旧UI的方法

为了能够在这种高DPI监视器上工作,Windows的缩放比例应设置为200%

问题是:当用户登录时,将缩放设置为200%,启动我们的应用程序会导致字符串使用太大的字体来填充字符串所在的空间。看起来Windows增加了字符串的字体大小,但没有增加包含字符串的控件的尺寸。更改Windows的缩放比例并不能解决问题,更改缩放比例后重新启动应用程序并不能解决问题

虽然。。。当用户登录并将缩放设置为100%时,一切正常,即使在之后更改缩放或重新启动应用程序时也是如此

但是我们不能也不会告诉我们的用户在注销时总是将Windows的缩放比例设置回100%,并在登录时再次增加

难道没有别的办法来解决这个问题吗


谢谢你的帮助(如果有的话)。

在谷歌搜索了一下之后,我找到了一个解决方案,至少解决了我的特殊问题

Microsoft Access有一个清单文件,其
dpiAware
节点设置为
true
。将其更改为
false
似乎告诉Access不要使用Microsoft的“智能”缩放,而是使用某种“哑”缩放。这为我解决了整个问题


据我所知,可以为任何可执行文件创建这样的清单文件来解决旧应用程序的问题,但我没有尝试,因为Access附带了一个已经存在的清单文件。

制作一个应用程序dpiAware是可行的。过期的工作,通常情况下,应用程序越老,程序员就越不可能关注缩放问题。在应用程序中使用WPF会使情况变得更糟,它会自动将应用程序声明为dpiAware,而实际上不是。最快的“修复”是阻止它这样做,将[assembly:System.Windows.Media.DisabledPiaware]添加到代码中。您可能不太喜欢结果,您必须卷起袖子使其更好。现在winforms部分也是DPIaware,应该可以解决此问题