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)