【问题标题】:Change Windows per-monitor scaling settings programmatically [duplicate]以编程方式更改 Windows 每个显示器的缩放设置 [重复]
【发布时间】:2020-01-26 22:54:36
【问题描述】:

我需要实现一个自动化 UI 测试,以验证 DPI 感知应用程序在每次监视器 dpi 缩放更改时的正确行为。

为了在应用程序中触发缩放动作,需要更改 Windows 设置 UI“显示”面板的“更改测试、应用程序和其他项目的大小”组合框中的值。

虽然这可以通过 Windows UIAutomation 来完成,但使用 API 来更改此设置会容易得多。

我无法弄清楚 SetDisplayConfig API 是如何做到这一点的,DISPLAYCONFIG_MODE_INFO 结构中的任何字段似乎都没有解决比例因子(100%、125%、150%,...)。

在此处查看屏幕截图:WindowsDisplaySettings

【问题讨论】:

  • UIAutomation 似乎是一个有效的解决方案。其他类似注册表的解决方案,设置不能立即生效,需要注销重新登录。参考herehere
  • 谢谢,丽塔。您的第一个参考中来自Sahil SinghSolution proposal 解决了未记录的API 的问题,这是我的选择。问题已解决:-)

标签: winapi windows-10-sdk


【解决方案1】:

How can I change Windows 10 Display Scaling Programmatically using C# 的副本。

来自Sahil Singh 的令人敬畏的solution proposal 在那里发布,演示了如何通过基于现有Win32 方法DisplayConfigSetDeviceInfo 的未记录API 设置缩放值。

使用带有未记录结构的 DisplayConfigSetDeviceInfo 方法优于调整注册表值,因为它以自然的方式更新运行时系统,而不是注销/登录。

【讨论】:

    猜你喜欢
    • 2011-03-26
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2013-02-08
    相关资源
    最近更新 更多