Класс Win32_PointingDevice — информация про компьютерную мышь

Класс Win32_PointingDevice — информация про компьютерную мышь Объектная модель Windows Management Instrumentation

Класс Win32_PointingDevice предоставляет информацию про компьютерную мышь или любое другое устройство для управления курсором на рабочем столе и является потомком класса CIM_PointingDevice.

У класса есть два метода (Reset и SetPowerState), но они не реализованы. Все свойства класса Win32_PointingDevice доступны только для чтения и практически те же, что и для класса Win32_Keyboard. Поэтому, я рассмотрю только наиболее значимые. Ключевым свойством является DeviceID – идентификатор мыши, значение которого не совсем удобно для чтения, так как именно свойство DeviceID должно использоваться при выполнении метода GET для получения конкретного экземпляра класса.

Класс находится в пространстве имен CIMV2, динамическая библиотека Cimwin32.dll, MOF файл Cimwin32.dll, провайдер Win32.

Просмотр свойств и методов класса Win32_PointingDevice

Для быстрого просмотра свойств и методов можете использовать утилиту WMI CIM Studio (просто выберите в левой панели класс Win32_PointingDevice, а в правой панели перейдите на вкладку Properties или Methods).

Что бы быстро просмотреть описание класса Win32_PointingDevice и сохранить его в файле, просто выполните в командной строке:

wmic CLASS Win32_PointingDevice GET>"Путь к htm файлу"

После выполнения данной команды будет получен в виде HTML разметки список свойств и методов.

Может показаться странным тот факт, что в системе присутствуют несколько компьютерных мышей, но как упоминалось выше, класс позволяет обрабатывать все устройства, имеющие доступ к указателю. Кроме того, если у вас ноутбук, то одним Тачпадом пользоваться неудобно, у меня, например, к ноутбуку подключена беспроводная мышь.

Как уже упоминалось, при использовании метода GET для получения информации о мыши, нужно передавать значение свойства DeviceID. Для просмотра значения можно снова воспользоваться возможностями утилиты командной строи WMIC и выполнить команду:

wmic PATH Win32_PointingDevice GET DeviceID

В моем случае я получу значение как для беспроводной мыши, так и для Тачпада ноутбука:

DeviceID
ACPIETD00014&C9A0E36&0
HIDVID_04F3&PID_02F4&COL016&31A8D87F&0&0000

Хорошо, теперь, как я и обещал, рассмотрим некоторые свойства из данного класса.

Свойства Win32_PointingDevice

Availability – Статус устройства, унаследовано от класса CIM_LogicalDevice

CaptionКороткое описание устройства, унаследовано от класса CIM_ManagedSystemElement

DescriptionПолное описание устройства, унаследовано от класса CIM_ManagedSystemElement

DeviceIDсвойство хранит уникальный идентификатор для устройства,унаследовано от класса CIM_LogicalDevice

DeviceInterfaceпозволяет получить информацию о типе интерфейса:

  • 1 — Other
  • 2 — Неизвестно
  • 3 — Serial
  • 4 — PS/2
  • 5 — Infrared
  • 6 — HP-HIL
  • 7 — Bus Mouse
  • 8 — ADB (Apple Desktop Bus)
  • 160 — Bus Mouse DB-9
  • 161 — Bus Mouse Micro-DIN
  • 162 — USB

Handednessпозволяет получить информацию о настройке кнопок (для правши или для левши):

  • 0 — Unknown
  • 1 — Not Applicable
  • 2 — мышь для правши
  • 3 — мышь для левши

HardwareType – тип оборудования, например, «MICROSOFT PS2 MOUSE»

InfFileName– имя .ini файла, который хранит информацию о устройстве.

Manufacturerназвание производителя.

Nameназвание устройства, унаследовано от класса CIM_ManagedSystemElement

NumberOfButtonsколичество кнопок, унаследовано от класса CIM_PointingDevice

SystemNameИмя компьютера, в котором работает устройство, унаследовано от класса CIM_LogicalDevice

Как всегда на закуску два примера сценариев на языках vbscript (Win32_PointingDevice.vbs) и jscript (Win32_PointingDevice.js). Логика работы проста – получаем доступ к нужному классу, формируем коллекцию экземпляров класс и с помощью цикла начинаем извлекать все свойства, тем самым получаем информацию о компьютерной мыши.

'**************************************************************
' Информация про компьютерную мышь
' Win32_PointingDevice.vbs 
'**************************************************************
 
Option Explicit
 
Dim objWMIService, colItems, MouseInfo, objItem
 
' Подключаемся к пространству имен
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
' Выполняем WQL запрос для получения всех экземпляров
Set colItems = objWMIService.ExecQuery("Select * from Win32_PointingDevice",,48)
 
MouseInfo = "Информация про компьютерную мышь" & vbCrlf & vbCrlf
 
' Начинаем перебор коллекции
For Each objItem in colItems
    MouseInfo = MouseInfo & "Availability: " & objItem.Availability & vbCrLf
    MouseInfo = MouseInfo & "Caption: " & objItem.Caption & vbCrLf
    MouseInfo = MouseInfo & "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode & vbCrLf
    MouseInfo = MouseInfo & "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig & vbCrLf
    MouseInfo = MouseInfo & "CreationClassName: " & objItem.CreationClassName & vbCrLf
    MouseInfo = MouseInfo & "Description: " & objItem.Description & vbCrLf
    MouseInfo = MouseInfo & "DeviceID: " & objItem.DeviceID & vbCrLf
    ' Определяем тип интерфейса
    Select Case objItem.DeviceInterface
        Case 1
            MouseInfo = MouseInfo & "DeviceInterface: Другой" & vbCrLf
        Case 2
            MouseInfo = MouseInfo & "DeviceInterface: Неизвестно" & vbCrLf
        Case 3
            MouseInfo = MouseInfo & "DeviceInterface: Serial" & vbCrLf
        Case 4
            MouseInfo = MouseInfo & "DeviceInterface: PS/2" & vbCrLf
        Case 5
            MouseInfo = MouseInfo & "DeviceInterface: Infrared" & vbCrLf
        Case 6
            MouseInfo = MouseInfo & "DeviceInterface: HP-HIL" & vbCrLf
        Case 7
            MouseInfo = MouseInfo & "DeviceInterface: Bus Mouse" & vbCrLf
        Case 8
            MouseInfo = MouseInfo & "DeviceInterface: ADB (Apple Desktop Bus)" & vbCrLf
        Case 160
            MouseInfo = MouseInfo & "DeviceInterface: Bus Mouse DB-9" & vbCrLf
        Case 161
            MouseInfo = MouseInfo & "DeviceInterface: Bus Mouse Micro-DIN" & vbCrLf
        Case Else
            MouseInfo = MouseInfo & "DeviceInterface: USB" & vbCrLf
    End Select
    MouseInfo = MouseInfo & "DeviceInterface: " & objItem.DeviceInterface & vbCrLf
    MouseInfo = MouseInfo & "DoubleSpeedThreshold: " & objItem.DoubleSpeedThreshold & vbCrLf
    MouseInfo = MouseInfo & "ErrorCleared: " & objItem.ErrorCleared & vbCrLf
    MouseInfo = MouseInfo & "ErrorDescription: " & objItem.ErrorDescription & vbCrLf
    Select Case objItem.Handedness
        Case 0
            MouseInfo = MouseInfo & "Handedness: Неизвестно" & vbCrLf
        Case 1
            MouseInfo = MouseInfo & "Handedness: Not Applicable" & vbCrLf
        Case 2
            MouseInfo = MouseInfo & "Handedness: для правши" & vbCrLf
        Case Else
            MouseInfo = MouseInfo & "Handedness: для левши" & vbCrLf
    End Select
    MouseInfo = MouseInfo & "HardwareType: " & objItem.HardwareType & vbCrLf
    MouseInfo = MouseInfo & "InfFileName: " & objItem.InfFileName & vbCrLf
    MouseInfo = MouseInfo & "InfSection: " & objItem.InfSection & vbCrLf
    MouseInfo = MouseInfo & "InstallDate: " & objItem.InstallDate & vbCrLf
    MouseInfo = MouseInfo & "IsLocked: " & objItem.IsLocked & vbCrLf
    MouseInfo = MouseInfo & "LastErrorCode: " & objItem.LastErrorCode & vbCrLf
    MouseInfo = MouseInfo & "Manufacturer: " & objItem.Manufacturer & vbCrLf
    MouseInfo = MouseInfo & "Name: " & objItem.Name & vbCrLf
    MouseInfo = MouseInfo & "NumberOfButtons: " & objItem.NumberOfButtons & vbCrLf
    MouseInfo = MouseInfo & "PNPDeviceID: " & objItem.PNPDeviceID & vbCrLf
    MouseInfo = MouseInfo & "PointingType: " & objItem.PointingType & vbCrLf
    MouseInfo = MouseInfo & "PowerManagementCapabilities: " & objItem.PowerManagementCapabilities & vbCrLf
    MouseInfo = MouseInfo & "PowerManagementSupported: " & objItem.PowerManagementSupported & vbCrLf
    MouseInfo = MouseInfo & "QuadSpeedThreshold: " & objItem.QuadSpeedThreshold & vbCrLf
    MouseInfo = MouseInfo & "Resolution: " & objItem.Resolution & vbCrLf
    MouseInfo = MouseInfo & "SampleRate: " & objItem.SampleRate & vbCrLf
    MouseInfo = MouseInfo & "Status: " & objItem.Status & vbCrLf
    MouseInfo = MouseInfo & "StatusInfo: " & objItem.StatusInfo & vbCrLf
    MouseInfo = MouseInfo & "Synch: " & objItem.Synch & vbCrLf
    MouseInfo = MouseInfo & "SystemCreationClassName: " & objItem.SystemCreationClassName & vbCrLf
    MouseInfo = MouseInfo & "SystemName: " & objItem.SystemName & vbCrLf
    MouseInfo = MouseInfo & "###########################################" & vbCrLf & vbCrLf
Next
' Выводим значение переменной MouseInfo
WScript.Echo MouseInfo
//**************************************************************
// Информация про компьютерную мышь
// Win32_PointingDevice.js 
//**************************************************************
 
var objWMIService, colItems, MouseInfo, objItem, enumItems;
var wbR = 0x10, wbF = 0x20;
 
objWMIService = GetObject("winmgmts:\\\\.\\root\\CIMV2");
colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PointingDevice", "WQL", wbR | wbF);
 
MouseInfo = "Информация про компьютерную мышь\n\n";
 
// начинае перебор коллекции
enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext()) {
    objItem = enumItems.item();
 
    MouseInfo += "Availability: " + objItem.Availability + "\n";
    MouseInfo += "Caption: " + objItem.Caption + "\n";
    MouseInfo += "ConfigManagerErrorCode: " + objItem.ConfigManagerErrorCode + "\n";
    MouseInfo += "ConfigManagerUserConfig: " + objItem.ConfigManagerUserConfig + "\n";
    MouseInfo += "CreationClassName: " + objItem.CreationClassName + "\n";
    MouseInfo += "Description: " + objItem.Description + "\n";
    MouseInfo += "DeviceID: " + objItem.DeviceID + "\n";
    // Определяем тип интерфейса
    switch (objItem.DeviceInterface){
        case 1: MouseInfo += "DeviceInterface: Другой\n";
        case 2: MouseInfo += "DeviceInterface: Неизвестно\n";
        case 3:MouseInfo += "DeviceInterface: Serial\n";
        case 4:MouseInfo += "DeviceInterface: PS/2\n";
        case 5:MouseInfo += "DeviceInterface: Infrared\n";
        case 6:MouseInfo += "DeviceInterface: HP-HIL\n";
        case 7:MouseInfo += "DeviceInterface: Bus Mouse\n";
        case 8:MouseInfo += "DeviceInterface: ADB (Apple Desktop Bus)\n";
        case 160:MouseInfo += "DeviceInterface: Bus Mouse DB-9\n";
        case 161:MouseInfo += "DeviceInterface: Bus Mouse Micro-DIN\n";
        default:MouseInfo += "DeviceInterface: USB\n";
    }
    MouseInfo += "DeviceInterface: " + objItem.DeviceInterface + "\n";
    MouseInfo += "DoubleSpeedThreshold: " + objItem.DoubleSpeedThreshold + "\n";
    MouseInfo += "ErrorCleared: " + objItem.ErrorCleared + "\n";
    MouseInfo += "ErrorDescription: " + objItem.ErrorDescription + "\n";
    switch (objItem.Handedness){
        case 0:MouseInfo += "Handedness: Неизвестно\n";
        case 1:MouseInfo += "Handedness: Not Applicable\n";
        case 2:MouseInfo += "Handedness: для правши\n";
        default:MouseInfo += "Handedness: для левши\n";
    }
    MouseInfo += "HardwareType: " + objItem.HardwareType + "\n";
    MouseInfo += "InfFileName: " + objItem.InfFileName + "\n";
    MouseInfo += "InfSection: " + objItem.InfSection + "\n";
    MouseInfo += "InstallDate: " + objItem.InstallDate + "\n";
    MouseInfo += "IsLocked: " + objItem.IsLocked + "\n";
    MouseInfo += "LastErrorCode: " + objItem.LastErrorCode + "\n";
    MouseInfo += "Manufacturer: " + objItem.Manufacturer + "\n";
    MouseInfo += "Name: " + objItem.Name + "\n";
    MouseInfo += "NumberOfButtons: " + objItem.NumberOfButtons + "\n";
    MouseInfo += "PNPDeviceID: " + objItem.PNPDeviceID + "\n";
    MouseInfo += "PointingType: " + objItem.PointingType + "\n";
    MouseInfo += "PowerManagementCapabilities: " + objItem.PowerManagementCapabilities + "\n";
    MouseInfo += "PowerManagementSupported: " + objItem.PowerManagementSupported + "\n";
    MouseInfo += "QuadSpeedThreshold: " + objItem.QuadSpeedThreshold + "\n";
    MouseInfo += "Resolution: " + objItem.Resolution + "\n";
    MouseInfo += "SampleRate: " + objItem.SampleRate + "\n";
    MouseInfo += "Status: " + objItem.Status + "\n";
    MouseInfo += "StatusInfo: " + objItem.StatusInfo + "\n";
    MouseInfo += "Synch: " + objItem.Synch + "\n";
    MouseInfo += "SystemCreationClassName: " + objItem.SystemCreationClassName + "\n";
    MouseInfo += "SystemName: " + objItem.SystemName + "\n";
    MouseInfo += "###########################################\n\n";
}
 
// Выводим результат на экран 
WScript.Echo (MouseInfo);
Информация про компьютерную мышь средствами Windows Script Host

Аналогичную информацию мы можем получить средствами утилиты WMIC командной строки. Просто выполните в консоли следующий запрос:

WMIC PATH Win32_PointingDevice

Вывод будет произведен в виде таблицы, поэтому лучше перенаправить его в файл для лучшей читабельности данных, для фильтрации свойств используйте оператор GET (пример в самом верху статьи).

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