Skip to content

Instantly share code, notes, and snippets.

@alexandersiemert
Created December 15, 2023 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexandersiemert/3a1157f1514c31b6fa8729b99f65483a to your computer and use it in GitHub Desktop.
Save alexandersiemert/3a1157f1514c31b6fa8729b99f65483a to your computer and use it in GitHub Desktop.
USB Device change management
using System;
using System.Management;
using System.Windows;
namespace USBDeviceDetection
{
public partial class MainWindow : Window
{
private ManagementEventWatcher watcher;
public MainWindow()
{
InitializeComponent();
// Erstellen Sie eine Abfrage, um Geräteanfügungs- und -entfernungsereignisse zu überwachen
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2 or EventType = 3");
// Erstellen Sie den EventWatcher und registrieren Sie den EventHandler
watcher = new ManagementEventWatcher(query);
watcher.EventArrived += DeviceChangedEvent;
// Starten Sie die Überwachung
watcher.Start();
}
private void DeviceChangedEvent(object sender, EventArrivedEventArgs e)
{
// Hier können Sie den Code ausführen, wenn ein USB-Gerät angeschlossen oder entfernt wird
// Zum Beispiel eine Benachrichtigung anzeigen, eine Aktion ausführen, usw.
// Sie können auf Informationen über das geänderte Gerät über e.NewEvent zugreifen
ManagementBaseObject obj = e.NewEvent;
string eventType = obj["EventType"].ToString();
if (eventType == "2")
{
// Gerät wurde angeschlossen
MessageBox.Show("USB-Gerät wurde angeschlossen.");
}
else if (eventType == "3")
{
// Gerät wurde entfernt
MessageBox.Show("USB-Gerät wurde entfernt.");
}
}
private void Window_Closed(object sender, EventArgs e)
{
// Beenden Sie die Überwachung, wenn das Fenster geschlossen wird
if (watcher != null)
{
watcher.Stop();
watcher.Dispose();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment