Класс Win32_PointingDevice предоставляет информацию про компьютерную мышь или любое другое устройство для управления курсором на рабочем столе и является потомком класса CIM_PointingDevice.
У класса есть два метода (Reset и SetPowerState), но они не реализованы. Все свойства класса Win32_PointingDevice доступны только для чтения и практически те же, что и для класса Win32_Keyboard. Поэтому, я рассмотрю только наиболее значимые. Ключевым свойством является DeviceID – идентификатор мыши, значение которого не совсем удобно для чтения, так как именно свойство DeviceID должно использоваться при выполнении метода GET для получения конкретного экземпляра класса.
Класс находится в пространстве имен CIMV2, динамическая библиотека Cimwin32.dll, MOF файл Cimwin32.dll, провайдер Win32.
Для быстрого просмотра свойств и методов можете использовать утилиту 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); |
Аналогичную информацию мы можем получить средствами утилиты WMIC командной строки. Просто выполните в консоли следующий запрос:
WMIC PATH Win32_PointingDevice |
Вывод будет произведен в виде таблицы, поэтому лучше перенаправить его в файл для лучшей читабельности данных, для фильтрации свойств используйте оператор GET (пример в самом верху статьи).