如何检测,当设备被添加到系统中?(How to detect when a device is ad

2019-11-04 01:02发布

我现在已经没有这个问题了一段时间,但我不得不纠正它,因为我现在必须解决它。 我想,当设备连接到系统在Windows 7中检测和我收到WM_DEVICECHANGE就好了,但是在wParam中的消息始终DBT_DEVNODES_CHANGED。 从来没有一个DBT_DEVICEARRIVAL或DBT_DEVICEREMOVECOMPLETE。 我有没有运气迄今使用Google所以我希望有人会指出我在正确的方向之前,我找到的东西在几个小时的时间:)感谢亚时间。

Answer 1:

该文档指出DBT_DEVICEARRIVAL和DBT_DEVICEREMOVECOMPLETE事件应该被默认接受。 应用程序可以注册通过调用RegisterDeviceNotification功能获得更详细的事件。 希望你会收到您在注册应用程序后,需要的事件。 一定要打电话UnregisterDeviceNotification关闭时。

RegisterDeviceNotification参考:

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

的P / Invoke签名:

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

UnregisterDeviceNotification参考:

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

的P / Invoke签名:

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



Answer 2:

非常感谢弗莱彻。 我在做这个的Qt4 succeded。 Qt4的(.6.3)用户可以添加#include文件作为正常的,但你需要补充一些#defines到您的.h文件中:

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

使窗户的数据类型,如DEV_BROADCAST_HEADER可以识别。 另外,版本号我想取决于你的Windows平台,但不知道(我用WIN 7个大气压)。 另外别忘了到库添加到您的.pro文件LIBS += "C:\Qt\2010.04\mingw\lib\<library_file>"如果你是默认安装位置。



文章来源: How to detect when a device is added to the system?
标签: c# winapi qt mfc