Guest User

Untitled

a guest
Jan 19th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. Imports System.IO
  2.  
  3. Public Class Form1
  4.  
  5. Private allDrives As New List(Of DriveInfo)
  6.  
  7. Private Const WM_DEVICECHANGE As Integer = &H219
  8. Private Const DBT_DEVICEARRIVAL As Integer = &H8000
  9. Private Const DBT_DEVICEREMOVECOMPLETE As Integer = &H8004
  10.  
  11. Protected Overloads Overrides Sub WndProc(ByRef msg As Message)
  12. MyBase.WndProc(msg)
  13. If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEARRIVAL Then
  14. 'alle laufwerke durchlaufen und in der liste suchen
  15. For Each s As String In Directory.GetLogicalDrives
  16. find_driveinfo_arg = s
  17. Dim d As DriveInfo = allDrives.Find(AddressOf find_driveinfo)
  18. If d Is Nothing Then
  19. 'laufwerk wurde in der liste nicht gefunden und ist somit neu
  20. MessageBox.Show("Neuer Datenträger erkannt = " & s)
  21. 'laufwerk jetzt zur liste hinzufügen
  22. allDrives.Add(New DriveInfo(s))
  23. End If
  24. Next
  25. End If
  26. If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEREMOVECOMPLETE Then
  27. 'alle laufwerke aus der liste prüfen
  28. Dim temp As List(Of DriveInfo) = GetAllDrives()
  29. For Each d As DriveInfo In allDrives
  30. find_driveinfo_arg = d.Name
  31. Dim lost As DriveInfo = temp.Find(AddressOf find_driveinfo)
  32. If lost Is Nothing Then
  33. 'laufwerk wurde in der liste nicht mehr gefunden
  34. MessageBox.Show("Datenträger wurde entfernt = " & d.Name)
  35. 'laufwerk aus der liste entfernen
  36. allDrives.Remove(d)
  37. 'schleife verlassen
  38. Exit For
  39. End If
  40. Next
  41. End If
  42. End Sub
  43.  
  44. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  45. allDrives = GetAllDrives()
  46. End Sub
  47.  
  48. Private Function GetAllDrives() As List(Of DriveInfo)
  49. Dim ret As New List(Of DriveInfo)
  50. 'und wieder befüllen
  51. For Each d As String In Directory.GetLogicalDrives
  52. ret.Add(New DriveInfo(d))
  53. Next
  54. Return ret
  55. End Function
  56.  
  57. 'suchfunktion zum finden der laufwerke in der collection
  58. Private find_driveinfo_arg As String
  59. Private Function find_driveinfo(ByVal d As DriveInfo)
  60. If d.Name = find_driveinfo_arg Then
  61. Return True
  62. Else
  63. Return False
  64. End If
  65. End Function
  66. End Class
Add Comment
Please, Sign In to add comment