Класс 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. Теперь давайте рассмотрим, какую информацию о нем можно получить (правая панель).

Просмотр свойств в утилите WMI CIM Studio - параметры монитора компьютера

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

основные параметры монитора компьютера в CIM Studio

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

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

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

просмотр основных параметров монитора компьютера

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

WMIC CLASS Win32_DesktopMonitor

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

WMIC PATH Win32_DesktopMonitor GET /FORMAT:HFORM>d:\work\info.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
'**************************************************************
Option explicit
 
dim objService, colItems, objItem
dim MonitorInfo, objClassProperty
dim FSO, TempPath, TxtFile
 
Set objService = GetObject("WinMgmts:\\.\Root\CIMV2")
Set colItems = objService.ExecQuery("SELECT * FROM Win32_DesktopMonitor")
 
MonitorInfo = "Основные параметры монитора компьютера" & vbCrLf & vbCrLf
 
' Начинаем перебор коллекции
For Each objItem in colItems
    ' Начинаем перебор всех свойств для текущего экземпляра класса WMI
    For Each objClassProperty In objItem.Properties_
        ' Если значение больше 0
        If Len(objClassProperty.value)>0 Then
            MonitorInfo = MonitorInfo & objClassProperty.Name &"= " & objClassProperty.value &vbCrLf
        End If
    Next
    MonitorInfo = MonitorInfo & "----------------------------------------------" &vbCrLf &vbCrLf
Next
 
ShowInNotepad(MonitorInfo)
 
'Процедура создания временного файла с данными
Sub ShowInNotepad(StrToFile)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    TempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & FSO.GetTempName
    Set TxtFile = FSO.CreateTextFile(TempPath)
    TxtFile.WriteLine(StrToFile)
    TxtFile.Close
    CreateObject("WScript.Shell").Run "wordpad.exe " & TempPath
End Sub

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

//**************************************************************
// Параметры монитора
// Win32_DesktopMonitor.js
//**************************************************************
 
var objWMIService, colItems, objItem
var MonitorInfo, objItemC, objClassPropertyC, objClassProperty, strVal
var TempPath, TxtFile
 
// Получаем доступ к инструментарию Windows Management Instrumentation
objWMIService = GetObject("WinMgmts:\\\\.\\Root\\CIMV2");
// выполняем WQL запрос и получаем коллекцию
colItems = objWMIService.ExecQuery ("Select * from Win32_DesktopMonitor");
 
// Начинаем перебор коллекции
objItem = new Enumerator(colItems);
 
MonitorInfo = "Основные параметры монитора компьютера\n\n";
 
for (; !objItem.atEnd(); objItem.moveNext()) {
    objItemC = objItem.item();
    // Начинаем перебор всех свойств для текущего экземпляра класса WMI
    objClassPropertyC = new Enumerator(objItemC.Properties_);
 
    for (; !objClassPropertyC.atEnd(); objClassPropertyC.moveNext()) {
    objClassProperty = objClassPropertyC.item();
            // Если значение больше 0
            strVal = objClassProperty.value
            if (strVal != null){
                MonitorInfo+= objClassProperty.Name + "= " + objClassProperty.value + "\n";
            }
    }
    MonitorInfo += "----------------------------------------------\n\n";
}
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.

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