Класс Win32_DesktopMonitor — Информация о параметрах монитора компьютера

Класс Win32_DesktopMonitor — Информация о параметрах монитора компьютера Объектная модель Windows Management Instrumentation

Приветствую всех читателей блога scriptcoding.ru. В данной статье мы рассмотрим работу с классом WMI Win32_DesktopMonitor, который дает возможность узнать основные параметры монитора компьютера.

Класс WMI Win32_DesktopMonitor позволяет получить информацию о параметрах монитора компьютера, подключенного к системе. Начиная с операционной системы Windows Vista, свойства данного класса заменяет Win32_DisplayConfiguration. Класс WMI Win32_DesktopMonitor содержит в своем составе порядка 28 свойств, которые в основном позволяют определить технические параметры монитора.

Класс Win32_DesktopMonitor происходит от CIM_DesktopMonitor, который является производным от CIM_Display. CIM_Display происходит от CIM_UserDevice, который является производным от CIM_LogicalDevice.

Информация о параметрах монитора компьютера может быть получена не только через сценарии, но и с помощью утилиты WMI CIM Studio. Откройте данную утилиту, подключитесь к пространству именrootCIMV2, в левой панели выберите класс Win32_DesktopMonitor. Теперь давайте рассмотрим, какую информацию о нем можно получить (правая панель).

На вкладке Properies можно просмотреть список всех доступных свойств, свойство отмеченное ключиком (DeviceID) является ключевым. Так как методы у класса не реализованы и ассоциативных связей нет, то вкладки Associations и Methods не представляют интереса.

Что бы просмотреть информацию об экземплярах класса (информацию о доступных мониторах), нужно нажать на кнопку Instances. Так как я работаю с ноутбука, то и экземпляр только один. Если нажать дважды по имени экземпляра класса WMI, то можно просмотреть его параметры.

Файлы, связанные с классом — Cimwin32.mof и Cimwin32.dll, сам класс предоставляет провайдер Win32.

Теперь давайте запустим командную строку, и поработаем с утилитой WMIC. Для этого, в консольном окне выполните следующие команды.

Получаем MOF описание класса:

WMIC CLASS Win32_DesktopMonitor

Выводим во внешний документ информацию о параметрах монитора компьютера:

WMIC PATH Win32_DesktopMonitor GET /FORMAT:HFORM>d:workinfo.htm

Значение ключевого свойства DeviceID

WMIC PATH Win32_DesktopMonitor GET DeviceID

Текущее расширение монитора компьютера:

WMIC PATH Win32_DesktopMonitor GET ScreenHeight, ScreenWidth

Получим:

ScreenHeight ScreenWidth

768 1366

Теперь давайте рассмотрим свойства класса.

Свойства класса Win32_DesktopMonitor – параметры монитора

Availability– Содержит информацию относительно доступности и состояния монитора компьютера, (CIM_LogicalDevice). Значения:

  • 1 (0x1) – Другое.
  • 2 (0x2) — Нет данных.
  • 3 (0x3) — Работает/Полная мощность.
  • 4 (0x4) – Предупреждение.
  • 5 (0x5) – Тестируется.
  • 6 (0x6) – Неприменимо.
  • 7 (0x7) — Питание выключено.
  • 8 (0x8) — Автономная работа.
  • 9 (0x9) — Не обслуживает.
  • 10 (0xA) – Деградация.
  • 11 (0xB) — Не установлено.
  • 12 (0xC) — Ошибка установки.
  • 13 (0xD) — Энергосбережение — Нет данных.
  • 14 (0xE) — Энергосбережение — Режим низкого потребления.
  • 15 (0xF) — Энергосбережение — Ждущий режим.
  • 16 (0x10) — Цикл электропитания.
  • 17 (0x11) — Энергосбережение – Предупреждение.

Bandwidth— Максимально допустимая частота в МГц. Если неизвестна, введите 0, (CIM_DesktopMonitor).

Caption– Информация о параметрах монитора компьютера в короткой форме, (CIM_ManagedSystemElement).

ConfigManagerErrorCode– Ошибка конфигурации.

ConfigManagerUserConfig– Определяет, использует ли устройство пользовательские настройки (TRUE или FALSE), (CIM_LogicalDevice).

CreationClassName– Класс, создавший объект, (CIM_LogicalDevice).

Description– Описание параметров монитора, (CIM_ManagedSystemElement).

DeviceID– Уникальный идентификатор монитора, (CIM_LogicalDevice).

DisplayType– Параметр показывает тип монитора или ЭЛТ, (CIM_DesktopMonitor). Значения:

  • 0 — Нет данных.
  • 1 – Другое.
  • 2 — Мультичастотный цветной.
  • 3 — Мультичастотный черно-белый.
  • 4 — Цветной с фиксированной частотой.
  • 5 — Черно-белый с фиксированной частотой.

ErrorCleared— Является логическим значением, указывающим, что ошибка, возвращенная свойством LastErrorCode, устранена, (CIM_LogicalDevice).

ErrorDescription– Содержит описание ошибки, (CIM_LogicalDevice).

InstallDate– Время и дата установки, (CIM_ManagedSystemElement).

IsLocked— Указывает, является ли монитор заблокированным (пользовательский ввод-вывод запрещен), (CIM_UserDevice).

LastErrorCode– Код последней ошибки, которую вернуло устройство, (CIM_LogicalDevice).

MonitorManufacturer– Информация об изготовителе монитора.

MonitorType– Тип монитора компьютера.

Name– Метка монитора, (CIM_ManagedSystemElement).

PixelsPerXLogicalInch– Горизонтальное разрешение монитора.

PixelsPerYLogicalInch– Вертикальное разрешение монитора.

PNPDeviceID— Win32-идентификатор логического устройства Plug and Play, (CIM_LogicalDevice).

PowerManagementCapabilities— Массив параметров питания, связанных с устройством, (CIM_LogicalDevice). Значения:

  • 0 (0x0) – Неизвестно.
  • 1 (0x1) — Не поддерживается.
  • 2 (0x2) – Отключено.
  • 3 (0x3) — Включено.
  • 4 (0x4) — Энергосберегающий режим вводится автоматически.
  • 5 (0x5) – Устанавливается состояние питания.
  • 6 (0x6) – Поддерживается циклическая мощность.
  • 7 (0x7) – Поддерживается временное включение питания.

PowerManagementSupported– Содержит логическое значение, которое указывает, поддерживается ли управление питанием, (CIM_LogicalDevice).

ScreenHeight— Логическая высота экрана (в экранных координатах), (CIM_DesktopMonitor).

ScreenWidth— Логическая ширина экрана (в экранных координатах), (CIM_DesktopMonitor).

Status– Статус устройства, (CIM_ManagedSystemElement).

StatusInfo– Числовое значение, определяющее информацию о статусе, (CIM_LogicalDevice). Значение:

  • 1 (0x1) – Другое.
  • 2 (0x2) – Неизвестно.
  • 3 (0x3) – Включено.
  • 4 (0x4) – Отключено.
  • 5 (0x5) — Не применяется.

SystemCreationClassName— Имя класса создания системы, (CIM_LogicalDevice).

SystemName– Системное имя, (CIM_LogicalDevice).

Приступаем к программированию — основные параметры монитора компьютера

Ну и для закрепления пройденного материала – два сценария Windows Script Host, оба выводят информацию об основных параметрах монитора компьютера во временный внешний файл, который потом зразу открывается в программе WordPad.

Пример программного кода на языке VBScript:

'**************************************************************' Параметры монитора' Win32_DesktopMonitor.vbs'**************************************************************Optionexplicit dim objService, colItems, objItemdim MonitorInfo, objClassPropertydim FSO, TempPath, TxtFile Set objService = GetObject("WinMgmts:\.RootCIMV2")Set colItems = objService.ExecQuery("SELECT * FROM Win32_DesktopMonitor") MonitorInfo = "Основные параметры монитора компьютера" & vbCrLf & vbCrLf ' Начинаем перебор коллекцииForEach objItem in colItems' Начинаем перебор всех свойств для текущего экземпляра класса WMIForEach objClassProperty In objItem.Properties_' Если значение больше 0If Len(objClassProperty.value)>0 ThenMonitorInfo = MonitorInfo & objClassProperty.Name &"= " & objClassProperty.value &vbCrLfEndIfNextMonitorInfo = MonitorInfo & "----------------------------------------------" &vbCrLf &vbCrLfNext ShowInNotepad(MonitorInfo) 'Процедура создания временного файла с даннымиSub ShowInNotepad(StrToFile)Set FSO = CreateObject("Scripting.FileSystemObject")TempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "" & FSO.GetTempNameSet TxtFile = FSO.CreateTextFile(TempPath)TxtFile.WriteLine(StrToFile)TxtFile.CloseCreateObject("WScript.Shell").Run "wordpad.exe " & TempPathEndSub

Пример программного кода на языке JScript:

//**************************************************************// Параметры монитора// Win32_DesktopMonitor.js//************************************************************** var objWMIService, colItems, objItemvar MonitorInfo, objItemC, objClassPropertyC, objClassProperty, strValvar TempPath, TxtFile // Получаем доступ к инструментарию Windows Management InstrumentationobjWMIService = GetObject("WinMgmts:\\.\Root\CIMV2");// выполняем WQL запрос и получаем коллекциюcolItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor"); // Начинаем перебор коллекцииobjItem =new Enumerator(colItems); MonitorInfo ="Основные параметры монитора компьютераnn"; for(;!objItem.atEnd(); objItem.moveNext()){objItemC = objItem.item();// Начинаем перебор всех свойств для текущего экземпляра класса WMIobjClassPropertyC =new Enumerator(objItemC.Properties_); for(;!objClassPropertyC.atEnd(); objClassPropertyC.moveNext()){objClassProperty = objClassPropertyC.item();// Если значение больше 0strVal = objClassProperty.valueif(strVal !=null){MonitorInfo+= objClassProperty.Name+"= "+ objClassProperty.value+"n";}}MonitorInfo +="----------------------------------------------nn";}ShowInNotepad(MonitorInfo) //Функция временного файла с даннымиfunction ShowInNotepad(StrToFile){FSO = WScript.CreateObject("Scripting.FileSystemObject");TempPath = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")+"\"+ FSO.GetTempName();TxtFile = FSO.CreateTextFile(TempPath);TxtFile.WriteLine(StrToFile);TxtFile.Close();WScript.CreateObject("WScript.Shell").Run("wordpad.exe "+ TempPath);}

И так, давайте рассмотрим, как работает программный код. Оба примера содержат практически одинаковые переменные, программный код отвечает за предоставление информации об основных параметрах монитора компьютера. После того, как мы подключились к инструментарию Windows Management Instrumentation, нам нужно получить доступ к объекту Win32_DesktopMonitor, ссылка на объект будет храниться в переменной colItems, далее в цикле FOR и FOR … EACH происходит обработка коллекции. Обратите внимание, что для доступа к коллекции в сценарии JSCRIPTмы применили внутренний объект Enumerator. Функция (процедура) ShowInNotepad отвечает за создание временного файла, запись в него содержимого переменной MonitorInfo и открытие с помощью приложения wordpad.exe.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий