2016-03-03 5 views
0

Je cherche à obtenir la résolution d'écran totale en utilisant deux moniteurs en PowerShell.Limites de l'écran Windows avec deux moniteurs

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

Avec ce je reçois 1920 X 1200, mais la résolution est en fait 3840 X 1200. Je pourrais doubler la résolution, mais que wont toujours travailler en fonction des moniteurs utilisés. Je le fais au sein de powershell studio. La raison en est que parfois le programme s'ouvre hors de l'écran, s'il s'ouvre sur l'écran, je peux le ramener dans le coin inférieur droit.

Répondre

1

Sur l'écran principal, la résolution est toujours 1920x1200. Vous pouvez vérifier, combien d'écrans sont attachés ([System.Windows.Forms.Screen]::AllScreens) et travailler avec les limites [System.Windows.Forms.Screen]::AllScreens | select -ExpandProperty bounds.

+0

Ok, cela me rapproche. la sortie de cela est: {X = 1920, Y = 0, Largeur = 1920, Hauteur = 1200} {X = 0, Y = 0, Largeur = 1920, Hauteur = 1200} Comment le séparer en Hauteur et en Largeur? Je ne doute pas d'être en mesure d'obtenir cette chaîne dans le format dont j'ai besoin, mais ce serait super code spaghetti. – user3585839

+0

Vérifiez mon code avec 'select -expandproperty bounds'. Cela vous permettra de créer un tableau avec des écrans et des propriétés telles que X, Y, hauteur et largeur. – Martin

0

Voici ce que j'ai trouvé avec l'aide de Martin. Mais je sais que c'est super mouillé. Je peux poser une autre question pour essayer de nettoyer cela.

$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)