如何禁用Windows系统对exe程序的自动缩放?

Posted dvlinker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁用Windows系统对exe程序的自动缩放?相关的知识,希望对你有一定的参考价值。

       当Windows系统将显示比例切换到非100%后,系统会对exe程序自动进行缩放。系统所做的自动缩放,是简单的放大,放大后的文字和图片会变得模糊。所以有时我们想让程序维持100%的缩放比例,或者我们程序自己实现缩放(QQ就是自己实现缩放的),需要将系统的自动缩放给禁用掉。那如何禁用系统的自动缩放呢?

        原先我们知道一个系统API函数SetProcessDPIAware,调用该函数,就是告诉系统不要对当前程序进行缩放,程序自己感知缩放。但是该函数的调用,在win10系统中并不会生效。

       后来我们到MSDN上查看SetProcessDPIAware函数的说明,MSDN上特别强调了不要调用该函数,而应该使用manifest文件去设置:

在SetProcessDPIAware函数的说明中,给出了一个“Setting the default DPI awareness for a process”超链接,在该链接页面中给出了一个manifest内容范例:

       将内容拷贝到txt文件中,然后将文件重命名为manifest文件即可。然后将该manifest文件添加到工程中,编译一下就好了。

       下面将示例manifest文件中的内容给出来:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

以上是关于如何禁用Windows系统对exe程序的自动缩放?的主要内容,如果未能解决你的问题,请参考以下文章

“使用 windows xp 风格的 dpi 缩放”禁用 W7 上任务栏的自动自动隐藏。解决方法?

如何从反应原生包中禁用羽毛笔编辑器的自动缩放?

如何让MFC程序在高DPI设置时禁用显示缩放

win7系统进程服务哪些能关闭,哪些不能关闭

“使用Windows XP风格dpi缩放”禁用W7上任务栏的自动隐藏功能。解决方法?

javaw.exe是啥东西? 我电脑开机时他是自动启动,那关掉它之后对电脑会产生啥影响吗?