在VirtualBox中运行的Windows 10上检测USB输入设备的插入/拔出

3

我已经有一些有效的Python代码,可以检测Windows 10中特定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")

我希望在运行在Windows 10上的Python脚本中使用这段代码,它在Ubuntu 18.04 (x64)上的VirtualBox 6.0.22中运行,并已安装VirtualBox Guest Additions。

不幸的是,这个脚本无法正常工作,因为插入或移除USB键盘时没有显示任何消息。难道需要更改VirtualBox的配置吗?

然而,在退出脚本时出现以下错误:流程以退出代码-1结束

1个回答

3
首先,不要使用while 1:,而是使用while True:。然后,确保您的USB驱动程序在VirtualBox中正确配置(这个链接可能会有所帮助)。我发现Process finished with exit code -1与PyCharm有关,不确定您是否在使用它。希望这可以帮助您。

非常感谢您的提示。不幸的是,我的Ubuntu系统上的VirtualBox没有显示任何连接的USB设备可供选择(与链接中描述的不同)。 - Atalanttore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接