我有一台 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 的作品更重要的是萨希尔·辛格的作品(也可以看看这个答案)。