5 multiple-monitors scaling windows-10
根据下面的 2 个屏幕截图,Adobe Acrobat DC 和 Internet Explorer 无法在我的第二台显示器上正确缩放,因为菜单太大。在 下Settings > System > Display
,我无法减小“文本、应用程序和其他项目的大小”,因为滑块已位于最左侧。但是其他一些程序(MS Office)确实可以正确扩展。
显示适配器:Intex HD Graphics 530、NVIDIA GeForce GTX 960M 驱动程序版本 354.74
显示器 1(正确缩放):Lenovo Ideapad Y700、3840 x 2160
显示器 2(缩放不理想):Dell E153FP、1024 x 768
现代 Windows 应用程序应该包含一个manifest,它是一个 XML 文档,通常嵌入在主 EXE 文件中。清单声明了几件重要的事情,包括程序是否会要求提升 UAC,以及更相关的 DPI 意识水平。如果程序了解如何针对不同的每英寸点数设置重绘自身,则它是 DPI 感知的。
这篇旧的新事物文章提到了 Windows 8.1 及更高版本上可用的三个级别的 DPI 感知:无感知(在这种情况下,系统将扩展程序,产生模糊)、系统 DPI 感知和每个显示器的 DPI 感知。后两者之间的区别在于,每个显示器的 DPI 感知程序需要根据它们所在的显示器重新绘制自己,因为不同的显示器可能具有不同的 DPI。系统 DPI 感知程序为最高 DPI 监视器缩放自己,然后系统根据需要将它们缩小。
我通过使用十六进制编辑器搜索 string 来检查您提到的程序的清单<dpiAware
。这些是我的结果:
True/PM
每显示器感知)True
系统感知)True/PM
因此,Word 部分由系统处理,这就解释了为什么它可以按预期工作。其他程序应该自己处理,但显然它们搞砸了。Per-monitor-DPI-aware 程序通过WM_DPICHANGED
窗口消息接收有关监视器更改的信息,但这些显然没有做正确的事情来响应。
进一步阅读:编写 DPI 感知桌面和 Win32 应用程序
它可以使用兼容的基础设施,以力模糊(即让程序不DPI知道的话),但似乎你想使这些程序只是部分DPI感知的(即使用系统级)。我能想到的唯一方法是用十六进制编辑器重击 EXE 并更改清单。我喜欢XVI32,没有从属关系。
以管理员身份运行十六进制编辑器并打开要更改的程序文件。搜索<dpiAware
,然后提前阅读,直到找到True/PM
(或相同的不同大小写)。它可能紧跟在</dpiAware>
结束标记之后,所以我们会像这样写:
Old: True/PM</dpiAware>
New: True</dpiAware>
Run Code Online (Sandbox Code Playgroud)
确保re>
用空格覆盖额外的空格 ( )。在保存之前,您可能需要修改文件权限。一旦文件被更改,它将只是一个系统 DPI 感知程序。
似乎 Windows 10 附带的 Internet Explorer 版本使用SetProcessDpiAwareness
而不是清单来设置 DPI 感知。因此,我们需要更认真地进行十六进制编辑。搜索windowsSettings
,然后将光标移动到上一个application
标签的右括号之后。用所有这些覆盖:
<windowsSettings><dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware></windowsSettings></application><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application><!--
Run Code Online (Sandbox Code Playgroud)
完成后,它应该如下所示(我用红色突出显示了新部分并将蓝色光标放在更改部分的开头):
这利用了默认清单中的额外空格和注释来插入我们的新设置并将compatibility
元素向前移动一点。当dpiAwareness
清单中的设置,该SetProcessDpiAwareness
功能不会有任何效果。
Windows 资源保护有可能会回滚更改,因此如果程序自动恢复,您可能需要设置一个脚本来重新复制新版本。
警告!覆盖而不是插入或删除字符非常重要。插入或删除将移动其余的可执行数据,破坏很多东西。如果出现转录错误,请勿按 Backspace 或 Delete。相反,将光标移回并用正确的字符覆盖您的错误。如果您之前没有使用过十六进制编辑器,您应该在修改之前备份 EXE 文件。
归档时间: |
|
查看次数: |
11250 次 |
最近记录: |