Delen via


Aanbevolen procedures voor snelmenuhandlers en meerdere werkwoorden

Dit onderwerp is als volgt ingedeeld:

Beste werkwijzen

Statische werkwoorden zijn eenvoudigste werkwoorden om te implementeren en bieden uitgebreide functionaliteit. We raden u ten zeerste aan een werkwoord te implementeren met behulp van een van de statische werkwoordmethoden.

Aanbevolen procedures voor werkwoord-implementaties

De volgende lijst bevat aanbevolen procedures voor implementaties van werkwoorden:

  • Kies altijd de eenvoudigste werkwoordsmethode die aan uw behoeften voldoet.
  • Gebruik indien mogelijk een statische werkwoordsmethode.
  • Voer geen resource-intensieve bewerkingen of I/O uit op de UI-thread. Zowel IShellExtInit::Initialize als IContextMenu::QueryContextMenu moeten erg conservatief zijn in het werk dat ze uitvoeren. IContextMenu::InvokeCommand- moet worden uitgevoerd in een ander proces of u moet een nieuwe thread maken om te voorkomen dat de aanroeper wordt geblokkeerd.
  • Plaats voor het werkwoord de naam van de onafhankelijke softwareleverancier (ISV), als volgt, ISVName.verb. Het gebruik van niet-gekwalificeerde namen kan leiden tot conflicten met meerdere ISV's die dezelfde werkwoordnaam hebben gekozen.
  • Gebruik altijd een toepassingsspecifieke ProgID. Omdat sommige itemtypen deze toewijzing niet gebruiken, is er behoefte aan unieke namen van leveranciers.
  • Plaats de gebruikersinterface ten opzichte van de aanroepmethode, maar voer niet uit op een invoker-thread.
  • Accepteer de retourwaarde niet S_OK voor canonieke werkwoorden die zijn doorgegeven aan de methode IContextMenu::InvokeCommand. Als u dit doet, wordt een fout veroorzaakt voor de echte werkwoordsuitvoering die wordt aangeroepen en wordt er een foutcode geretourneerd voor canonieke werkwoorden. Als u geen canonieke werkwoorden ondersteunt, moet u een fout teruggeven wanneer een niet-nulwaarde voor HIWORD(lpVerb) wordt aangetroffen.
  • Vermijd het gebruik van rundll32.exe als host voor uw werkwoord.
  • Bij het implementeren van IContextMenu::QueryContextMenu moet u ervoor zorgen dat u het aantal werkwoorden retourneert dat via de HRESULT--waarde is toegevoegd aan het menu met behulp van de macro ResultFromShort.
  • Als u zich registreert op een van de volgende registersleutelvermeldingen, wees dan voorzichtig en zorg ervoor dat u uw handler registreert op het meest specifieke type om de mogelijk onbedoelde gevolgen te verminderen:
    • HKEY_CLASSES_ROOT\*
    • HKEY_CLASSES_ROOT\AllFileSystemObjects
    • HKEY_CLASSES_ROOT\Folder
    • HKEY_CLASSES_ROOT\Directory
  • Stel de MayChangeDefaultMenu sleutel alleen in als u verwacht dat u mogelijk het standaardwerkwoord in het snelmenu moet wijzigen. Als uw handler het standaardwerkwoord niet wijzigt, moet u deze sleutel niet instellen omdat dit ervoor zorgt dat het systeem uw DLL onnodig laadt.
  • Minimaliseer het werk dat u uitvoert in IShellExtInit::Initialiseer. Voor snelmenuhandlers legt u het gegevensobject vast dat is doorgegeven aan IShellExtInit::Initialiseeren verwerkt u het vervolgens in IContextMenu::QueryContextMenuof IContextMenu::InvokeCommand.

Beste praktijken voor meervoudige selectiewerkwoorden

Omdat het aantal items in een werkwoordsscenario met meerdere selecties groot kan zijn, is het belangrijk dat u rekening houdt met de gevolgen voor de prestaties van uw werkwoord-implementaties. Wanneer een gebruiker bijvoorbeeld zoekt naar '*' via een bereik dat grote aantallen items bevat en vervolgens klikt op Alle selecteren en met de rechtermuisknop klikt, wordt het werkwoord weergegeven met een selectie die duizenden items erin kan bevatten. Daardoor mogen werkwoorden alleen rekening houden met het eerste item in de selectie en het totale aantal items. Het eerste item wordt gedefinieerd als het item bovenaan de weergave of het item waarop de gebruiker eerst met de rechtermuisknop heeft geklikt.

In Windows 7 en hoger is het aantal items dat aan een werkwoord wordt doorgegeven, beperkt tot 16 wanneer een snelmenu wordt opgevraagd. Het werkwoord wordt vervolgens opnieuw gemaakt en opnieuw geïnitialiseerd met de volledige selectie wanneer dat werkwoord wordt aangeroepen.

Het is in sommige gevallen passend om een klein aantal vaste items te overwegen. Het is bijvoorbeeld geschikt voor een 'diff'-werkwoord om alleen rekening te houden met de eerste twee items. Over het algemeen hoeft u niet elk item in de selectie te testen om te zien of het een bepaald type is of een query uit te voeren op elk item in de selectie voor de eigenschappen ervan. Kijk liever naar het eerste item en bepaal of het geschikt is om uw werkwoord toe te voegen.

Heterogene selecties

Optimistische werkwoorden worden automatisch toegevoegd in de case voor meervoudige selectie, ervan uitgaande dat niet-geïnspecteerde items door het werkwoord kunnen worden verwerkt. Pessimistische werkwoorden worden daarentegen niet toegevoegd wanneer de selectie niet-geïnspecteerd items bevat en alleen worden toegevoegd in gevallen waarin het aantal items klein is.

Werkwoorden in de spelerstijl moeten optimistisch zijn en de items die niet worden verwerkt, geruisloos overslaan. Als het niet handelen op items kan leiden tot gegevensverlies of verwarring, moet het werkwoord gebruikers waarschuwen over items die niet kunnen worden verwerkt. Een back-upwerkwoord moet bijvoorbeeld aangeven dat een back-up van sommige items niet kan worden gemaakt.

een statisch of dynamisch werkwoord kiezen voor het snelmenu

Snelkoppelingsmenuhandlers maken

een snelmenu aanpassen met dynamische werkwoorden

snelmenu's en snelmenu-handlers

werkwoorden en bestandskoppelingen

snelmenu referentie