Windows 10 以编程方式覆盖高DPI感知

Windows 10 以编程方式覆盖高DPI感知,windows-10,manifest,highdpi,creators-update,Windows 10,Manifest,Highdpi,Creators Update,在Windows 10 Creator的更新版中,为最终用户提供了一个新选项。最终用户可以在“兼容性”选项卡上将EXE的属性更改为“覆盖高DPI缩放行为”,并将其设置为“系统”(增强)。我对它进行了测试,它在一些经典的win32应用程序中运行良好 我想通过API调用或清单通过代码来实现这一点。没有这方面的信息。可能吗? 从我得到的评论中,我想澄清这是一个新的CREATORS更新功能,我特别想知道如何通过清单或代码设置覆盖功能的“系统(增强)”选项。详细信息见: True/PM PerMonito

在Windows 10 Creator的更新版中,为最终用户提供了一个新选项。最终用户可以在“兼容性”选项卡上将EXE的属性更改为“覆盖高DPI缩放行为”,并将其设置为“系统”(增强)。我对它进行了测试,它在一些经典的win32应用程序中运行良好

我想通过API调用或清单通过代码来实现这一点。没有这方面的信息。可能吗?
从我得到的评论中,我想澄清这是一个新的CREATORS更新功能,我特别想知道如何通过清单或代码设置覆盖功能的“系统(增强)”选项。

详细信息见:

True/PM
PerMonitorV2,PerMonitor
有关各种清单问题的更多详细信息,请参阅


我在另一个SO帖子中找到了答案:

正确的线索是调查新的GDI缩放清单,该清单在Creator的更新中得到了极大的改进。在系统(增强)设置中使用的


没有一个答案和评论接近。他们不断地引用旧文章。此外,有人将问题标记为否定:(Sad.

DPI_-aware_-CONTEXT_-unknowledge_-GDISCALED在最新的Windows 10 SDK标头(截至本文撰写时为17134)中现在是一个有效的DPI_-aware_-CONTEXT,在windef.h中:

定义DPI_感知_上下文_unknowledge_GDISCALED((DPI_感知_上下文)-5)

因此,如果希望避免在清单中执行此操作,则应调用isValidPiawarenessContext和SetProcessDpiAwarenessContext以利用运行时的GDI缩放


这证实了gdiScaling与Per monitor V2是互斥的。

这方面的信息太多了,谷歌的“dpiaware清单”。其实不是,不是关于如何设置最终用户获得的特定系统(增强)设置。您的链接指向一篇旧文章。这是“系统(增强)”该功能是Creator更新后的最新功能,似乎没有相关的清单或API。我最初阅读这篇文章是为了了解该功能。但它只描述了最终用户使用System(增强)的解决方案。它没有在清单中给出与之等价的内容。这是针对支持DPI的应用程序的。新的“系统”(增强版)该功能是为了让DPI非意识应用程序在高DPI上运行良好。无论如何,我已经接近解决方案,并将发布答案。谢谢。这正是我所寻找的。当在C中通过SetProcessDpiAwarenessContext API调用使用此功能时,与DPI非意识上下文非意识上下文非意识上下文相对应的值是多少?@FoundWaldoException it's-5
<dpiAware>True/PM</dpiAware>
<dpiAwareness>PerMonitorV2, PerMonitor</dpiAwareness>