Tipp 0529 DriveListBox-Einträge entfernen
Autor/Einsender:
Datum:
  Detlev Schubert
10.04.2007
Entwicklungsumgebung:   VB 6
Mit der DriveListBox stellt Visual Basic eine einfache Möglichkeit zur Verfügung, eine Laufwerksauswahl in die eigene Anwendung zu integrieren. Leider ist dieses Steuerelement relativ unflexibel. So lassen sich beispielsweise zur Laufzeit keine neuen Elemente wie z.B. ein FTP-Server hinzufügen.
Da es sich bei der DriveListBox lediglich um eine ganz normale ComboBox handelt, ist es möglich, mit Hilfe der API-Funktion Sendmessage und der Nachrichtenkonstante CB_DELETESTRING Einträge zu löschen, um zu verhindern, dass beispielsweise der Anwender auf Diskettenlaufwerke oder CD/DVD-Laufwerke zugreift. Sendmessage erwartet neben dem Handle der DriveListBox und der Konstante im 3. Parameter den Index des zu entfernenden Eintrags, der sich über den ListIndex ermitteln lässt.
Zu beachten ist, dass durch das Zuweisen eines ListIndex nach dem Entfernen eines Eintrags die Box automatisch refreshed wird, so dass alle vorher gelöschten Einträge dann wieder vorhanden sind.
 
Option Explicit

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 Sub Command1_Click()
  SendMessage Drive1.hWnd, CB_DELETESTRING, Drive1.ListIndex, 0
  Command1.Enabled = False
End Sub
 
Weitere Links zum Thema
Listeneinträge löschen (API)

Windows-Version
95
98
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (2,5 kB) Downloads bisher: [ 315 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 19. Juni 2011