我通过设置<dpiAware>True/PM</dpiAware>清单文件使每个监视器的应用程序dpi感知.我可以使用进程资源管理器验证这确实有效,或者通过调用GetProcessDpiAwareness来验证.
这一切都运行正常,我可以在我的代码中很好地扩展客户端区域中的任何内容.但是,我唯一的问题是,如果我将我的应用程序从system-dpi监视器拖到非系统dpi监视器,标题栏和任何系统菜单将变得太大或太小.对于大多数内置应用程序(例如计算,边缘浏览器等),情况并非如此,因此必须妥善扩展它.MS的开发人员有没有这样做过?
下面的截图应该更好地解释我的问题.另请注意,关闭,最小和最大按钮之间的填充在缩放(96dpi)时是不同的.

示例应用程序我附加了一个非常简单的应用程序,每个监视器dpi意识到.
我将设置此问题并亲自回答,以便其他人可以轻松地搜索并找到正确的答案。我不得不谷歌搜索几个小时,并从多个来源汇编最终结果...
因此,问题是- 如何在ClickOnce场景(特别是WPF,特别是c#)中启用Per-Monitor v2 DPI感知?
在Win 10 Creators Update(1703)中添加了Per-monitor v2。众所周知,ClickOnce不支持在app.manifest文件中声明的DPI感知,例如。