У меня уже есть некоторый рабочий код 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")