Rubrik: Controls · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 22.05.02 |
DriveBox - Laufwerksanzeige anpassen In einer DriveBox sollen nur bestimmte Laufwerkstypen angezeigt werden? Kein Problem - mit diesem Tipp... | ||
Autor: Ronny Hasse | Bewertung: | Views: 16.095 |
www.mspsoftware.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das DriveBox-Steuerelement eignet sich hervorragend, um dem Anwender die Möglichkeit zu geben, für eine bestimmte Aktion ein Ziel-Laufwerk auszuwählen.
Die DriveBox enthält von Haus aus immer alle verfügbaren Laufwerke, angefangen von Disketten-Laufwerken über Festplatten, bis hin zu verbundenen Netz-Laufwerken. Was aber, wenn der Anwender nur einen ganz bestimmten Laufwerkstyp auswählen darf? Zum Beispiel nur eines der installierten CD-Laufwerke. Hmmm.. man könnte ja nach der Auswahl den Laufwerkstyp abfragen und dann ggf. eine Warnmeldung ausgeben. Eleganter wäre es aber sicherlich, wenn die DriveBox in diesem Fall sofort nur die vorhandenen CD-Laufwerke zur Auswahl bieten würde.
Und genau das erreichen Sie mit unserem heutigen Tipp!
Erstellen Sie ein neues Modul und fügen nachfolgenden Code ein:
' die benötigten API-Deklarationen Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Const CB_DELETESTRING = &H144 Private Declare Function GetDriveType Lib "kernel32" _ Alias "GetDriveTypeA" ( _ ByVal nDrive As String) As Long Private Const DRIVE_UNKNOWN = 1 Private Const DRIVE_REMOVABLE = 2 Private Const DRIVE_FIXED = 3 Private Const DRIVE_REMOTE = 4 Private Const DRIVE_CDROM = 5 Private Const DRIVE_RAMDISK = 6
' nur bestimmte Laufwerkstypen in der ' DriveBox anzeigen Public Sub DriveShow(oDrive As DriveListBox, _ bShowRemovable As Boolean, _ bShowCDDrive As Boolean, _ bShowFixed As Boolean, _ bShowRemote As Boolean, _ bShowRamDrive As Boolean, _ bShowUnknownType As Boolean) Dim i As Integer Dim lIndex As Long Dim lDriveType As Long Dim bRemove As Boolean With oDrive lIndex = 0 For i = 0 To .ListCount - 1 ' Laufwerkstyp ermitteln lDriveType = GetDriveType(Left$(.List(lIndex), 2)) Select Case lDriveType Case DRIVE_UNKNOWN ' unbekannter Laufwerkstyp bRemove = Not bShowUnknownType Case DRIVE_REMOVABLE ' Wechseldatentäger (Diskette/ZIP) bRemove = Not bShowRemovable Case DRIVE_FIXED ' Festplatte bRemove = Not bShowFixed Case DRIVE_REMOTE ' Netzlaufwerk bRemove = Not bShowRemote Case DRIVE_RAMDISK ' RAM-Disk bRemove = Not bShowRamDrive Case DRIVE_CDROM ' CD-ROM / Brenner bRemove = Not bShowCDDrive End Select If bRemove Then ' Laufwerk entfernen SendMessage .hwnd, CB_DELETESTRING, lIndex, 0& Else lIndex = lIndex + 1 End If Next i End With End Sub
Beispiel
Plazieren Sie auf die Form ein Drive-Control.
nur CDROM-Laufwerke anzeigen
Private Sub Form_Load() ' nur CDROM-Laufwerke DriveShow Drive1, False, True, False, False, False, False End Sub
nur Festplatten und Netz-Laufwerke
Private Sub Form_Load() ' nur Festplatten und Netz-Laufwerke DriveShow Drive1, False, False, True, True, False, False End Sub