Gestori delle finestre delle proprietà

Quando un utente fa clic con il pulsante destro del mouse su un oggetto Shell, il menu di scelta rapida visualizzato normalmente include un elemento Proprietà . Se si seleziona tale elemento, viene avviata una finestra delle proprietà che consente all'utente di visualizzare e, in alcuni casi, di modificare le proprietà dell'oggetto. È possibile personalizzare questa finestra delle proprietà implementando e registrando un gestore della finestra delle proprietà.

Le procedure generali per l'implementazione e la registrazione di un gestore di estensioni shell sono descritte in Creazione di gestori di estensioni della shell. Questo documento è incentrato sugli aspetti dell'implementazione specifici dei gestori delle finestre delle proprietà.

Funzionamento dei gestori delle finestre delle proprietà

La figura seguente mostra la finestra delle proprietà Properties per un file di testo di Windows XP.

finestra delle proprietà

Questa figura mostra la finestra delle proprietà proprietà predefinita visualizzata per qualsiasi file. Per molte di queste finestre delle proprietà, è possibile aggiungere una o più pagine alla finestra delle proprietà implementando e registrando un gestore della finestra delle proprietà.

I gestori delle finestre delle proprietà sono in genere registrati per un tipo di file. Ogni gestore può aggiungere una pagina personalizzata alla finestra delle proprietà Proprietà per la classe . Queste pagine in genere consentono agli utenti di accedere alle proprietà specifiche del tipo di file specifico. Un tipo di file costituito da documenti di testo può, ad esempio, visualizzare una pagina che elenca il titolo e l'autore e un'astrazione del documento. Un caso speciale di questo tipo di gestore della finestra delle proprietà viene utilizzato per aggiungere una pagina alla finestra delle proprietà Proprietà per un'unità montata.

L'altro uso per i gestori delle finestre delle proprietà consiste nel sostituire le pagine nelle finestre delle proprietà visualizzate da Pannello di controllo applicazioni. Un produttore del mouse, ad esempio, può utilizzare un gestore della finestra delle proprietà per sostituire la pagina Pulsanti nella finestra delle proprietà Proprietà mouse del Pannello di controllo con una pagina personalizzata per le caratteristiche del mouse.

Analogamente a tutti i gestori di estensioni shell, i gestori delle finestre delle proprietà sono oggetti COM (Component Object Model) in-process implementati come DLL. Devono esportare due interfacce oltre a IUnknown: IShellExtInit e IShellPropSheetExt.

L'interfaccia IShellExtInit viene usata dalla shell per inizializzare il gestore. Quando shell chiama IShellExtInit::Initialize, passa un oggetto dati con il nome dell'oggetto e il puntatore a un elenco di identificatori di elemento (PIDL) della cartella che contiene il file. Il parametro hRegKey non viene usato con i gestori della finestra delle proprietà. Il metodo IShellExtInit::Initialize deve estrarre il nome del file dall'oggetto dati e archiviare il nome e il PIDL della cartella per usarli in un secondo momento. Per altri dettagli, vedere la sezione Implementazione di IShellExtInit di Creazione di gestori di estensioni della shell.

Il resto dell'operazione viene eseguito tramite l'interfaccia IShellPropSheetExt del gestore. Se la finestra delle proprietà è associata a un tipo di file, shell chiama IShellPropSheetExt::AddPages per consentire al gestore di aggiungere una pagina alla finestra delle proprietà. Se la finestra delle proprietà è associata a un'applicazione Pannello di controllo, shell chiama IShellPropSheetExt::ReplacePage per consentire al gestore di sostituire una pagina.

Registrazione e implementazione di un gestore della finestra delle proprietà per un'unità montata

Ogni unità montata dispone di un foglio Proprietà che può essere visualizzato dall'utente. La figura seguente mostra una finestra delle proprietà Properties per un'unità CD-ROM.

Finestra delle proprietà cd-rom

Esistono un'ampia gamma di dispositivi che possono essere montati come unità. Poiché la finestra delle proprietà predefinita, progettata per le unità disco, potrebbe non essere sufficiente per alcuni dispositivi, è possibile implementare un gestore della finestra delle proprietà per aggiungere una pagina specifica per il dispositivo montato. L'implementazione di base di questo tipo di gestore della finestra delle proprietà è identica a quella descritta in Come registrare e implementare un gestore della finestra delle proprietà per un tipo di file, con due eccezioni.

  • L'oggetto dati passato al metodo IShellExtInit::Initialize del gestore può contenere il percorso dell'unità nel formato CFSTR_MOUNTEDVOLUME anziché nel formato CF_HDROP . Il formato CF_HDROP viene usato quando il dispositivo viene montato in una lettera di unità. Il formato CFSTR_MOUNTEDVOLUME viene usato con i file system NTFS quando il dispositivo remoto viene montato in una cartella anziché in una lettera di unità.
  • Il GUID del gestore viene registrato nella chiave HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers .

Come registrare e implementare un gestore della finestra delle proprietà per un tipo di file

Come registrare e implementare un gestore della finestra delle proprietà per un'applicazione Pannello di controllo