Condividi tramite


Comprensione delle estensioni dei namespace della shell

Windows Explorer fornisce una rappresentazione grafica dello spazio dei nomi Shell, combinata con strumenti che consentono agli utenti di interagire con gli oggetti Shell. Con un'estensione dello spazio dei nomi, è possibile prendere qualsiasi insieme di dati e fare in modo che Esplora Risorse di Windows lo presenti all'utente come una cartella virtuale. Quando un utente accede a questa cartella, i dati vengono presentati come una gerarchia strutturata ad albero di cartelle e file, analogamente al resto dello spazio dei nomi shell. Gli utenti e le applicazioni possono interagire con il contenuto di questa cartella virtuale nello stesso modo di qualsiasi altro oggetto spazio dei nomi. Questo documento illustra come creare un'estensione dello spazio dei nomi.

Funzionamento di un'estensione dello spazio dei nomi

Dietro le quinte, ogni cartella visualizzata da Esplora Risorse di Windows è rappresentata da un oggetto COM (Component Object Model) chiamato oggetto di tipo cartella . Ogni volta che l'utente interagisce con una cartella o il relativo contenuto, shell comunica con l'oggetto cartella associato tramite una delle diverse interfacce standard. L'oggetto cartella esegue quindi qualsiasi operazione necessaria per rispondere all'azione dell'utente e la Shell aggiorna la visualizzazione di Esplora File.

La maggior parte dei file e delle cartelle con cui gli utenti interagiscono fanno parte del file system o di una cartella virtuale di sistema, ad esempio il Cestino. Altri documenti hanno illustrato come personalizzare il comportamento di queste cartelle standard per soddisfare i requisiti dell'applicazione modificando il Registro di sistema o implementando gestori dell'estensione shell. Tuttavia, l'estensione della shell in questi modi è più utile quando le informazioni possono essere facilmente incluse nel pacchetto sotto forma di normali file system file o cartelle.

Esistono diverse situazioni in cui l'archiviazione dei dati come raccolta di file system e file potrebbe essere indesiderata o persino impossibile. Alcuni esempi di questo tipo di dati includono:

  • Raccolta di elementi inseriti in un unico file, ad esempio un database.
  • Raccolta di elementi archiviati in un computer remoto che non dispone di un file system Windows standard. Un esempio di tali dati è costituito dalle informazioni archiviate in un assistente digitale personale (PDA) o in una fotocamera digitale.
  • Raccolta di elementi che non rappresentano i dati archiviati. Un esempio di tali dati è costituito dai collegamenti della stampante contenuti nella cartella Stampanti standard.

Un modo per presentare questo tipo di dati a un utente consiste nel scrivere un'applicazione per consentire agli utenti di visualizzare e interagire con i vari elementi. Tuttavia, se i dati possono essere presentati come una gerarchia di cartelle/file, gran parte delle funzionalità che sarà necessario implementare potrebbero essere servizi dell'interfaccia utente già forniti da Esplora risorse. Un approccio molto più efficiente potrebbe essere scrivere un'estensione di Namespace e consentire a Esplora File di diventare la tua GUI.

Per implementare un'estensione dello spazio dei nomi, le informazioni devono essere organizzate come spazio dei nomi strutturato ad albero. La radice del namespace è presentata come cartella virtuale nel namespace Shell. La cartella radice, e tutte le relative sottocartelle e elementi di dati, diventano parte dello spazio dei nomi della Shell ed Esplora file diventa la tua interfaccia utente. È quindi possibile presentare le informazioni all'utente in modo familiare e facilmente accessibile con molto meno programmazione dell'interfaccia utente di quanto sarebbe necessario per un'applicazione personalizzata.

Un'estensione dello spazio dei nomi è costituita da due componenti di base:

  • Un gestore dati
  • Interfaccia tra Gestione dati e Esplora risorse

La scelta del primo componente dell'elenco spetta interamente a te. È possibile archiviare e gestire i dati in qualsiasi modo sia più efficace. Il secondo componente è il codice necessario per confezionare i dati come oggetti di cartella e gestire l'interazione con Esplora file. Esplora file può quindi chiamare questi oggetti per consentire agli utenti di visualizzare e interagire con i dati come se fossero una raccolta di cartelle e file. Gli oggetti cartella dell'estensione del namespace devono interagire con Esplora File come se fossero cartelle normali. Prima di tentare di implementare un'estensione dello spazio dei nomi, è necessario comprendere in che modo Esplora Risorse gestisce un oggetto cartella.

Oggetto predefinito di visualizzazione delle cartelle di sistema (DefView)

La Shell fornisce un'implementazione predefinita della visualizzazione cartelle, nota in modo colloquiale come DefView, così da evitare gran parte del lavoro necessario per implementare un'estensione dello spazio dei nomi personalizzata. Poiché alcune funzionalità di visualizzazione non possono essere ottenute tramite visualizzazioni personalizzate, è spesso consigliabile usare l'oggetto visualizzazione cartelle di sistema predefinito al posto di una visualizzazione personalizzata. Per altre informazioni, vedere SHCreateShellFolderView.

Come Esplora file interagisce con un'estensione dello spazio dei nomi

Esplora File offre agli utenti un'interfaccia utente grafica che consente loro di eseguire diverse attività, tra cui:

  • La navigazione della gerarchia dello spazio dei nomi e la visualizzazione del contenuto delle cartelle.
  • Gestione il contenuto dello spazio dei nomi spostando, eliminando e copiando oggetti.
  • Recupero un'ampia gamma di informazioni sugli oggetti.
  • Avvio di applicazioni.

L'interfaccia utente grafica di Esplora file di Windows ha cinque componenti di base. La figura seguente denomina i componenti e mostra dove vengono in genere visualizzati in Esplora risorse.

illustrazione che mostra i componenti dell'interfaccia utente di Esplora finestre

Quando un utente visualizza una cartella che appartiene a un'estensione dello spazio dei nomi in Esplora risorse, l'oggetto cartella ha almeno un controllo parziale sul contenuto di tutte e cinque le aree.

Visualizzazione albero

La visualizzazione albero offre una visualizzazione generale dello spazio dei nomi. Questa area ospita un controllo di visualizzazione albero in grado di visualizzare ogni cartella dello spazio dei nomi e la posizione della cartella nella gerarchia dello spazio dei nomi. Un utente può eseguire diverse operazioni con l'area di visualizzazione albero, tra cui:

  • Visualizzare o nascondere il livello successivo nello spazio dei nomi.
  • Copia, spostamento o eliminazione di cartelle.
  • Fare clic con il pulsante destro del mouse su una cartella per visualizzare un menu di scelta rapida.
  • Selezione di una cartella e visualizzazione del relativo contenuto nella visualizzazione cartella.

La visualizzazione ad albero comunica principalmente con gli oggetti di cartella tramite l'interfaccia IShellFolder. Ad esempio, quando un utente fa clic sul segno più (+) accanto all'icona della cartella, Esplora risorse espande la visualizzazione per visualizzare le sottocartelle della cartella. Per ottenere le informazioni necessarie per aggiornare la visualizzazione albero, la Shell effettua diverse chiamate all'interfaccia di IShellFolder dell'oggetto cartella:

  • Richiedere gli attributi della cartella.
  • Enumerare il contenuto della cartella.
  • Richiedi i nomi visualizzati per ogni sottocartella.
  • Richiedere un'icona da visualizzare accanto a ogni cartella.

Esplora file quindi aggiorna la struttura ad albero per mostrare le sottocartelle della cartella selezionata. Se le sottocartelle hanno sottocartelle, accanto all'icona della cartella viene visualizzato un carattere '+'. Esistono diverse attività più sofisticate che un utente può eseguire anche con la visualizzazione albero, tra cui:

  • Uso degli Appunti per tagliare o copiare una cartella e incollarla in un'altra cartella.
  • Trascina e rilascia per tagliare o copiare una cartella e rilasciarla in un'altra cartella.
  • Uso di un motore di ricerca per cercare gli elementi in una cartella o nelle relative sottocartelle.
  • Modifica delle proprietà della cartella.

Per una descrizione più dettagliata del modo in cui un'estensione di namespace gestisce queste azioni utente, vedere Implementazione delle interfacce dell'oggetto cartella di base.

Visualizzazione cartelle

Quando un utente seleziona una cartella, il contenuto della cartella viene visualizzato nella visualizzazione cartella. In alcuni casi, la normale funzionalità della visualizzazione cartelle si sovrappone alla visualizzazione albero. Gli utenti possono spostare o copiare cartelle, modificare le proprietà delle cartelle, visualizzare il contenuto di una sottocartella, visualizzare un menu di scelta rapida per una cartella e così via. Esistono tuttavia alcune differenze distinte tra la visualizzazione albero e la visualizzazione cartelle:

  • La visualizzazione cartella visualizza solo il contenuto di una singola cartella, non parte o tutta la gerarchia dello spazio dei nomi.
  • La visualizzazione delle cartelle mostra sia i file che le cartelle.
  • La visualizzazione cartella può visualizzare molte più informazioni sugli oggetti rispetto alla visualizzazione albero.
  • La visualizzazione delle cartelle consente alle estensioni del namespace di avere un controllo quasi totale su quali informazioni vengono mostrate e in che modo. È possibile modificare solo alcuni aspetti secondari della visualizzazione albero, ad esempio le icone delle cartelle.

A differenza della visualizzazione dell'albero, Esplora file non controlla direttamente il contenuto della visualizzazione cartelle. La visualizzazione delle cartelle è un'area fornita da Esplora File per gli oggetti della cartella. La visualizzazione e la gestione del contenuto di una cartella nella visualizzazione cartelle sono responsabilità dell'oggetto cartella. Sebbene la maggior parte delle visualizzazioni delle cartelle segua un formato abbastanza standard, esistono in realtà poche limitazioni su ciò che può essere visualizzato o come. Un caso estremo è la cartella Internet, che è un browser completo.

Quando un utente seleziona una cartella che appartiene alla tua estensione dello spazio dei nomi, crei una finestra e passi il relativo handle a Esplora File. Questa finestra diventa un elemento figlio della finestra di visualizzazione cartelle. Esplora file fornisce le dimensioni della finestra di visualizzazione cartelle, ma non impone restrizioni sul contenuto della finestra figlio. È quindi possibile usare la finestra figlio per visualizzare la visualizzazione della cartella.

Le estensioni del namespace usano uno dei due approcci per creare una vista delle cartelle.

  • Usare la finestra figlio per ospitare un controllo di visualizzazione elenco . Questo controllo consente di visualizzare il contenuto di una cartella nello stesso modo in cui Esplora risorse visualizzazione classica.
  • Usare la finestra figlio per ospitare un controllo WebBrowser e usare un documento DHTML (Dynamic HTML) per visualizzare il contenuto della cartella.

Entrambi gli approcci visualizzano una visualizzazione cartelle molto simile a quella visualizzata per le cartelle di sistema. Tuttavia, se si vuole usare uno schema di visualizzazione diverso, è possibile farlo.

Analogamente alla maggior parte delle applicazioni Windows, Esplora risorse fornisce all'utente una raccolta di strumenti. È disponibile una selezione completa degli strumenti tramite la barra dei menu. Gli strumenti più comunemente usati sono rappresentati anche da pulsanti o caselle di modifica su una barra degli strumenti. A differenza di molte applicazioni Windows, la barra dei menu di Esplora risorse è in realtà un controllo barra degli strumenti che è stato personalizzato per comportarsi come un menu convenzionale. Sia la barra dei menu che la barra degli strumenti sono incorporate in un controllo rebar per permettere agli utenti di organizzare i singoli controlli secondo le loro necessità.

Per impostazione predefinita, Esplora risorse supporta un set standard di pulsanti e voci di menu, ad esempio Copia e Proprietà. L'estensione dello spazio dei nomi può personalizzare la barra dei menu e le barre degli strumenti eliminando gli strumenti standard e aggiungendo strumenti personalizzati. Quando l'oggetto visualizzazione cartelle viene inizializzato, Esplora risorse passa un puntatore al relativo interfaccia IShellBrowser. Questa interfaccia supporta diversi metodi che è possibile chiamare per personalizzare la barra dei menu e la barra degli strumenti. Quando l'utente seleziona una delle voci di menu o dei pulsanti della barra degli strumenti personalizzati, Esplora File inoltra i messaggi WM_COMMAND per voci personalizzate di menu e barre degli strumenti alla procedura della finestra figlio.

Barra di stato

La barra di stato di Esplora risorse visualizza informazioni sull'oggetto attualmente selezionato. L'estensione dello spazio dei nomi può usare la barra di stato per visualizzare informazioni sullo stato, ad esempio una stringa di testo. È possibile personalizzare la barra di stato chiamando IShellBrowser.