http://digilander.libero.it/Cenati

Browse for folder

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript

 

 

 

 

 

Scelta di una directory tramite una finestra di sistema

Ho visto alcuni script che chiedevano all'utente di inserire il percorso di una directory per svolgere una qualche operazione. Spesso la richiesta avveniva attraverso una finestra standard di input (inputbox), con l'inconveniente di sbagliare facilmente a scrivere il pathname. E' facile quando è c:\dati, ma diventa molto più difficile scrivere correttamente un percorso più complesso. Ci viene in aiuto Windows stesso, con la possibilità di invocare la finestra standard di richiesta di una cartella.

La funzione che ho riportato qui sotto restituisce un pathname completo scelto dall'utente. La finestra di Windows restituisce un oggetto contenente il solo nome della cartella (in objfolder.title) e quindi per ottenere il percorso è necessario usare un metodo non proprio lineare. In poche righe ecco un sistema piuttosto spettacolare per abbellire l'interfaccia utente di uno script.

Prima di tutto bisogna creare una istanza dell'oggetto Shell.Application, contenuto nella libreria shell32.dll (Microsoft shell controls and automation). Questo permette, tra le altre cose, di invocare la finestra standard "Browse For Folder". Il secondo parametro della funzione indica il titolo che deve avere la mia finestra.

Copia il programma riportato qui sotto in un file con estensione ".vbs" oppure scarica l'archivio zip contentente lo script.

 

'*** 
' Esempio di finestra di scelta directory.
msgbox Sceglidir()

function Sceglidir()
 'Invoca la finestra di sistema di Windows
 'per la scelta di una directory.
 'http://digilander.libero.it/Cenati
 Dim objShell
 Dim objFolder

 Set objShell = CreateObject("Shell.Application")
 'Ora mostra la finsetra di sistema.
 Set objFolder = objShell.BrowseForFolder(0, "Scegli una directory", 0, 0)
 'Se l'oggetto non è nullo, estraggo il pathname completo
 If (Not objFolder Is Nothing) Then
    Sceglidir = objFolder.ParentFolder.ParseName(objFolder.Title).Path
 End If
 'Pulisco gli oggetti utilizzati ed esco.
 Set objFolder = Nothing
 Set objShell = Nothing
end function
'*** 

Cenati Giovanni

 

 
   

© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript