Die Erkennung von USB-einfügen/Entfernen in C++ non-GUI-Anwendung
Will ich erkennen, einfügen/entfernen eines bestimmten (Benutzerdefiniert) USB-Gerät über eine C++ - Anwendung, die im hintergrund ausgeführt wird und keine GUI hat.
Ich habe gesehen, viele Fragen und deren Lösungen RegisterDeviceNotification
auch Beispielcode auf MSDN
Aber diese Anwendung hat Einige Fenster/Formular/GUI. Meine Anwendung nicht jedem.
Wie kann ich diese in meiner Anwendung?
Meine Letzte option wäre ein unsichtbares Fenster... Aber es ist eine andere Art und Weise aus??
- Möchten Sie, dass Ihr code portabel auf verschiedenen Betriebssystemen?
- Nur Windows... Aber ja, Windows XP auf Windows 7 (oder vielleicht auch Win 8 auch!)
- Erstellen Sie unsichtbare Fenster und Griff Benachrichtigung in Ihrer Fenster-Prozedur. Sie brauchen, um dieses in einem separaten thread mit message-loop.
- schauen Sie hier, msdn.microsoft.com/en-us/library/windows/desktop/..., wie es heißt: "...Nachrichten an windows..."
- Es klingt wie Sie wirklich wollen, eine "Dienstleistung", sondern als eine Anwendung, in diesem Fall können Sie ein "Service-status-handle" statt einem "HWND", um die
RegisterDeviceNotification
- Gibt es keine Möglichkeit ohne die Schaffung von unsichtbaren Fenster?? Das war meine Letzte option!
- Ich denke, das Fenster wird nur dann der Fall, wenn im Fokus. Ich werde über das gleiche problem jetzt. Es scheint nicht zu sein eine elegante Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine nur-Nachrichten-Fenster. Trotz des namens, es ist wirklich nur eine message-queue.
dbch_devicetype
, aber die Nachrichten, für die Sie brauchenRegisterDeviceNotification
nicht-broadcast (das ist der ganze Sinn der Funktion, nachdem alle).Diesem einfachen Programm schafft einem nicht sichtbaren Fenster und die message-handler erhält auch Benachrichtigungen für "RegisterDeviceNotification'.
Externen USB-Speichergerät Detektor
Diesem Programm (C++) erkennt pen drive, Speicherkarte & externe Festplatte (immer wenn eine neue USB-Speichergerät eingefügt wird)-
Bemerkung: Dieses code-snippet erkennen kann nur ein neues Gerät (auch wenn mehr als eine eingelegt ist, auf einmal). Aber, natürlich, erreichen Sie mehrere Erkennung auch mit einer wenig ändern. 🙂
Erstellen Sie ein service das erste mal und in
RegisterDeviceNotification
, geben Sie den Griff des Dienstes, anstatt ein Fenster zu behandeln.Anpassen der Dritte parameter der
RegisterDeviceNotification
entsprechend.