切换到多显示器设置时如何自动更改屏幕的 DPI 缩放比例?

切换到多显示器设置时如何自动更改屏幕的 DPI 缩放比例?

我有一台 14 英寸 1920×1080 的笔记本电脑和一台 24 英寸 1920×1200 的屏幕。像素密度差异很大。

当我将大屏幕用作主屏幕,将笔记本电脑用作辅助屏幕时,我希望将小屏幕设置为 150% 缩放比例,以便可以舒适地使用它。但是当我离开办公桌并且外部屏幕断开连接时,我希望笔记本电脑自动切换到 100% 缩放比例以最大化桌面区域。

如何让 Windows 在外接屏幕连接或断开连接时自动切换 DPI 缩放比例?

如果有必要,我可以使用第三方软件,但我宁愿坚持使用 Windows 的内置功能。

我正在使用 Windows 10 Pro 版本 1703。

答案1

您无法自动更改 DPI 缩放比例,因为它要求您注销并登录。

这是一篇很好的帖子,介绍如何使用 powershell 设置 DPI 注册表项,并更快地在两个 DPI 之间切换。您仍然需要注销,脚本会自动执行该操作。

https://stackoverflow.com/questions/10365394/change-windows-font-size-dpi-in-powershell

如果您想扩展这一点,这里有有关使用 Powershell 读取监视器信息的信息:https://blogs.technet.microsoft.com/heyscriptingguy/2013/10/03/use-powershell-to-discover-multi-monitor-information/

另外,这里是关于更改特定用户的注册表项的信息。这是必需的,因为如果您在未登录时运行脚本,或者在启动期间,您的注册表配置单元将不会被加载。https://www.pdq.com/blog/modifying-the-registry-of-another-user/

将这些结合起来,再加上一些巧妙的技巧,您就可以安排此脚本在注销和计算机启动时运行。棘手的部分是,您必须始终进行新的登录才能使新设置生效,而对我来说,这是最大的缺点。

现在,更好的解决方案可能是更改实际显示分辨率,无需注销即可完成:https://blogs.technet.microsoft.com/heyscriptingguy/2010/07/07/hey-scripting-guy-how-can-i-change-my-desktop-monitor-resolution-via-windows-powershell/

许多程序在非标准 DPI 下无法正常运行,所以如果你问我,更改显示分辨率是一个更好的解决方案。

好了,现在你已经掌握了所有资源,可以创建新的脚本来自动化此操作。现在你可以看看是否能找到任何人http://stackoverflow.com来帮助你。:)

答案2

以下是操作方法。

创建myswitch.bat一个如下的文本文件:

@echo off

:: Check if an external monitor is connected
wmic path Win32_DesktopMonitor get Availability | findstr /C:"2"

if %errorlevel%==0 (
   :: External monitor is connected, set scaling to 150%
   control.exe /name Microsoft.Display /page pageDPI
   control.exe /name Microsoft.Display /page pageAdvancedSettings /cmd ChangeDPI 150
) else (
   :: External monitor is not connected, set scaling to 100%
   control.exe /name Microsoft.Display /page pageDPI
   control.exe /name Microsoft.Display /page pageAdvancedSettings /cmd ChangeDPI 100
)
  • 打开task scheduler

  • 添加任务:

     General tab:
     Name: "DPI Switch"
     User Account: select "Administrator"
    
     Triggers tab:
     New:
     Begin the task: "On an event"
     Log: "System"
     Source: "Display"
     Event ID: "10" (for display connect) or "11" (for display disconnect)
     New:
     Begin the task: "On an event"
     Log: "System"
     Source: "Display"
     Event ID: "11" (for display disconnect) or "10" (for display connect)
    
     Actions tab:
     New:
     Action: "Start a program"
     Program/script: enter the path to the "myswitch.bat" file, e.g. C:\Users\<username>\Documents\myswitch.bat
    

单击“确定”,就完成了。

答案3

dpi切换器

... 是一个小型的 .exe,您可以下载/安装并忘记它,但无论您何时没有/重新使用外接显示器,它都会自动修复您的内部显示器 dpi 缩放比例,就像您喜欢的那样。

我基于 dpiSwitcher 编写了imniko 的作品更重要的是萨希尔·辛格的作品(也可以看看这个答案)。

相关内容