Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0012: Verfügbare Laufwerke, einschl. der Netzlaufwerke erkennen

 von 

Beschreibung 

Dieses Programm dient der Erfassung aller an einen Rechner angeschlossenen und verfügbaren Laufwerke, inklusive der Netzwerklaufwerke.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

GetDriveTypeA (GetDriveType), GetLogicalDriveStringsA (GetLogicalDriveStrings)

Download:

Download des Beispielprojektes [2,63 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Listen-Steuerelement "List1"

Option Explicit

'Deklaration: Globale Form API-Konstanten
Private Const DRIVE_CDROM As Long = 5
Private Const DRIVE_FIXED As Long = 3
Private Const DRIVE_RAMDISK As Long = 6
Private Const DRIVE_REMOTE As Long = 4
Private Const DRIVE_REMOVABLE As Long = 2

'Deklaration: Globale Form API-Funktionen
Private Declare Function GetDriveType Lib "Kernel32" Alias "GetDriveTypeA" ( _
    ByVal nDrive As String) As Long

Private Declare Function GetLogicalDriveStrings Lib "Kernel32" _
    Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
    ByVal lpBuffer As String) As Long

Private Sub Command1_Click()
    'Deklaration: Lokale Prozedur-Variablen
    Dim lngErgebnis As Long
    Dim lngPuffer As Long
    Dim lngTyp As Long
    Dim x As Long

    Dim strBezeichnung As String
    Dim strLaufwerk As String
    Dim strLaufwerke As String
    Dim strPuffer As String

    List1.Clear

    'Speicherplatz reservieren
    lngPuffer = 64
    strPuffer = Space$(lngPuffer)

    'Laufwerksbuchstaben ermitteln
    lngErgebnis = GetLogicalDriveStrings(lngPuffer, strPuffer)
    strLaufwerke = Left$(strPuffer, lngErgebnis)

    Do While x < Len(strPuffer)
        x = InStr(strPuffer, vbNullChar)

        If x <> 0 Then
            strLaufwerk = Left$(strPuffer, x)
            strPuffer = Mid$(strPuffer, x + 1, Len(strPuffer))

            'Laufwerkstyp ermitteln
            lngTyp = GetDriveType(strLaufwerk)
            If lngTyp <> 1 Then
                Select Case lngTyp
                    Case DRIVE_CDROM
                        strBezeichnung = "CD-ROM"
                    Case DRIVE_FIXED
                        strBezeichnung = "Festplatte"
                    Case DRIVE_RAMDISK
                        strBezeichnung = "RAM-Disk"
                    Case DRIVE_REMOTE
                        strBezeichnung = "Netzlaufwerk"
                    Case DRIVE_REMOVABLE
                        strBezeichnung = "Wechseldatenträger"
                End Select

                'Laufwerkstyp und -buchstaben ausgeben
                strLaufwerk = UCase(Mid$(strLaufwerk, 1, 2))
                List1.AddItem strLaufwerk & " " & strBezeichnung
            End If
        Else
            Exit Do
        End If
    Loop
End Sub

Private Sub Form_Load()
    'Control-Eigenschaften initialisieren
    Command1.Caption = "Laufwerke suchen"
End Sub


'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 5 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Jochen Wierum am 23.07.2004 um 10:29

Hallo Kornflake

Neben dem Vorteil, den du selbst schon erkannt hast, hat dieser Code noch einen weiteren Vorteil: Er ist schneller. Selbst das Laufwerks-Control greift vermutlich auf einen ähnlichen Code zurück. Wenn du damit leben kannst ist deine Variante natürlich wesentlich leichter zu programmieren. Welche dabei eleganter ist, lasse ich einfach mal offen :-)

Gruß,
Jochen

Admin @ActiveVB.de

Kommentar von Cornflake am 23.07.2004 um 10:22

Wieso so viel Code warum nicht einfach das Drive Control in die Anwendung schmeissen und dann folgenden Code eingeben:

For i = 0 To Drive1.ListCount - 1
List1.AddItem Drive1.List(i)
Next i


LOL So kann man den ganzen Code mit einem 3 Zeiler lösen!
Ok man hat dadurch nicht alle Infos wie Laufwerkstyp usw., aber wenn jemand nur mal alle verfügbaren Laufwerksbuchstaben braucht reicht der 3 Zeiler.

Kommentar von Martin Preinesberger am 04.01.2002 um 14:44

Kann man damit auch irgendwie rausfunden, was das CD-ROM Laufwerk und was der Brenner ist?

Kommentar von vanessa am 08.08.2001 um 08:49

ich hätte gerne alles was man als ein laufwerk bezeichnet auf einem blatt papier. was zählt alles zu den laufwerken?

Kommentar von Frank am 24.05.2001 um 14:40

...
Puffer = Space(64)
L = 64
...
64 ist zuwenig.
Laufwerk mit dem Buchstaben Z: wird dann nicht mehr angezeigt