VB 5/6-Tipp 0012: Verfügbare Laufwerke, einschl. der Netzlaufwerke erkennen
von ActiveVB
Beschreibung
Dieses Programm dient der Erfassung aller an einen Rechner angeschlossenen und verfügbaren Laufwerke, inklusive der Netzwerklaufwerke.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: GetDriveTypeA (GetDriveType), GetLogicalDriveStringsA (GetLogicalDriveStrings) | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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