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
Download
- modLogicalDrives Modul und Beispielprojekt (drives.zip - 3 KB)