Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Seconda versione (con l'utilizzo dell'API) Una soluzione alternativa consiste nello sfruttamento di alcune funzioni API, in particolare l'invio di un messaggio ben definito alla ListBoxche dovrà contenere i nomi dei files. Il messaggio in questione è LB_DIR applicato alla ListBox. Per cui è necessario definire alcune costanti e dichiarazioni API:
La prima costante è proprio il messaggio LB_DIR
che provvederà ad effettuare il riempimento della ListBox. Nota che i valori DDL_ specificati corrispondono ai valori vbArchive, vbHidden, vbReadOnly e vbSystem dell'enumerazione VbFileAttribute. Ciò significa che avremmo potuto fare a meno di queste costanti ed utilizzare il tipo intrinseco di Visual Basic. Alla riga 6 abbiamo dichiarato la funzione API SendMessage, utilizzata per inviare un messaggio ad un oggetto. La funzione richiede quattro parametri:
Alla riga 7 dichiariamo la funzione API GetShortPathName che converte un nome di file lungo nel formato DOS (8.3). Esiste un HowTo che spiega passo passo il funzionamento di questa funzione API; per tale ragione essa non sarà approfondita in questa sede.
Per utilizzare questa nuova funzione di elencazione files inseriamo un nuovo pulsante di comandodi nome ElencaAPI sul nostro form. Purtroppo però questa nuova soluzione non permette la scansione delle sottocartelle. Quindi l'impostazione del valore della CheckBoxnon varia nulla. In ogni caso non saranno scandite le sottocartelle.
Fino a questo punto la funzione differisce dalla precedente solo per la variabile stringa Percorso dichiarata alla riga 12. Essa servirà per ottenere il percorso della cartella da analizzare.
Queste due righe sono l'applicazione (anche se un po' più complessa) della funzione API GetShortPathName vista in un altro HowTo. Esse convertono il percorso specificato nella TextBox CercaText in formato DOS e memorizzano il risultato nella variabile Percorso.
La riga 19 concatena il tipo di file ricercato al percorso, ma prima si assicura (riga 18) che la variabile Percorso termini con un \ e provvede ad aggiungerlo nel caso contrario.
In quest'unica riga risiede l'intera funzione di elencazione. Questa semplice chiamata riempie la ListBox con i nomi dei files corrispondenti al criterio richiesto.
La funzione si chiude con le stesse righe che completano la versione precedente. Viene scritta la durata dell'elencazione nella Label Tempo e viene scritto nella Label Conteggio il numero di elementi di cui si compone la ListBox.
Terminata la scrittura della funzione possiamo passare alla prova:
|
Questa funzione è leggermente più complessa della versione
precedente, ma richiede un tempo di elaborazione nettamente inferiore
a quello dell'altra versione. Provare per credere! :) Fibia
FBI e Giuseppe Della Bianca
|
Torna all'indice degli HowTo |