Condividi tramite


Aggiunta di icone e menu di scelta rapida con estensioni della shell

Nota

Windows Desktop Search 2.x è una tecnologia obsoleta originariamente disponibile come componente aggiuntivo per Windows XP e Windows Server 2003. Nelle versioni successive, usare invece Windows Search .

È possibile migliorare l'esperienza degli utenti con Microsoft Windows Desktop Search (WDS) e il gestore del protocollo implementando le estensioni shell. Senza un'ulteriore estensione, il gestore del protocollo creato non includerà le esperienze utente seguenti:

  • WdS non visualizzerà icone specifiche per i risultati.
  • Quando gli utenti fa doppio clic su un elemento, l'interfaccia utente non risponderà all'evento.
  • Quando gli utenti fa clic con il pulsante destro del mouse su un elemento, il menu di scelta rapida non supporterà alcuna operazione per l'elemento.

Le implementazioni minime di IPersist e IPersistFolder sono richieste da IShellFolder e un'implementazione minima di IShellFolder è necessaria per IContextMenu e IExtractIcon, le due interfacce che offrono un'esperienza utente più semplice.

 

Ipersist

L'interfaccia IPersist definisce il metodo singolo GetClassID, progettato per fornire il CLSID di un oggetto che può essere archiviato in modo permanente nel sistema.

Metodo Descrizione
GetClassID() Restituisce l'ID classe del gestore del protocollo

 

Nota

Lo stesso CLSID deve essere implementato per IPersist, IPersistFolder e IShellFolder.

 

 

IPersistFolder

L'interfaccia IPersistFolder viene utilizzata per inizializzare gli oggetti della cartella Shell. L'implementazione di questa interfaccia, derivata da IPersist, è il modo in cui viene indicato dove si trova nello spazio dei nomi shell.

Metodo Descrizione
Initialize() Indica a un oggetto cartella shell di inizializzarsi in base alle informazioni passate e restituisce S_OK

 

Nota

Lo stesso CLSID deve essere implementato per IPersist, IPersistFolder e IShellFolder.

 

Questa interfaccia non viene usata direttamente. Viene usato dall'implementazione del file system dell'interfaccia IShellFolder::BindToObject quando inizializza un oggetto cartella shell.

 

IShellFolder

L'interfaccia IShellFolder viene usata per gestire le cartelle e è necessaria un'implementazione parziale in modo che l'icona e le interfacce di contesto implementate per un gestore di protocolli si comportino correttamente nell'interfaccia utente dei risultati di Windows Desktop Search. La maggior parte delle funzionalità necessarie viene esposta tramite il metodo GetUIObjectOf . Questo metodo consente a un componente aggiuntivo di eseguire una query per le interfacce IExtractIcon e IContextMenu .

L'interfaccia IShellFolder usa PIDLs anziché URL. A differenza dei requisiti di un'estensione dello spazio dei nomi completa, i componenti aggiuntivi possono usare una semplice struttura IDL che contiene solo l'URL.

È necessario implementare i metodi seguenti di IShellFolder . Si noti che cinque di questi metodi richiedono un'implementazione minima.

Metodo Descrizione
BindToObject() Restituisce E_NOTIMPL
BindToStorage() Restituisce E_NOTIMPL
CreateViewObject() Restituisce E_NOTIMPL
SetNameOf() Restituisce E_NOTIMPL
ParseDisplayName() Converte un URL nella struttura PIDL
CompareIDs() Confronta due valori PIDL
GetDisplayNameOf() Restituisce l'URL di un FILE PIDL
GetUIObjectOf() Questo metodo è simile al metodo OLE COM QueryInterface. Se viene richiesta un'icona, il chiamante richiede il IID_IExtractIcon; se viene richiesto un menu di scelta rapida, il chiamante richiede il IID_IContextMenu.

 

Nota

Lo stesso CLSID deve essere implementato per IPersist, IPersistFolder e IShellFolder.

 

IShellFolder non viene usato per enumerare le cartelle. Ciò significa che il nome visualizzato di una cartella sarà l'URL fisico. Questo potrebbe cambiare in futuro.

 

IContextMenu

Quando WDS visualizza i risultati all'utente, l'utente può fare clic con il pulsante destro del mouse su un elemento e visualizzare un menu di scelta rapida definito dall'interfaccia IContextMenu .

L'azione predefinita nel menu di scelta rapida è la stessa azione eseguita quando si fa doppio clic sull'elemento. Senza le interfacce IShellFolder o IContextMenu corrispondenti per l'elemento, il comportamento predefinito per un evento di doppio clic consiste nel passare l'URL come argomento alla funzione ShellExecute.

 

IExtractIcon

IExtractIcon recupera un'icona per l'interfaccia utente WDS in base all'URL nel PIDL fornito dal gestore del protocollo.

 

Codice di esempio

Il codice di esempio dell'interfaccia utente del gestore del protocollo personalizzato illustra un'implementazione di IShellFolder e interfacce di supporto e include il supporto per la modifica dei PIDL.

Riferimento

Codice di esempio dell'interfaccia utente del gestore del protocollo personalizzato

Installazione e registrazione dei gestori di protocollo