'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. |