Ich möchte erkennen, wenn der Benutzer eine USB-Soundkarte eingesteckt oder entfernt. Ich habe es geschafft, um tatsächlich das Ereignis zu fangen, wenn dies geschieht, aber ich kann nicht sagen, was in wurde gerade eingestecktWie erkennt man, welches Gerät an den USB-Steckplatz angeschlossen wurde?
ich einen Ansatz versucht, basierend auf this Frage:.
string query =
"SELECT * FROM __InstanceCreationEvent " +
"WITHIN 2 "
+ "WHERE TargetInstance ISA 'Win32_PnPEntity'";
var watcher = new ManagementEventWatcher(query);
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Start();
Während ich die Benachrichtigungen über das Ereignis EventArrived habe ich keine Ahnung, wie ich den tatsächlichen Namen des Geräts ermitteln kann, das gerade angeschlossen wurde. Ich habe jede Eigenschaft durchgesehen und konnte weder Kopf noch Zahl daraus machen.
Ich habe auch versucht, eine andere Abfrage:
var query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent where EventType = 1 or EventType = 2");
var watcher = new ManagementEventWatcher(query);
watcher.EventArrived += watcher_EventArrived;
watcher.Stopped += watcher_Stopped;
watcher.Query = query;
watcher.Start();
aber auch ohne Erfolg. Gibt es eine Möglichkeit, den Namen des Geräts zu finden, das angeschlossen oder entfernt wurde?
Unter dem Strich möchte ich wissen, wenn eine USB-Soundkarte eingesteckt oder aus dem System entfernt wird. Es sollte unter Windows 7 und Vista funktionieren (obwohl ich mich nur mit Win7 zufrieden geben werde).
BEARBEITEN: Basierend auf den Vorschlägen des erfolgreichen Übermittlers, habe ich eine full solution erstellt, die alle Funktionen umschließt.
Was ist das RegisterDeviceNotification Ereignis mit? in dieser Bibliothek verwendet zum Beispiel: https://code.google.com/p/winusbnet/ –
@SimonMourier Diese Bibliothek scheint eher für die Kommunikation mit USB-Geräten, anstatt sie zu erkennen. Ich sehe keine Beispiele, die zeigen, wie Geräte erkannt werden, und ich sehe auch nichts in der API, das sich für diesen Zweck eignet. – AngryHacker