diff --git a/src/lib/ui/Get-CurrentResolution.psm1 b/src/lib/ui/Get-CurrentResolution.psm1 index 864d4121..8efad0b2 100644 --- a/src/lib/ui/Get-CurrentResolution.psm1 +++ b/src/lib/ui/Get-CurrentResolution.psm1 @@ -5,45 +5,16 @@ function Get-CurrentResolution() { [OutputType([System.Object[]])] param () - # Adapted from: https://www.reddit.com/r/PowerShell/comments/67no9x/comment/dgrry3b/?utm_source=share&utm_medium=web2x&context=3 - $NumberOfScreens = (Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams | Where-Object { $_.Active -like "True" }).Active.Count - $ScreenWidth = $null - $ScreenHeight = $null + Add-Type -AssemblyName System.Windows.Forms - Write-Verbose "Num. of Monitors: $NumberOfScreens" + # Get the primary screen's working area, which takes DPI scaling into account + $PrimaryScreen = [System.Windows.Forms.Screen]::PrimaryScreen + $WorkingArea = $PrimaryScreen.WorkingArea - If ($NumberOfScreens -eq 1) { - # Accepts Scaling/DPI - [System.Windows.Forms.SystemInformation]::VirtualScreen | ForEach-Object { - Write-Verbose "W: $($_.Width) | H: $($_.Height)" + $ScreenWidth = $WorkingArea.Width + $ScreenHeight = $WorkingArea.Height - If (!$ScreenWidth -or !$ScreenHeight) { - $ScreenWidth = $_.Width - $ScreenHeight = $_.Height - } + Write-Verbose "Primary Monitor: Width: $ScreenWidth, Height: $ScreenHeight (DPI Scaled)" - If (($_.Width) -and ($_.Width -le $ScreenWidth)) { - $ScreenWidth = $_.Width - $ScreenHeight = $_.Height - } - } - } Else { - # Doesn't accepts Scaling/DPI (rollback method) - Get-CimInstance -Class "Win32_VideoController" | ForEach-Object { - Write-Verbose "W: $($_.CurrentHorizontalResolution) | H: $($_.CurrentVerticalResolution)" - - If (!$ScreenWidth -or !$ScreenHeight) { - $ScreenWidth = $_.CurrentHorizontalResolution - $ScreenHeight = $_.CurrentVerticalResolution - } - - If (($_.CurrentHorizontalResolution) -and ($_.CurrentHorizontalResolution -le $ScreenWidth)) { - $ScreenWidth = $_.CurrentHorizontalResolution - $ScreenHeight = $_.CurrentVerticalResolution - } - } - } - - Write-Verbose "Width: $ScreenWidth, Height: $ScreenHeight" return $ScreenWidth, $ScreenHeight }