Donnerstag, 15. März 2012

Erkennen ob Wechseldatenträger (wie USB-Sticks) angeschlossen oder entfernt wurden

Im vorigen Post, auf den dieser aufbaut, habe ich erklärt, wie man allgemein mit C# erkennt, falls sich die Hardwareeinstellungen des PCs geändert haben.
In diesem Post geht es speziell darum, zu erkennen, ob Wechseldatenträger, wie z.B. USB-Sticks, angeschlossen oder entfernt wurden.

Hierfür nutzen wir das im vorigen Post besprochene Ereignis WM_DEVICECHANGE zur Notfikation, falls Geräte angeschlossen bzw. entfernt wurden.
Dann benutzen wir die Aufzählung System.IO.DriveInfo.GetDrives(), die alle Laufwerke des Computers enthält, also die internen Festplattenpartitionen aber eben auch Wechseldatenträger. Von jedem Datenträger fragen wir den Typ (DriveType) ab, entspricht dieser dem Typ DriveType.Removable, ist der gerade betrachtete Datenträger ein Wechseldatenträger.
In einer Funktion zählen wir also die Anzahl dieser und durch Differenzenbildung können wir entscheiden, ob ein Wechseldatenträger angeschlossen oder entfernt wurde.

Ich denke der dazugehörige Code sollte selbsterklärend sein:

        private void Form1_Load(object sender, EventArgs e)
        {
            CheckDrives();
        }

        int USBCount;

        private void CheckDrives()
        {
            USBCount = 0;
            foreach (System.IO.DriveInfo d in System.IO.DriveInfo.GetDrives())
            {
                if (d.DriveType == System.IO.DriveType.Removable)
                    USBCount++;
            }
        }

        const int WM_DEVICECHANGE = 0x219;
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_DEVICECHANGE)
            {
                int OldUSBCount = USBCount;
                CheckDrives();
                if (USBCount > OldUSBCount)
                    MessageBox.Show("Wechseldatenträger angeschlossen");
                if (USBCount < OldUSBCount)
                    MessageBox.Show("Wechseldatenträger entfernt");
            }

            base.WndProc(ref m);
        }


Für einen größeren Überblick über die Programmierwelt sei auf den folgenden Link verwiesen, hier kann man sich zum Thema Programmierung austauschen.

1 Kommentar:

  1. Usb-Wechselfestplatten werden unter Win7 als DriveType.Fixed gekennzeichnet.

    AntwortenLöschen