首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有支持Windows7的SetProcessDPIAware的反向功能?或者如何回到曾经的样子?

是否有支持Windows7的SetProcessDPIAware的反向功能?或者如何回到曾经的样子?
EN

Stack Overflow用户
提问于 2019-04-29 20:45:44
回答 1查看 1K关注 0票数 3

我在我的WinForms应用程序中使用来自user32.dllSetProcessDPIAware()函数。在调用SetProcessDPIAware()之后,我需要返回到以前对该进程的DPI感知。

我读了Setting the default DPI awareness for a process这篇文章。SetProcessDpiAwareness()SetProcessDpiAwarenessContext()不能在Windows7或Windows Vista上运行。

如何在为进程调用SetProcessDPIAware()后恢复到以前对该进程的DPI感知?

EN

回答 1

Stack Overflow用户

发布于 2019-04-29 23:48:27

作为一种选择,您可以重新启动应用程序,并根据设置或命令行参数决定是否要设置process DPI aware。

您可以在Properties文件夹下的Settings文件中创建布尔用户设置属性。此设置将确定是否启用了DPI感知。然后,当应用程序启动时,检查设置是否已启用,然后调用SetProcessDPIAware

代码语言:javascript
复制
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
static class Program
{
    [DllImport("user32.dll", SetLastError = true)]
    static extern bool SetProcessDPIAware();

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        if (Environment.OSVersion.Version.Major >= 6 &&
            Properties.Settings.Default.DPIAware)
            SetProcessDPIAware();

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(true);
        Application.Run(new Form1());
    }
}

此外,在主UI窗体中,您可以检查设置并显示如下消息,并允许用户通过启用或禁用DPI感知来重新启动应用程序。为此,只需设置设置值、保存设置并调用Application.Restart()即可

代码语言:javascript
复制
private void Form1_Load(object sender, EventArgs e)
{
    if (Properties.Settings.Default.DPIAware)
        toolStripLabel1.Text = "DPI-awareness is enabled. Restart to disable DPI-awareness.";
    else
        toolStripLabel1.Text = "DPI-awareness is disabled. Restart to enable DPI-awareness.";
}
private void toolStripLabel1_Click(object sender, EventArgs e)
{
    Properties.Settings.Default.DPIAware = !Properties.Settings.Default.DPIAware;
    Properties.Settings.Default.Save();
    Application.Restart();
}

别忘了创建DPIAware设置,它将告诉我们是否要在main方法中调用SetProcessDPIAware

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55903707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档