Подтвердить что ты не робот

Получить разрешение экрана с помощью WMI/powershell в Windows 7

Я использую следующий script, чтобы получить разрешение экрана в Windows с использованием WMI. script отлично работает, когда компьютер находится в ландшафтном режиме, но возвращается в портретном режиме. Работает правильно в XP и не пробовал в Vista. Может ли кто-нибудь подтвердить, что это ошибка в Windows 7 WMI.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_DesktopMonitor",,48) 
For Each objItem in colItems 
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Win32_DesktopMonitor instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "ScreenHeight: " & objItem.ScreenHeight
    Wscript.Echo "ScreenWidth: " & objItem.ScreenWidth
Next
4b9b3361

Ответ 1

Для записи код PowerShell:

Get-WmiObject -Class Win32_DesktopMonitor | Select-Object ScreenWidth,ScreenHeight

Я получаю те же значения в Пейзаж или в портретном режиме.

UPDATE:

В среде с несколькими мониторами вы можете получить информацию обо всех мониторах с помощью:

PS> Add-Type -AssemblyName System.Windows.Forms
PS> [System.Windows.Forms.Screen]::AllScreens


BitsPerPixel : 32
Bounds       : {X=0,Y=0,Width=1280,Height=800}
DeviceName   : \\.\DISPLAY1
Primary      : True
WorkingArea  : {X=0,Y=0,Width=1280,Height=770}

BitsPerPixel : 32
Bounds       : {X=1280,Y=0,Width=1920,Height=1200}
DeviceName   : \\.\DISPLAY2
Primary      : False
WorkingArea  : {X=1280,Y=0,Width=1920,Height=1170}

Ответ 2

Вы можете захватить это из класса Win32_VideoController WMI. Свойство VideoModeDescription включает разрешение экрана и глубину цвета.

(Get-WmiObject -Class Win32_VideoController).VideoModeDescription;

Результат

1600 x 900 x 4294967296 colors

Ответ 3

То же, что и другие ответы, однако для простого cmd:

wmic path Win32_VideoController get VideoModeDescription

Ответ 4

@Say Levy отвечает выше, точно сообщает о ширине/высоте, которая была активной при запуске сеанса powershell. Если вы поворачиваете монитор после запуска PS, он продолжает сообщать исходные, теперь неправильные значения.

Класс SystemInformation предоставляет другой способ получения ориентации, и он изменяется в текущем сеансе PS, даже если дисплей поворачивается после запуска сеанса.

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SystemInformation]::ScreenOrientation
Angle0

[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize
IsEmpty                            Width                           Height
-------                            -----                           ------
False                              1680                             1050

Поверните монитор, затем...

[System.Windows.Forms.SystemInformation]::ScreenOrientation
Angle90

[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize
IsEmpty                            Width                           Height
-------                            -----                           ------
False                              1050                             1680

https://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation(v=vs.110).aspx

Ответ 5

Вы можете получить все доступные разрешения с помощью этой команды:

$Query = "SELECT * FROM CIM_VideoControllerResolution"
$res = Get-WMIObject -query $Query | Select Caption