Uso delle estensioni shell

Le funzionalità della shell possono essere estese con voci del Registro di sistema e file .ini. Sebbene questo approccio all'estensione della shell sia semplice e adeguato per molti scopi, è limitato. Ad esempio, se si usa il Registro di sistema per specificare un'icona personalizzata per un tipo di file, verrà visualizzata la stessa icona per ogni file di quel tipo. L'estensione della shell con il Registro di sistema non consente di variare l'icona per i diversi membri del tipo di file. Altri aspetti della shell, ad esempio la finestra delle proprietà Proprietà che è possibile visualizzare quando si fa clic con il pulsante destro del mouse su un file, non possono essere modificati affatto con il Registro di sistema.

Un approccio più potente e flessibile per estendere shell consiste nell'implementare gestori di estensioni della shell. Questi gestori possono essere implementati per un'ampia gamma di azioni che possono essere eseguite dalla shell. Prima di eseguire l'azione, shell esegue una query sul gestore dell'estensione, dandogli la possibilità di modificare l'azione. Un esempio comune è un gestore di estensioni per i menu di scelta rapida. Se viene implementato per un tipo di file, verrà eseguita una query ogni volta che si fa clic con il pulsante destro del mouse su uno dei file. Il gestore può quindi specificare voci di menu aggiuntive per file in base al file, anziché avere lo stesso set per tutti i file di quel tipo di file.

Questo set di argomenti illustra come implementare i gestori di estensione che consentono di modificare un'ampia gamma di azioni shell. I seguenti gestori sono associati a un particolare tipo di file e consentono di specificare le impostazioni per ogni singolo file.

Gestore Description
gestore dei menu di scelta rapida Chiamato prima che venga visualizzato il menu di scelta rapida di un file. Consente di aggiungere elementi al menu di scelta rapida per singolo file.
Gestore dati Chiamato quando si esegue un'operazione di drag-and-drop sugli oggetti Shell. Consente di fornire altri formati degli Appunti alla destinazione di rilascio.
Gestore del drop Chiamato quando un oggetto dati viene trascinato o rilasciato su un file. Consente di trasformare un file in una destinazione di rilascio.
Gestore di icone Chiamato prima che venga visualizzata l'icona di un file. Consente di sostituire l'icona predefinita del file con un'icona personalizzata in base al file.
Gestore della finestra delle proprietà Chiamato prima che venga visualizzata la finestra delle proprietà Properties di un oggetto. Consente di aggiungere o sostituire pagine.
Gestore dell'immagine di anteprima Fornisce un'immagine per rappresentare l'elemento.
Gestore descrizione informazioni Fornisce testo popup quando l'utente passa il puntatore del mouse sull'oggetto.
Gestore dei metadati Fornisce l'accesso in lettura e scrittura ai metadati (proprietà) archiviati in un file. Può essere utilizzato per estendere la vista Dettagli, i suggerimenti, la pagina delle proprietà e le funzionalità di raggruppamento.

 

Altri non sono associati a un particolare tipo di file, ma vengono chiamati prima di alcune operazioni della shell.

Gestore Description
Gestore di colonne Chiamato da Windows Explorer prima di visualizzare la visualizzazione Dettagli di una cartella. Consente di aggiungere colonne personalizzate alla visualizzazione Dettagli.
Gestore dell'hook di copia Chiamato quando un oggetto cartella o stampante sta per essere spostato, copiato, eliminato o rinominato. Consente di approvare o veto l'operazione.
Gestore trascinamento della selezione Chiamato quando un file viene trascinato con il pulsante destro del mouse. Consente di modificare il menu di scelta rapida visualizzato.
Gestore overlay icona Chiamato prima che venga visualizzata l'icona di un file. Consente di specificare una sovrimpressione per l'icona del file.
Gestore di ricerca Chiamato per avviare un motore di ricerca. Consente di implementare un motore di ricerca personalizzato accessibile dal menu Start o Windows Explorer.

 

I dettagli su come implementare gestori di estensione specifici sono illustrati nelle sezioni elencate in precedenza. Per le discussioni sui problemi di implementazione comuni a tutti i gestori di estensioni shell, vedere questi argomenti:

Note

Considerazioni sulla sicurezza e la stabilità: I gestori di estensione della shell sono DLL COM in-process che vengono caricate direttamente nel processo di Explorer (o qualsiasi processo che ospita shell). Un arresto anomalo o un blocco dell'estensione causerà un arresto anomalo o un blocco di Explorer per tutti gli utenti.

Requisiti chiave:

  • Eseguire la registrazione con ThreadingModel = Apartment : le visualizzazioni shell di Explorer vengono eseguite in un thread STA. L'uso di Free o Both può causare bug di threading subdoli.
  • Gestire correttamente la consapevolezza DPI: Explorer è in grado di tenere conto dei valori DPI per monitor. Le estensioni che presuppongono un valore DPI fisso eseguiranno il rendering non corretto nelle configurazioni multi-monitor.
  • Per le app in pacchetto (MSIX), usare la registrazione basata su manifesto tramite l'elemento desktop4:Extension o un pacchetto sparse anziché scrivere direttamente le chiavi del Registro di sistema.
  • Considerare se un approccio più semplice (registrazione statica dei verbi, .reg associazione di file o le API Windows.Storage.Provider) possa soddisfare le esigenze prima di implementare un'estensione completa della shell COM.