代码之家  ›  专栏  ›  技术社区  ›  Dark Star1

如何检测设备何时添加到系统中?

  •  0
  • Dark Star1  · 技术社区  · 14 年前

    这个问题我已经有一段时间了,但我必须要解决它,因为我现在必须解决它。我试图检测一个设备在Windows7中何时连接到系统,并且我接收到wm_设备更改,但是wparam中的消息总是dbt_devnodes_changed。决不允许DBT设备竞争对手或DBT设备移动完成。到目前为止,我还没玩过谷歌,所以我希望有人能在我几个小时内找到东西之前把我指向正确的方向。) 谢谢你抽时间。

    2 回复  |  直到 10 年前
        1
  •  1
  •   fletcher    14 年前

    文档说明默认情况下应接收dbt_devicearRival和dbt_deviceremoveComplete事件。应用程序可以通过调用registerDeviceNotification函数进行注册以接收更详细的事件。希望在注册应用程序后,您能收到所需的活动。关闭时一定要调用UnregisterDeviceNotification。

    注册设备标识参考:

    http://msdn.microsoft.com/en-us/library/aa363431%28v=VS.85%29.aspx

    P/Invoke签名:

    http://pinvoke.net/default.aspx/user32.RegisterDeviceNotification

    注销设备通知引用:

    http://msdn.microsoft.com/en-us/library/aa363475%28v=VS.85%29.aspx

    P/Invoke签名:

    http://pinvoke.net/default.aspx/user32.UnregisterDeviceNotification

        2
  •  0
  •   miniBill    10 年前

    非常感谢弗莱彻。我已经成功地为qt4做了这件事。qt4(.6.3)用户可以添加 #include 文件正常,但您需要添加一些 #defines 到.h文件:

    #define _WIN32_WINNT 0x0501
    #define _WIN32_WINDOWS 0x0501
    #define WINVER 0x0501
    

    使Windows数据类型 DEV_BROADCAST_HEADER 可以识别。另外,我猜版本号取决于您的Windows平台,但不确定(我使用Win7ATM)。 也不要忘记将库添加到.pro文件中。 LIBS += "C:\Qt\2010.04\mingw\lib\<library_file>" 如果安装在默认位置,即。