Обнаружение вставки / извлечения устройств ввода USB на Windows 10 - PullRequest
0 голосов
/ 11 апреля 2020

У меня уже есть некоторый рабочий код Python для обнаружения вставки некоторых типов USB-устройств (от здесь ).

import wmi

raw_wql = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA \'Win32_USBHub\'"
c = wmi.WMI()
watcher = c.watch_for(raw_wql=raw_wql)
while 1:
    usb = watcher()
    print(usb)

К сожалению, этот скрипт не обнаруживает вставку все типы USB-устройств. Это означает, что обнаружена вставка USB fla sh накопителей, а USB-устройств ввода нет. Удаление USB-устройств вообще не определяется.

Можно ли соответствующим образом расширить существующий скрипт?

РЕДАКТИРОВАТЬ: улучшенный WQL-запрос и Python код

Я улучшил WQL-запрос и Python код на основе информации, полученной в MSDN .

Следующий скрипт предназначен для вывода сообщения, когда USB Клавиатура подключена или отключена.

Проблема: При подключении USB-клавиатуры не появляется никаких сообщений, но оба сообщения («Клавиатура подключена» и «Клавиатура отключена») появляются, когда USB клавиатура отключена. Что не так с этим кодом?

import wmi

device_connected_wql = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA \'Win32_Keyboard\'"
device_disconnected_wql = "SELECT * FROM __InstanceDeletionEvent WITHIN 2 WHERE TargetInstance ISA \'Win32_Keyboard\'"

c = wmi.WMI()
connected_watcher = c.watch_for(raw_wql=device_connected_wql)
disconnected_watcher = c.watch_for(raw_wql=device_disconnected_wql)

while 1:
    connected = connected_watcher()
    disconnected = disconnected_watcher()
    if connected:
        print("Keyboard connected")
    if disconnected:
        print("Keyboard disconnected")
...