ComboFiles




'Inserire il seguente codice nella sezione dichiarazioni di

'un modulo BAS

Public Const WM_USER = &H400
Public Const LB_DIR = &H18D
Public Const DIR_NORMALFILES = &H0
Public Const DIR_READONLY = &H8001
Public Const DIR_HIDDEN = &H8002
Public Const DIR_SYSTEM = &H8004
Public Const DIR_DIRECTORIES = &H8010
Public Const DIR_ARCHIVED = &H8020
Public Const DIR_DRIVES = &HC000
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
'Inserire una ListBox ed un CommandButton al Form.

'Copiare il seguente codice all'interno del Form

'Routine che carica l'elenco delle unita' disponibili in una LB

Sub ElencaUnita()
Dim RetValue As Long
'Azzero il contenuto della ListBox

List1.Clear
'Creo l'elenco delle unita'

RetValue = SendMessage(List1.hwnd, LB_DIR, DIR_DRIVES, vbNullString)
End Sub

'Routine che carica l'elenco delle directory presenti all'interno

'di un'altra directory, passata come argomento

'Uso: ElencaDirectory "c:\windows\*.*" 'Elenca tutte le directory presenti

'nella directory Windows

Sub ElencaDirectory(PathDiPartenza As String)
Dim RetValue As Long
'Azzero il contenuto della ListBox

List1.Clear
'Creo l'elenco delle directory

RetValue = SendMessage(List1.hwnd, LB_DIR, DIR_DIRECTORIES, _
ByVal PathDiPartenza)
End Sub

'Routine che carica l'elenco dei presenti all'interno

'di una directory, filtrandoli in base agli attributi definiti

'nelle costanti dichiarate nel modulo BAS

'Uso: ElencaFiles "c:\windows\*.*", DIR_NORMALFILES And DIR_ARCHIVED

'Elenca tutti i files con attributo Normale e Archivio della directory Windows

'N.B. e' possibile fare uso dei caratteri jolly dos per la ricerca filtrata

'dei files

Sub ElencaFiles(Path_e_FileDaCercare As String, AttributiFile As Long)
Dim RetValue As Long
'Azzzero il contenuto della ListBox

List1.Clear
'Creo l'elenco dei files

RetValue = SendMessage(List1.hwnd, LB_DIR, AttributiFile, _
ByVal Path_e_FileDaCercare)
End Sub

'Nell'evento Click del CommandButton inserire, volta per

'volta, le chiamate

'a queste routine per vederne il risultato.

Con la funzione API SendMessage e' possibile ampliare le
caratteristiche dei controlli standard di VB.
Uno dei tanti utilizzi di tale funzione, associato ad una
ListBox, ci permette di caricare nel controllo l'elenco delle
unita', delle direcory e dei files contenuti in una specifica
directory e con deteminati attrbuti. Naturalmente il tutto
avviene con una velocita' nettamente a quella ottenibile
utilizzando esclusivamente codice VB.










( combofiles.html )- by Paolo Puglisi - Modifica del 17/12/2023