繁体   English   中英

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

[英]How to detect when a device is added to the system?

我已经有一段时间这个问题了,但是由于我现在必须解决它,所以我必须纠正它。 我试图检测何时将设备连接到Windows 7中的系统,并且收到WM_DEVICECHANGE很好,但是wParam中的消息始终为DBT_DEVNODES_CHANGED。 永远不要使用DBT_DEVICEARRIVAL或DBT_DEVICEREMOVECOMPLETE。 到目前为止,我还没有运气好,所以我希望有人能在几个小时后找到合适的东西之前将我指向正确的方向:)感谢您的时间。

该文档指出,默认情况下应接收DBT_DEVICEARRIVAL和DBT_DEVICEREMOVECOMPLETE事件。 应用程序可以通过调用RegisterDeviceNotification函数进行注册以接收更多详细事件。 希望您注册应用后会收到所需的事件。 确保关闭时调用UnregisterDeviceNotification。

RegisterDeviceNotification参考:

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

P /调用签名:

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

UnregisterDeviceNotification参考:

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

P /调用签名:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM