I want to know when a USB device is connected to the computer that my Qt application is running on (in Windows). In my main QWidget, I've reimplemented winEventFilter
like this:
bool winEventFilter ( MSG * msg, long * result ) {
qDebug() << msg;
return false;
}
I'd expect qDebug to send at least something when I connect a USB device, but I don't get anything.
I'm guessing that I'm fundamentally misunderstanding the process here - this is my first Qt app!
I believe what you may be missing is the call to register for device notification. Here is code that I use to do the same thing, though I override the winEvent() method of the QWidget class and not the winEventFilter.
NOTE: You will most likely need to change the values of the
DEV_BROADCAST_DEVICEINTERFACE
to fit your needs.EDIT: To use this code you will need to include the proper header files and perform the proper setup.
DEV_BROADCAST_DEVICEINTERFACE
requires the Dbt.h header to be included. Also, the focal point of this code is on the RegisterDeviceNotification function. Info is available on MSDNI'm working along the same lines but in C#.
you need to register your application with the system (look at the RegisterHidNotification() function). Mine looks like this: `
The most important part of the function is the bit I've highlighted in bold (or at least tried to). Defined as:
public Guid GUID_DEVINTERFACE_USB_DEVICE = new Guid("A5DCBF10-6530-11D2-901F-00C04FB951ED");
Hope you can adapt it to your application.