Windows screen bounds with dual monitors

2019-09-10 00:07发布

I am looking to get the total screen resolution using dual monitors in powershell.

$screen = [System.Windows.Forms.Screen]::PrimaryScreen
$SCREENWIDTH = [int]$screen.bounds.Size.Width
$SCREENHEIGHT = [int]$screen.bounds.Size.Height

With this I get 1920 X 1200 but the resolution is actually 3840 X 1200. I could just double the resolution, however that wont always work depending on the monitors being used.

I am doing this within powershell studio. The reason for knowing this is because sometimes the program opens up off screen, if it does open off screen, I can move it back to the bottom right hand corner.

2条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-09-10 00:24

On the primary Screen the Resolution is still 1920x1200. You can check, how much screens are attached ( [System.Windows.Forms.Screen]::AllScreens ) and work with the bounds [System.Windows.Forms.Screen]::AllScreens | select -ExpandProperty bounds.

查看更多
神经病院院长
3楼-- · 2019-09-10 00:36

This is what I found works with the help of Martin. But I know it is super sloppy. I may ask another question to try to get this cleaned up.

$screen = [System.Windows.Forms.Screen]::AllScreens | select -ExpandProperty bounds
foreach ($item in $screen)
{
    $item = $item -replace ".*Y=0,","" -replace "{", "" -replace "}", "" -replace "Width=", "" -replace "Height=", "" -replace ",", ";"
    $pos = $item.IndexOf(";")
    $leftPart = $item.Substring(0, $pos)
    $rightPart = $item.Substring($pos + 1)
    [int]$SCREENWIDTH = $SCREENWIDTH + $leftPart
    [int]$SCREENHEIGHT = $rightPart
}
$richtextbox1.Text = ([string]$SCREENWIDTH + " " + [string]$SCREENHEIGHT)
查看更多
登录 后发表回答