Einträge aus DriveListBox entfernen

Wolfgang Kluge
wolfgang@vbwelt.de

Die DriveListBox ist eine tolle Sache. Alle im System befindlichen Laufwerke werden aufgelistet, und der User darf sich was aussuchen. Doch was tun, wenn der User erst gar nicht auf die Idee kommen darf zB. Laufwer A: auszuwählen. Immer eine MessageBox aufkommen lassen, wenn er es doch tut ist eine eher unprofessionelle Lösung. Wozu gibt es denn API-Funktionen.

Und mal wieder(wie so oft) ist es die Funktion SendMessage, die dies ermöglicht.

 Deklaration:
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


Mit diesem Aufruf kann immer ein Element aus der DriveListBox entfernt werden.

Die Angabe, welches Element gelöscht werden soll, wird im Parameter wParam gemacht. Aufpassen muß man, wenn man mehrere Einträge löschen will, denn wenn erstmal ein Eintrag weg ist, rutscht der ganze Rest hinterher.
Auch bleibt mindestens ein Laufwerk übrig (sonst ergäbe das Ganze ja auch keinen Sinn).

' erster Eintrag aus Laufwerkslistbox entfernen
SendMessage Drive1.hwnd, CB_DELETESTRING, 0&, 0&

' letzter Eintrag aus Laufwerkslistbox entfernen
SendMessage Drive1.hwnd, CB_DELETESTRING, Drive1.ListCount - 1, 0&