Share via


Procedure consigliate per i gestori di menu di scelta rapida e più verbi

Questo argomento è organizzato come segue:

Procedure consigliate

Il verbo statico è un verbo più semplice da implementare e offre funzionalità avanzate. È consigliabile implementare un verbo usando uno dei metodi dei verbi statici.

Procedure consigliate per implementazioni verbo

L'elenco seguente rappresenta le procedure consigliate per le implementazioni dei verbi:

  • Scegliere sempre il metodo verbo più semplice che soddisfi le proprie esigenze.
  • Se possibile, usare un metodo verbo statico.
  • Non eseguire operazioni a elevato utilizzo di risorse o operazioni di I/O nel thread dell'interfaccia utente. Sia IShellExtInit::Initialize che IContextMenu::QueryContextMenu devono essere molto conservativi nel lavoro svolto. IContextMenu::InvokeCommand deve essere eseguito in un altro processo oppure è necessario creare un nuovo thread per evitare di bloccare il chiamante.
  • Prefissi i verbi con il nome del fornitore di software indipendente (ISV) come indicato di seguito. ISVName.verb L'uso di nomi non qualificati può causare conflitti con più ISV che hanno scelto lo stesso nome verbo.
  • Usare sempre un ProgID specifico dell'applicazione. Poiché alcuni tipi di elementi non usano questo mapping, è necessario specificare nomi univoci del fornitore.
  • Posizionare l'interfaccia utente rispetto al metodo di chiamata, ma non in un thread invoker.
  • Non accettare il valore restituito S_OK per i verbi canonici passati al metodo IContextMenu::InvokeCommand . In questo modo viene generato un errore per l'implementazione del verbo reale e viene restituito un codice di errore per i verbi canonici. Se non si supportano i verbi canonici, restituire l'errore quando viene rilevato un valore HIWORD(lpVerb) diverso da zero.
  • Evitare l'uso di rundll32.exe come host per il verbo.
  • Quando si implementa IContextMenu::QueryContextMenu , assicurarsi di restituire il numero di verbi aggiunti al menu tramite il valore HRESULT usando la macro ResultFromShort.
  • Se si esegue la registrazione in una delle voci di chiave del Registro di sistema seguenti, prestare attenzione e assicurarsi di registrare il gestore nel tipo più specifico per ridurre le possibili conseguenze impreviste:
    • HKEY_CLASSES_ROOT\*
    • HKEY_CLASSES_ROOT\AllFileSystemObjects
    • HKEY_CLASSES_ROOT\Folder
    • HKEY_CLASSES_ROOT\Directory
  • Impostare il tasto MayChangeDefaultMenu solo se si prevede che potrebbe essere necessario modificare il verbo predefinito nel menu di scelta rapida. Se il gestore non modifica il verbo predefinito, non è consigliabile impostare questa chiave perché in questo modo il sistema carica la DLL inutilmente.
  • Ridurre al minimo il lavoro eseguito in IShellExtInit::Initialize. Per i gestori di menu di scelta rapida, acquisire l'oggetto dati passato a IShellExtInit::Initialize e quindi elaborarlo in IContextMenu::QueryContextMenu o IContextMenu::InvokeCommand.

Procedure consigliate per più verbi di selezione

Poiché il numero di elementi in uno scenario di verbo a selezione multipla può essere elevato, è importante considerare le implicazioni sulle prestazioni delle implementazioni verbo. Ad esempio, quando un utente cerca "*" su un ambito che include un numero elevato di elementi e quindi fa clic su Seleziona tutto e fa clic con il pulsante destro del mouse, il verbo viene visualizzato con una selezione che può contenere migliaia di elementi. Di conseguenza, i verbi devono considerare solo il primo elemento nella selezione e il conteggio complessivo degli elementi. Il primo elemento viene definito come elemento nella parte superiore della visualizzazione o come elemento su cui l'utente ha fatto clic con il pulsante destro del mouse.

In Windows 7 e versioni successive, il numero di elementi passati a un verbo è limitato a 16 quando viene eseguita una query in un menu di scelta rapida. Il verbo viene quindi ricreato e nuovamente inizializzato con la selezione completa quando viene richiamato il verbo.

In alcuni casi è opportuno considerare un numero ridotto di elementi fissi. Ad esempio, è opportuno che un verbo "diff" consideri solo i primi due elementi. In genere, non è necessario testare ogni elemento nella selezione per verificare se si tratta di un determinato tipo o eseguire una query su ogni elemento nella selezione per le relative proprietà. Esaminare piuttosto il primo elemento e decidere se è appropriato aggiungere il verbo.

Selezioni eterogene

I verbi ottimistici vengono aggiunti automaticamente nel caso di selezione multipla, presupponendo che gli elementi non rilevati possano essere gestiti dal verbo. Al contrario, i verbi pessimistici non vengono aggiunti quando la selezione contiene elementi non rilevati e vengono aggiunti solo nei casi in cui il numero di elementi è ridotto.

I verbi dello stile del giocatore devono essere ottimistici e ignorare automaticamente gli elementi non gestiti. Se un errore di agire sugli elementi può causare perdita di dati o confusione, il verbo deve avvisare gli utenti sugli elementi che non possono essere elaborati. Ad esempio, un verbo "backup" deve indicare che non è stato possibile eseguire il backup di alcuni elementi.

Scelta di un verbo statico o dinamico per il menu di scelta rapida

Creazione di gestori di menu di scelta rapida

Personalizzazione di un menu di scelta rapida tramite verbi dinamici

Menu di scelta rapida e gestori di menu di scelta rapida

Verbi e associazioni di file

Informazioni di riferimento sul menu di scelta rapida