http://digilander.libero.it/Cenati Browse for folder |
|
|
||
|
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
|
|