La détection USB insertion/Retrait en C++ non-application de l'interface utilisateur
Je veux détecter l'insertion/suppression d'un compte spécifique (Personnalisé) périphérique USB par le biais d'une application C++ qui s'exécute en arrière-plan et n'a pas d'interface graphique.
J'ai vu beaucoup de questions et leurs solutions RegisterDeviceNotification
aussi un exemple de code sur MSDN
Mais tout demande a Certains de la Fenêtre/Forme/GUI. Mon Application ne marche pas tout.
Comment puis-je utiliser dans mon application?
Ma dernière option serait de créer une fenêtre invisible... Mais est-il un autre moyen??
Ne vous voulez que votre code soit portable sur différents Systèmes d'exploitation?
Seulement Windows... Mais Oui, Windows XP à Windows 7 (ou peut-être que Win 8 trop!)
Créer invisible fenêtre et poignée message de notification dans la procédure de fenêtre. Vous avez besoin de le faire dans un thread séparé contenant de la boucle de message.
regardez ici msdn.microsoft.com/en-us/library/windows/desktop/... comme il est dit: "...les messages envoyés à windows..."
Il ne sonne comme vous voulez réellement un "Service", plutôt que d'une application, auquel cas vous pouvez passer d'un "statut du Service gérer" au lieu de "HWND" à la
Seulement Windows... Mais Oui, Windows XP à Windows 7 (ou peut-être que Win 8 trop!)
Créer invisible fenêtre et poignée message de notification dans la procédure de fenêtre. Vous avez besoin de le faire dans un thread séparé contenant de la boucle de message.
regardez ici msdn.microsoft.com/en-us/library/windows/desktop/... comme il est dit: "...les messages envoyés à windows..."
Il ne sonne comme vous voulez réellement un "Service", plutôt que d'une application, auquel cas vous pouvez passer d'un "statut du Service gérer" au lieu de "HWND" à la
RegisterDeviceNotification
OriginalL'auteur Swanand | 2013-04-25
Vous devez vous connecter pour publier un commentaire.
Créer un fenêtre de message uniquement. Malgré le nom, c'est vraiment un message de la file d'attente.
dbch_devicetype
, mais les messages pour lesquels vous avez besoinRegisterDeviceNotification
ne sont pas à la diffusion (c'est le point de l'ensemble de la fonction, après tout).Pas de diffusion, pas de. Mais pour un appareil personnalisé, je n'attends pas la diffusion de messages de toute façon. Ils utilisent pub/sub, au lieu de la diffusion.
OK, je ne suis pas sûr de moi. À l'aide d'une fenêtre normale est apparu pour résoudre la question ici (stackoverflow.com/questions/22016259/...) mais je ne sais pas pourquoi. Je pense que je vais supprimer mes commentaires ici parce que je suis sur des bases fragiles.
Le Message de windows ne recevez pas les messages de diffusion. - lien
OriginalL'auteur MSalters
Ce programme simple, crée un non-visible de la fenêtre et son gestionnaire de messages reçoit également les notifications pour les "RegisterDeviceNotification'.
OriginalL'auteur formiaczek
Externe USB Périphérique de Stockage de Détecteur de
Ce programme (en C++) détecte d'entraînement de stylo, carte mémoire & disque dur externe (chaque fois qu'un nouveau périphérique de stockage USB est insérée)-
Remarque: Cet extrait de code peut détecter seulement un nouveau dispositif (même si plus d'un est inséré à la fois). Mais, bien sûr, vous pouvez réaliser de multiples de détection de trop, avec un peu de changement. 🙂
Vous avez absolument raison @Swanand. Je l'ai mentionné - il ne détecte que les un nouveau lecteur (même si plus d'un disque est inséré à la fois, qui peut être fixe). Merci pour la rendre plus claire.
OriginalL'auteur Minhas Kamal
Créer un service de première et de
RegisterDeviceNotification
, donner la poignée de ce service au lieu d'un handle de fenêtre.Également ajuster le troisième paramètre de
RegisterDeviceNotification
en conséquence.OriginalL'auteur Behlül