如何禁用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 上任务栏的自动自动隐藏。解决方法?