Rubrik: Dateisystem · Laufwerke | VB-Versionen: VB2005, VB2008 | 24.11.08 |
Erkennen, wenn Wechseldatenträger angeschlossen/entfernt werden Dieser Code zeigt, wie Sie prüfen können, ob neue Wechseldatenträger angeschlossen wurden (bspw. USB-Sticks) bzw. vorhandene Wechseldatenträger wieder entfernt wurden. | ||
Autor: Dieter Otter | Bewertung: | Views: 22.225 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wird ein neuer Wechseldatenträger angeschlossen bzw. wieder entfernt sendet Windows die Message WM_DEVICECHANGE. Wenn man nun gezielt das System auf diese Nachricht abhört, kann man sehr leicht prüfen, ob bspw. ein USB-Stick am System angeschlossen bzw. wieder entfernt wurde.
Erstellen Sie ein neues Projekt und platzieren auf die Form eine ListBox. In dieser ListBox sollen sowohl neu erkannte Datenträger, als auch Datenträger, die entfernt wurden, angezeigt werden.
Imports System.IO Public Class Form1 ' Liste aller aktuell vorhandenen Laufwerke Private currentDrives As New List(Of String) ' Windows-Message Konstante Private Const WM_DEVICECHANGE As Integer = &H219
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Liste aller aktuell vorhandenen Laufwerke ermitteln For Each d As DriveInfo In DriveInfo.GetDrives currentDrives.Add(d.RootDirectory.FullName) Next End Sub
' Windows-Messages abhorchen Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) ' Auf Laufwerksänderungen im System reagieren If m.Msg = WM_DEVICECHANGE Then ' neue Laufwerksliste erstellen Dim newDrives As New List(Of String) For Each d As DriveInfo In DriveInfo.GetDrives newDrives.Add(d.RootDirectory.FullName) Next ' prüfen, ob neue Laufwerke hinzugekommen sind For Each s As String In newDrives If Not currentDrives.Contains(s) Then ' neues Laufwerk gefunden ListBox1.Items.Add("Neu: " & s) End If Next ' jetzt prüfen, ob Laufwerke entfernt wurden For Each s As String In currentDrives If Not newDrives.Contains(s) Then ' Laufwerk wurde entfernt ListBox1.Items.Add("Entfernt: " & s) End If Next ' Laufwerks-Array aktualisieren currentDrives = newDrives End If MyBase.WndProc(m) End Sub
End Class
Starten Sie das Projekt und stecken einen USB-Stick ein. In der ListBox sollte unmittelbar danach der neue Laufwerksbuchstabe erscheinen. Entfernen Sie nun den USB-Stick wieder. Auch diese Info bekommen Sie in der ListBox angezeigt.