Python 在运行VirtualBox的Windows 10上检测USB输入设备的插入/删除

Python 在运行VirtualBox的Windows 10上检测USB输入设备的插入/删除,python,windows-10,usb,virtualbox,Python,Windows 10,Usb,Virtualbox,我已经有了一些Python代码,可以检测Windows 10中特定USB设备类型的插入/删除(从) 我想在一个Python脚本中使用这段代码,该脚本在Ubuntu18.04(x64)上的VirtualBox的Windows10上运行。已安装VirtualBox来宾添加 不幸的是,该脚本无法工作,因为在插入或删除USB键盘时,它不会显示任何消息。是否需要为此更改VirtualBox配置 但是,退出脚本时会出现以下错误: 过程使用退出代码-1完成。首先,使用而不是而不是而使用1:,如果为True:。

我已经有了一些Python代码,可以检测Windows 10中特定USB设备类型的插入/删除(从)

我想在一个Python脚本中使用这段代码,该脚本在Ubuntu18.04(x64)上的VirtualBox的Windows10上运行。已安装VirtualBox来宾添加

不幸的是,该脚本无法工作,因为在插入或删除USB键盘时,它不会显示任何消息。是否需要为此更改VirtualBox配置

但是,退出脚本时会出现以下错误:
过程使用退出代码-1完成。首先,使用
而不是
而不是
而使用1:
,如果为True:
。然后,确保在VirtualBox中正确配置了USB驱动器(这可能会有所帮助)。对于退出代码为-1的
过程,我发现所有这些都与PyCharm,idk有关,如果您使用这个。希望这能有所帮助。

非常感谢您的提示。不幸的是,我的Ubuntu系统上的VirtualBox没有显示任何可供选择的连接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:
    try:
        connected = connected_watcher(timeout_ms=10)
    except wmi.x_wmi_timed_out:
      pass
    else:
        if connected:
            print("Keyboard connected")

    try:
        disconnected = disconnected_watcher(timeout_ms=10)
    except wmi.x_wmi_timed_out:
      pass
    else:
        if disconnected:
            print("Keyboard disconnected")