Я пытаюсь получить максимальное поддерживаемое разрешение обоих моих мониторов с помощью WMI (поскольку он будет частью VBScript) Я пробовал следующие команды WMI, но я либо получить неверный результат или получить информацию только для одного монитора.Получите максимальное поддерживаемое разрешение всех подключенных мониторов
C:\>wmic path win32_videocontroller get videomodedescription /format:list
VideoModeDescription=1366 x 768 x 4294967296 colors
C:\>wmic path win32_displaycontrollerconfiguration get videomode /format:list
VideoMode=1024 by 768 pixels, True Color, 60 Hertz
Согласно Настройки дисплея, мой ноутбук монитор 1366x768 ... Нет подсказкой, где WMI становится 1024x768 с. Кроме того, если я изменить разрешение моего ноутбука монитора Настройка дисплея в 800х600, я получаю это:
C:\>wmic path win32_videocontroller get videomodedescription
VideoModeDescription=800 x 600 x 4294967296 colors
Таким образом, команда, которая точно сообщает мое текущее разрешение не говорит мне, что мое максимальное разрешение. (Меня не волнует, если глухие конечные пользователи поворачивают свое разрешение вниз, я просто хочу знать, какое разрешение их монитор способен поддерживать.)
Как вы можете видеть, ни один из этих методов пока не показал мне никаких информация о внешнем мониторе я также подключил к своему ноутбуку. Если я использую Win32_DesktopMonitor
, я получаю информацию о внешнем мониторе, но не о его разрешении.
C:\>wmic path win32_desktopmonitor get /format:list
Availability=8
Bandwidth=
Caption=HP L1710 LCD Monitor
ConfigManagerErrorCode=0
ConfigManagerUserConfig=FALSE
CreationClassName=Win32_DesktopMonitor
Description=HP L1710 LCD Monitor
DeviceID=DesktopMonitor1
DisplayType=
ErrorCleared=
ErrorDescription=
InstallDate=
IsLocked=
LastErrorCode=
MonitorManufacturer=Hewlett-Packard
MonitorType=HP L1710 LCD Monitor
Name=HP L1710 LCD Monitor
PixelsPerXLogicalInch=96
PixelsPerYLogicalInch=96
PNPDeviceID=DISPLAY\HWP26EB\4&298A3A3E&0&UID16843008
PowerManagementCapabilities=
PowerManagementSupported=
ScreenHeight=
ScreenWidth=
Status=OK
StatusInfo=
SystemCreationClassName=Win32_ComputerSystem
Итак, есть ли способ с помощью VBScript (либо с помощью WMI или нет), чтобы получить максимальное поддерживаемое разрешение каждого подключенного монитора?
Обновление: Я просто побежал это на удаленном компьютере, на котором пользователь имеет внешний монитор подключен непосредственно в свой ноутбук, в то время как шахта подключен к док-станции.
C:\>winrs -r:remotehostname wmic path win32_videocontroller get videomodedescription
VideoModeDescription
1920 x 1080 x 4294967296 colors
1440 x 900 x 4294967296 colors
Upated 2: Использование WMI Explorer Я нашел эту команду, которая отображает каждый поддерживаемый режим. Выход слишком длинный для публикации, но я включил вывод для одного поддерживаемого режима.
wmic /namespace:\\ROOT\WMI path WmiMonitorListedSupportedSourceModes get MonitorSourceModes /format:list
__PATH=
__NAMESPACE=
__SERVER=
__DERIVATION={}
__PROPERTY_COUNT=28
__RELPATH=
__DYNASTY=VideoModeDescriptor
__SUPERCLASS=
__CLASS=VideoModeDescriptor
__GENUS=2
CompositePolarityType = 2
HorizontalActivePixels = 1366
HorizontalBlankingPixels = 160
HorizontalBorder = 0
HorizontalImageSize = 310
HorizontalPolarityType = 1
HorizontalRefreshRateDenominator = 763
HorizontalRefreshRateNumerator = 24100000
HorizontalSyncOffset = 48
HorizontalSyncPulseWidth = 32
IsInterlaced = False
IsSerrationRequired = 2
IsSyncOnRGB = 2
Origin = 2
PixelClockRate = 48200000
StereoModeType = 0
SyncSignalType = 3
TimingType = 4
VerticalActivePixels = 768
VerticalBlankingPixels = 22
VerticalBorder = 0
VerticalImageSize = 174
VerticalPolarityType = 1
VerticalRefreshRateDenominator = 60277
VerticalRefreshRateNumerator = 2410000
VerticalSyncOffset = 3
VerticalSyncPulseWidth = 5
VideoStandardType = 0
HorizontalActivePixels
и VerticalActivePixels
дать мне размеры я ищу. Существует два экземпляра класса WmiMonitorListedSupportedSourceModes
, по одному для каждого монитора. Теперь вопрос заключается в том, как просмотреть массив MonitorSourceModes
, чтобы найти максимальное разрешение для каждого экземпляра. :(
Для тех, кто ищет эквивалент VBScript к @TessellatingHeckler «s отличной PowerShell ответ:.
strComputer = "."
strQuery = "SELECT PreferredMonitorSourceModeIndex, MonitorSourceModes " & _
"FROM WmiMonitorListedSupportedSourceModes"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\ROOT\WMI")
Set colItems = objWMIService.ExecQuery(strQuery, , 48)
For Each objItem In colItems
intIndex = objItem.PreferredMonitorSourceModeIndex
Wscript.StdOut.WriteLine "InstanceName: " & _
objItem.InstanceName
Wscript.StdOut.WriteLine "Horizontal: " & _
objItem.MonitorSourceModes(intIndex).HorizontalActivePixels
Wscript.StdOut.WriteLine "Vertical: " & _
objItem.MonitorSourceModes(objIintIndex).VerticalActivePixels
Wscript.StdOut.WriteLine "__________"
Next
Из [здесь] (https://blogs.technet.microsoft.com/heyscriptingguy/2013/10/03/use-powershell-to-discover-multi-monitor- информация /) в комментариях - это запрос, в котором, по крайней мере, перечислены все мои мониторы: 'gwmi -Query 'выберите * из Win32_PnPEntity, где service =" monitor "'.Также работает как admin 'gwmi -N" root \ wmi "wmiMonitorID' перечисляет все мониторы. Класс WMI «WmiMonitorBasicDisplayParams» покажет максимальный размер изображения ... в сантиметрах. Я просто нашел класс в своем обновлении 2 с этих https://msdn.microsoft.com/en-us/library/windows/desktop/aa392707(v=vs.85).aspx (Edit: PowerShell в моем комментарии) – TessellatingHeckler