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

本文介绍如何在Windows 10中禁用系统对exe程序的自动缩放,通过使用manifest文件设置DPI Awareness,避免程序模糊。重点在于如何应用manifest文件和设置示例。

       当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>
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值