通过命令行在 Windows 8.1 中进行 DPI 缩放

FTh*_*son 16 windows dpi command-line high-dpi windows-8.1

我想创建一个键盘快捷键,通过创建一个小宏来快速轻松地更改我机器上的 DPI 比例,方法是创建一个在检测到键盘快捷键时运行的小宏。

在 Windows 8.1 中,可以通过控制面板(如下图)设置桌面显示 DPI 比例,立即生效。或者,可以在注册表中手动设置比例,但这样做需要用户登录和退出或重新启动机器才能生效(并且只能模仿“所有显示器的一个缩放级别”选项) .

如何通过命令行或以其他方式以编程方式设置 DPI 比例?

http://puu.sh/93YLV.jpg

小智 10

用于监视器独立缩放的正确注册表项HKCU:\Control Panel\Desktop的值为LogPixels。有关所有 DPI 相关注册表设置的更多信息,请访问:http : //technet.microsoft.com/en-us/library/dn528846.aspx#system还有有关为每个显示器启用不同缩放的情况的信息.

我编写了一个很小的 ​​PowerShell 脚本,它根据当前的缩放比例更改所有显示器的 DPI 缩放比例并执行用户注销,因此当我将设备放在不同的显示器上时,我只需要执行该脚本。

cd 'HKCU:\Control Panel\Desktop'
$val = Get-ItemProperty -Path . -Name "LogPixels"
if($val.LogPixels -ne 96)
{
    Write-Host 'Change to 100% / 96 dpi'
    Set-ItemProperty -Path . -Name LogPixels -Value 96
} else {
    Write-Host 'Change to 150% / 144 dpi'
    Set-ItemProperty -Path . -Name LogPixels -Value 144
}

logoff;exit
Run Code Online (Sandbox Code Playgroud)

我认为您可以使用 TechNet 文章的信息根据您的需要对其进行修改。

  • 我很抱歉没有尽快回复;很好的解决方案!然而,不幸的是,使用“LogPixels”值仅适用于选中“让我为所有显示器选择一个缩放级别”复选框时,这是我自己在弄乱注册表值时观察到的,但也得到了链接的 Technet 文章的确认. 此外,您的解决方案有一个需要用户注销的警告;除非用户注销并重新登录,否则 DPI 不会更新。在这两个缺点之间,您的解决方案对我来说不太适用,但是对于一个很好的答案,+1 都是一样的。 (3认同)
  • @kokbira 要使其在 Windows 10 中工作,您需要将注册表项“HKCU:\Control Panel\Desktop\Win8DpiScaling”设置为“1”。否则,它将使用默认比例因子并忽略“LogPixels”中的值。 (3认同)

har*_*ymc 3

有一个 PowerShell 脚本可以更改屏幕分辨率,这可能会有所帮助。我不知道它所做的更改在 Windows 8.1 上是否会立即生效,但幸运的是,该脚本可能使用与控制面板小程序使用的 API 相同的 API。

完整的Set-ScreenResolution.ps1脚本可以在Script Repository中找到,但由于太长,无法在此处重现。

作者对其的描述可以在文章中找到:
Hey, Scripting Guy! 如何通过 Windows PowerShell 更改桌面显示器分辨率?

有关使用它的一些信息可以在文章中找到:
使用 Powershell 更改屏幕分辨率