如何通过命令行获取 Windows 上的当前屏幕分辨率?

如何通过命令行获取 Windows 上的当前屏幕分辨率?

我正在尝试当前的通过命令行在 Windows 上设置屏幕分辨率。
根据我找到的大多数答案,我应该使用:

wmic desktopmonitor get screenheight, screenweight

但这会返回最大限度显示设备支持的分辨率,不是当前的,这正是我所需要的。

示例:
我使用的是 4k 显示器,但当前设置为仅显示1920x1080。当我运行上述命令时,我得到:

ScreenHeight  ScreenWidth
2160          3840

在此处输入图片描述

我如何获得当前屏幕分辨率在 Windows 上通过命令行?

答案1

处理高 DPI 使得这有点具有挑战性,因为大多数 Windows API 函数都会返回分辨率的缩放版本以实现兼容性,除非应用程序声明高 DPI 感知。灵感来自这个 Stack Overflow 上的答案我写了这个 PowerShell 脚本:

Add-Type @"
using System;
using System.Runtime.InteropServices;
public class PInvoke {
    [DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hwnd);
    [DllImport("gdi32.dll")] public static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
}
"@
$hdc = [PInvoke]::GetDC([IntPtr]::Zero)
[PInvoke]::GetDeviceCaps($hdc, 118) # width
[PInvoke]::GetDeviceCaps($hdc, 117) # height

它输出两行:首先是水平分辨率,然后是垂直分辨率。

要运行它,请将其保存到文件(例如screenres.ps1)并使用 PowerShell 启动它:

powershell -ExecutionPolicy Bypass .\screenres.ps1

答案2

我遇到了类似的问题。
试试这个:

wmic PATH Win32_VideoController GET CurrentVerticalResolution,CurrentHorizontalResolution

相关内容