Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Lo sviluppo di un programma di frequente utilizzo che gestisce un particolare tipo di file è ben più semplice se si associa quel programma all'estensione dei files che esso richiama. Ad esempio i files con estensione VBP richiamano automaticamente Visual Basic, mentre quelli con estensione XLS ad esempio richiamano automaticamente Microsoft Excel. Tale associazione è effettuata mediante registrazione di uno o più verbi assegnati all'estensione. Si raccomanda la consultazione delle Informazioni aggiuntive sulla Registrazione delle Estensioni in Windows.
Il problema non verrà risolto con la soluzione minima, sufficiente per registrare un'estensione nel sistema ed assegnargli un verbo per l'apertura, ma sarà invece sviluppata la classe clsFBIRegisterExtension in grado di registrare una o più estensioni ed assegnare con facilità uno o più verbi, ex-novo oppure riprendendo le impostazioni attuali del sistema. Questo articolo presuppone anche una discreta conoscenza dell'organizzazione del registro di Windows ed utilizza la classe clsFBIRegistry trattata in un altro HowTo. Il presente articolo è pertanto soggetto alle medesime limitazioni della classe clsFBIRegistry e pertanto non funzionerà correttamente nei sistemi Windows NT. La classe clsFBIRegisterExtension conta numerose proprietà ma un solo metodo pubblico di nome Register. Tutte le proprietà sono temporanee e saranno applicate soltanto dopo che viene richiamato il metodo Register. Esiste anche un evento di nome Error generato ogni volta che viene richiamato il metodo Register con dati non validi. La classe consente la registrazione di un'estensione con e senza deferring dei verbi. È anche possibile lasciar rilevare le impostazioni attuali e/o preservare i verbi già esistenti. Il codice in se stesso è semplice e l'unica difficoltà è data dal metodo Register e nei numerosi controlli effettuati. Si suppone che si conosca il funzionamento della classe clsFBIRegisty.
Tutte le variabili locali dichiarate alle righe 3-10 corrispondono ai membri privati delle proprietà pubbliche della classe. La funzione ExtractIconEx dichiarata alla riga 12 verrà utilizzata per recuperare il numero di icone presenti nel file specificato. La stessa funzione API è trattata nell'HowTo dedicato all'estrazione di icone da un file.
L'evento Error dichiarato alla riga 14 sarà richiamato quando sarà rilevato qualche errore nel richiamo del metodo Register. L'argomento Cancel consentirà di nascondere la finestra con il messaggio di errore. L'argomento Messaggio invece conterrà una descrizione dell'errore.
All'istanza della classe i membri m_DeferSettings e m_PreserveSettings sono inizializzati a True, secondo le impostazioni normali della classe. Vedremo più avanti di cosa si tratta. La funzione ShowError consente di valutare una condizione (specificata nel parametro blnCondition) e se tale espressione restituisce il valore Vero, sarà generato l'evento Error, accompagnato da una descrizione dell'errore (parametro strMessage). Se al ritorno dall'evento la variabile blnCancel contiene ancora il valore False sarà allora mostrato un avviso di errore. La funzione restituisce in uscita la valutazione della condizione. Risulta molto utile per generare automaticamente degli errori in base alla condizione blnCondition, gestire l'evento Error e restituire il valore della condizione stessa.
La proprietà DefaultIcon consente di associare un'icona
all'estensione utilizzata. È fondamentale ricordare che l'icona
sarà impostata soltanto successivamente alla chiamata del metodo
Register. La lettura della proprietà prima della registrazione
è assolutamente inutile e non sarà in alcun modo rilevata
l'icona attuale. Inoltre non sarà effettuato alcun tipo di verifica
sul valore fornito.
La proprietà DefaultVerb consente di definire il verbo predefinito che sarà impostato durante la registrazione.
La proprietà DeferredPath consente di assegnare un nuovo valore in caso si scelga di utilizzare il deferring della registrazione. Alla proprietà non può però essere assegnato un valore nullo.
La proprietà DeferSettings consente di decidere se utilizzare o meno il deferring della registrazione. Tale valore sarà però ignorato se si sceglie di preservare le impostazioni attuali (proprietà PreserveSettings) e naturalmente la registrazione esiste già.
La proprietà Extension definisce l'estensione utilizzata ed alla quale sarà applicata la registrazione. Se l'estensione contiene il punto iniziale esso sarà rimosso alla riga 69. Il nuovo valore della proprietà non può essere nullo ed in tal caso sarà generato un errore (riga 71).
Alla riga 73 invece è assegnato il nuovo valore corrispondente alla proprietà DeferredPath, soltanto se non è stato assegnato precedentemente. Il valore predefinito di tale proprietà corrisponde quindi all'estensione utilizzata seguita dal suffisso File, nel rispetto delle definizioni standard del registro di Windows.
La proprietà FileType consente di associare una descrizione alla nuova estensione da registrare.
La proprietà in sola lettura IconCount restituisce il numero di icone contenute nel file indicato dalla proprietà DefaultIcon. In caso venga letto il numero di icone prima di assegnare la nuova icona sarà generato un errore (riga 87). Dal percorso dell'icona sarà eliminato l'indicatore dell'icona da utilizzare, cioè quello che segue la virgola nel nome del file. Ottenuto quindi il nome completo del file dell'icona sarà estratto il numero di icone contenute in esso mediante l'API ExtractIconEx. Il valore -1 consente infatti di recuperare soltanto il numero di icone contenute senza estrarre null'altro dal file.
La proprietà PreserveSettings consente di preservare le impostazioni di registrazione attuali ovvero se la registrazione attuale utilizza deferring anche la nuova registrazione continuerà ad utilizzarlo; sarà inoltre impossibile sovrascrivere un verbo esistente.
L'ultima proprietà della classe è SavedPath, in
sola lettura e consente di recuperare il percorso in cui è stata
registrata l'ultima estensione. Utile per determinare la chiave in cui
sono stati registrati i verbi nell'operazione Register, quando la proprietà
PreserveSettings è impostata su True. |
Fibia
FBI
|
Torna all'indice degli HowTo |