RSS
StartseiteKnowledge LibraryTop 10Impressum

Sortierte Laufwerksauflistung

Die im System befindlichen Laufwerke auflisten

Die API Funktion GetLogicalDriveStrings liefert einen String, mit den Buchstaben aller im System angemeldeten Laufwerke, die API Funktion GetDriveType die Informationen zum Laufwerkstyp. Beide Funktionen kombiniert, liefern immer die passenden Laufwerke.

Die API Funktion GetLogicalDriveStrings liefert einen String, der die Buchstaben aller im System angemeldeten Laufwerke enthält, getrennt durch ein NullChar und abgeschlossen mit einem doppeltem NullChar. Die API Funktion GetDriveType, gibt an, um welchen Laufwerkstyp es sich handelt.

Zerlegt man den String mit den Laufwerksbuchstaben, überprüft welcher Laufwerkstyp vorliegt und packt das ganze in eine Collection, erhält man eine Auflistung, die immer genau die Laufwerke enthält, die man momentan am Besten gebrauchen kann z.B. alle CD-ROM Laufwerke:

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias _
        "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
        ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias _
        "GetDriveTypeA" (ByVal nDrive As String) As Long

Public Enum DriveTypeConstants
  dtAllDrives = -1
  dtUnknown = 0
  dtRemoveable = 2
  dtFixed = 3
  dtRemote = 4
  dtCDROM = 5
  dtRAMDisk = 6
End Enum

Public Function LogicalDrives(_
       Optional ByVal DriveType As DriveTypeConstants = dtAllDrives _
       ) As Collection
  Dim strDrives As String
  Dim strDrive  As String
  Dim i         As Integer
  
  strDrives = Space$(106)
  GetLogicalDriveStrings Len(strDrives), strDrives
  
  Set LogicalDrives = New Collection
  
  For i = 1 To InStr(1, strDrives, vbNullChar & vbNullChar) Step 4
    strDrive = Mid$(strDrives, i, 2)
    If DriveType = dtAllDrives Then
      LogicalDrives.Add strDrive
    Else
      If GetDriveType(strDrive & "\") = DriveType Then
        LogicalDrives.Add strDrive
      End If
    End If
  Next
End Function