Hallo,
bei Benutzeranmeldung lasse ich ein Skript ausführen, welches die Bildschirmauflösung erkennt:
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Hauptbildschirmgröße = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize
$Breite = $Hauptbildschirmgröße.Width
$Höhe = $Hauptbildschirmgröße.Height
[System.Windows.Forms.MessageBox]::Show(„$Breite und $Höhe",“SystemInformation“,0)
Das funktioniert einwandfrei, wenn die Anzeigeskalierung bei 100 % steht.
Starte ich allerdings z.B. von einem Rechner mit einer Auflösung von 3840x2160 und einer Skalierung von 225 %, dann zeigt mir obiges Skript ausgeführt mit:
PowerShell.exe: 1707 x 960
PowerShell_ISE.exe: 3840 x 2160
oder bei 150 %:
PowerShell.exe: 2560 x 1440
PowerShell_ISE.exe: 3840 x 2160
Die Messagebox aus PowerShell.exe sieht matschig aus und zeigt die falsche Auflösung. PowerShell_ISE.exe scheint auf die Skalierung zu reagieren und zeigt die richtige Auflösung.
Meine Idee war, das Skript einfach bei Benutzeranmeldung automatisch in PowerShell_ISE.exe zu starten, aber das ist mir nicht gelungen. Den Skalierungsfaktor zu ermitteln, scheint kompliziert zu sein, denn die Umsetzung unterscheidet sich von Windows 7 bis 10.
Ich freue mich über jeden Tipp.
Gruß, Eric