2010-07-14 10 views
0

J'ai eu ce problème pendant un moment maintenant mais je dois y remédier car je dois y faire face maintenant. J'essaie de détecter quand un périphérique est connecté au système dans Windows 7 et je reçois le WM_DEVICECHANGE très bien, mais le message dans wParam est toujours DBT_DEVNODES_CHANGED. Jamais un DBT_DEVICEARRIVAL ou DBT_DEVICEREMOVECOMPLETE. Je n'ai pas eu de chance de googler jusqu'à présent donc j'espère que quelqu'un me pointera dans la bonne direction avant de trouver quelque chose dans quelques heures :) Merci pour votre temps.Comment détecter lorsqu'un périphérique est ajouté au système?

Répondre

1

La documentation indique que les événements DBT_DEVICEARRIVAL et DBT_DEVICEREMOVECOMPLETE doivent être reçus par défaut. L'application peut s'inscrire pour recevoir des événements plus détaillés en appelant la fonction RegisterDeviceNotification. J'espère que vous recevrez les événements dont vous avez besoin après l'enregistrement de votre application. Veillez à appeler UnregisterDeviceNotification lors de la fermeture.

référence RegisterDeviceNotification:

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

P/Invoke Signature:

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

référence UnregisterDeviceNotification:

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

P/Invoke Signature:

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

0

Merci beaucoup Fletcher. J'ai réussi à faire cela pour Qt4. Qt4 (.6.3) Les utilisateurs peuvent ajouter les fichiers #include normalement mais vous aurez besoin d'ajouter un peu #defines à votre fichier .h:

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

de sorte que les fenêtres types de données comme DEV_BROADCAST_HEADER peuvent être reconnus. Aussi le numéro de version que je suppose dépend de votre plate-forme Windows mais pas sûr (j'utilise gagner 7 atm). N'oubliez pas non plus d'ajouter les bibliothèques à vos fichiers .pro LIBS += "C:\Qt\2010.04\mingw\lib\<library_file>" si vous avez installé dans la position par défaut qui est.

Questions connexes