PowerShell 脚本返回错误的屏幕分辨率

tjw*_*992 4 powershell winapi screen-resolution winforms

我刚刚编写了一个简单的 PowerShell 脚本来获取显示器的屏幕分辨率,但它似乎返回了错误的值。

# Returns an screen width and screen height of maximum screen resolution
function Get-ScreenSize {
    $screen = [System.Windows.Forms.Screen]::PrimaryScreen
    $width  = $screen.Bounds.Width
    $height = $screen.Bounds.Height
    return $width, $height
}

Get-ScreenSize
Run Code Online (Sandbox Code Playgroud)

我在分辨率设置为 3840 x 2160 的 4k 显示器上运行此脚本,但它给出以下输出:

1536

第864章

是否有什么因素会导致System.Windows.Forms.Screen得到错误的“边界”值?

tjw*_*992 5

好吧,我并没有确切地弄清楚为什么我会得到如此奇怪的结果......但我确实找到了另一种方法,实际上看起来更简单并且似乎是准确的。

$vc = Get-WmiObject -class "Win32_VideoController"
$vc.CurrentHorizontalResolution
$vc.CurrentVerticalResolution
Run Code Online (Sandbox Code Playgroud)

这将打印当前的屏幕分辨率,并且似乎给我提供了准确的结果,这正是我真正想要的。如果有人弄清楚什么可能导致其他方法产生不准确的结果,我仍然很想知道为什么会发生这种情况......