Dela via


Skapa snabbmenyhanterare

Snabbmenyhanterare, även kallade snabbmenyhanterare eller verbhanterare, är en typ av filtypshanterare. Dessa hanterare kan implementeras på ett sätt som gör att de laddas i sin egen process eller i Windows Utforskaren, eller andra processer från tredje part. Var försiktig när du skapar processhanterare eftersom de kan skada processen som läser in dem.

Not

Det finns särskilda överväganden för 64-bitarsbaserade versioner av Windows när du registrerar hanterare som fungerar i kontexten för 32-bitarsprogram: när det anropas i samband med ett program med olika bitness omdirigerar WOW64-undersystemet filsystemåtkomst till vissa sökvägar. Om din .exe-hanterare lagras i någon av dessa sökvägar är den inte tillgänglig i den här kontexten. Därför kan du antingen lagra din .exe i en sökväg som inte omdirigeras eller lagra en stub-version av din .exe som startar den verkliga versionen.

Det här avsnittet är ordnat på följande sätt:

Kanoniska verb

Program ansvarar vanligtvis för att tillhandahålla lokaliserade visningssträngar för de verb som de definierar. För att ge en viss grad av språkberoende definierar systemet dock en standarduppsättning vanliga verb som kallas kanoniska verb. Ett kanoniskt verb visas aldrig för användaren och kan användas med valfritt gränssnittsspråk. Systemet använder det kanoniska namnet för att automatiskt generera en korrekt lokaliserad visningssträng. Till exempel är det öppna verbets visningssträng inställd på Öppna på ett engelskt system och till den tyska motsvarigheten i ett tyskt system.

Kanoniskt verb Beskrivning
Öppna Öppnar filen eller mappen.
Opennew Öppnar filen eller mappen i ett nytt fönster.
Trycka Skriver ut filen.
Skriv ut till Tillåter att användaren skriver ut en fil genom att dra den till ett skrivarobjekt.
Utforska Öppnar Utforskaren med mappen markerad.
Egenskaper Öppnar objektets egenskapsblad.

Not

Det Printto- verbet är också kanoniskt, men det visas aldrig. Med dess inkludering kan användaren skriva ut en fil genom att dra den till ett skrivarobjekt.

Snabbmenyhanterare kan tillhandahålla egna kanoniska verb via IContextMenu::GetCommandString med GCS_VERBWeller GCS_VERBA. Systemet använder de kanoniska verben som den andra parametern (lpOperation) som skickas till ShellExecuteoch är CMINVOKECOMMANDINFO.lpVerb medlem skickad till metoden IContextMenu::InvokeCommand.

Utökade verb

När användaren högerklickar på ett objekt visar snabbmenyn standardverb. Du kanske vill lägga till och stödja kommandon på vissa snabbmenyer som inte visas på alla snabbmenyer. Du kan till exempel ha kommandon som inte används ofta eller som är avsedda för erfarna användare. Därför kan du också definiera ett eller flera utökade verb. Dessa verb liknar normala verb, men skiljer sig från normala verb på samma sätt som de registreras. Om du vill ha åtkomst till utökade verb måste användaren högerklicka på ett objekt medan du trycker på SKIFT-tangenten. När användaren gör det visas de utökade verben utöver standardverb.

Du kan använda registret för att definiera ett eller flera utökade verb. De associerade kommandona visas endast när användaren högerklickar på ett objekt samtidigt som du trycker på SKIFT-tangenten. Om du vill definiera ett verb som utökat lägger du till ett "utökat" REG_SZ värde i verbets undernyckel. Värdet bör inte ha några data associerade med det.

Endast verb för programmatisk åtkomst

Dessa verb visas aldrig i en snabbmeny. Du kan komma åt dessa med hjälp av ShellExecuteEx och ange fältet lpVerb i parametern pExecInfo (ett SHELLEXECUTEINFO--objekt). Om du bara vill definiera ett verb som programmatisk åtkomst lägger du till ett "ProgrammaticAccessOnly" REG_SZ värde i verbets undernyckel. Värdet bör inte ha några data associerade med det.

Du kan använda registret för att definiera ett eller flera utökade verb. De associerade kommandona visas endast när användaren högerklickar på ett objekt samtidigt som du trycker på SKIFT-tangenten. Om du vill definiera ett verb som utökat lägger du till ett "utökat" REG_SZ värde i verbets undernyckel. Värdet bör inte ha några data associerade med det.

Anpassa en snabbmeny med statiska verb

När Välja ett statiskt eller dynamiskt verb för snabbmenyn kan du utöka snabbmenyn för en filtyp genom att registrera ett statiskt verb för filtypen. Det gör du genom att lägga till en Shell- undernyckeln under undernyckeln för ProgID för programmet som är associerat med filtypen. Du kan också definiera ett standardverb för filtypen genom att göra det till standardvärdet för Shell- undernyckel.

Standardverb visas först på snabbmenyn. Syftet är att ge Shell ett verb som det kan använda när funktionen ShellExecuteEx anropas, men inget verb har angetts. Shell väljer inte nödvändigtvis standardverb när ShellExecuteEx används på det här sättet.

Shell använder det första tillgängliga verbet i följande ordning:

  1. Standardverbet
  2. Det första verbet i registret, om verbordningen anges
  3. Verbet Open
  4. Verbet Öppna med

Om inget av verben i listan är tillgängligt misslyckas åtgärden.

Skapa en undernyckel för varje verb som du vill lägga till under undernyckeln Shell. Var och en av dessa undernycklar måste ha ett REG_SZ värde inställt på verbets visningssträng (lokaliserad sträng). För varje verbundernyckel skapar du en kommandoundernyckel med standardvärdet inställt på kommandoraden för att aktivera objekten. För kanoniska verb, till exempel Open och Print, kan du utelämna visningssträngen eftersom systemet automatiskt visar en korrekt lokaliserad sträng. Om du utelämnar visningssträngen för icke-kanoniska verb, visas verbsträngen.

Observera följande registerexempel:

  • Eftersom Doit inte är ett kanoniskt verb tilldelas det ett visningsnamn som kan väljas genom att trycka på D-tangenten.
  • Verbet Printto visas inte på snabbmenyn. Men med dess inkludering i registret kan användaren skriva ut filer genom att släppa dem på en skrivarikon.
  • En undernyckel visas för varje verb. %1 representerar filnamnet och %2 skrivarnamnet.
HKEY_CLASSES_ROOT
   .myp-ms
      (Default) = MyProgram.1
   MyProgram.1
      (Default) = My Program Application
      Shell
         (Default) = doit
         doit
            (Default) = &Do It
            command
               (Default) = c:\MyDir\MyProgram.exe /d "%1"
         open
            command
               (Default) = c:\MyDir\MyProgram.exe /d "%1"
         print
            command
               (Default) = c:\MyDir\MyProgram.exe /p "%1"
         printto
            command
               (Default) = c:\MyDir\MyProgram.exe /p "%1" "%2"

Följande diagram illustrerar tillägget av snabbmenyn i enlighet med registerposterna ovan. Den här snabbmenyn har Open, Do Itoch Print verb på menyn, med Do It som standardverb.

skärmbild av standardsnabbmenyn för 'do it'-kommando

Aktivera din hanterare med hjälp av IDropTarget-gränssnittet

DDE (Dynamic Data Exchange) är inaktuellt. använd IDropTarget i stället. IDropTarget är mer robust och har bättre aktiveringsstöd eftersom den använder COM-aktivering av hanteraren. Vid val av flera objekt omfattas IDropTarget inte av buffertstorleksbegränsningarna som finns i både DDE och CreateProcess. Objekt skickas också till programmet som ett dataobjekt som kan konverteras till en objektmatris med hjälp av funktionen SHCreateShellItemArrayFromDataObject. Det är enklare och förlorar inte namnområdesinformation som inträffar när objektet konverteras till en sökväg för kommandorads- eller DDE-protokoll.

Mer information om IDropTarget-- och Shell-frågor för attribut för filassociationer finns i Uppfattade typer och programregistrering.

Ange position och ordning för statiska verb

Normalt sorteras verb på en snabbmeny baserat på hur de räknas upp. uppräkning baseras först på ordningen på associationsmatrisen och sedan på ordningen på objekten i associationsmatrisen, enligt definitionen i registrets sorteringsordning.

Verb kan ordnas genom att ange standardvärdet för undernyckeln Shell för associationsposten. Det här standardvärdet kan innehålla ett enda objekt som visas högst upp på snabbmenyn eller en lista med objekt avgränsade med blanksteg eller kommatecken. I det senare fallet är det första objektet i listan standardobjektet och de andra verben visas omedelbart under det i den angivna ordningen.

Följande registerpost skapar till exempel snabbmenyverb i följande ordning:

  1. Visa
  2. Prylar
  3. Personalisering
HKEY_CLASSES_ROOT
   DesktopBackground
      Shell
         Display
         Gadgets
         Personalization

På samma sätt skapar följande registerpost snabbmenyverb i följande ordning:

  1. Personalisering
  2. Prylar
  3. Visa
HKEY_CLASSES_ROOT
   DesktopBackground
      Shell = "Personalization,Gadgets"
      Display

Placera verb överst eller längst ned på menyn

Följande registerattribut kan användas för att placera ett verb överst eller längst ned på menyn. Om det finns flera verb som anger det här attributet får den sista som gör det prioritet:

Position=Top | Bottom 

Skapa statiska sammanhängande menyer

I Windows 7 och senare stöds den sammanhängande menyimplementeringen via registerinställningar. Före Windows 7 var skapandet av sammanhängande menyer endast möjligt genom implementeringen av IContextMenu-gränssnittet. I Windows 7 och senare bör du endast använda COM-kodbaserade lösningar när de statiska metoderna är otillräckliga.

Följande skärmbild innehåller ett exempel på en sammanhängande meny.

skärmbild som visar ett exempel på en sammanhängande meny

I Windows 7 och senare finns det tre sätt att skapa sammanhängande menyer:

Skapa sammanhängande menyer med posten SubCommands Registry

I Windows 7 och senare kan du använda posten Underkommandon för att skapa sammanhängande menyer med hjälp av följande procedur.

Om du vill skapa en sammanhängande meny med hjälp av posten Underkommandon

  1. Skapa en undernyckel under HKEY_CLASSES_ROOT\ProgID\shell- för att representera din sammanhängande meny. I det här exemplet ger vi den här undernyckeln namnet CascadeTest. Kontrollera att standardvärdet för undernyckeln CascadeTest är tomt och visas som (värdet har inte angetts).

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest
                (Default)
    
  2. Till CascadeTest undernyckel, lägg till en MUIVerb-post av typen REG_SZ och ge den den text som ska visas som namn i snabbmenyn. I det här exemplet tilldelar vi den "Test Cascade Menu".

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest
                (Default)
                MUIVerb = Test Cascade Menu
    
  3. I din CascadeTest-undernyckel lägger du till en underkommandopost av typen REG_SZ som är tilldelad lista, avgränsad med semikolon, för verben som ska visas på menyn i utseendeordning. Här tilldelar vi till exempel ett antal systembaserade verb:

    HKEY_CLASSES_ROOT
       *
          Shell
             CascadeTest
                SubCommands
                Windows.delete;Windows.properties;Windows.rename;Windows.cut;Windows.copy;Windows.paste
    
  4. När det gäller anpassade verb implementerar du dem med någon av de statiska verbimplementeringsmetoderna och listar dem under undernyckeln CommandStore enligt det här exemplet för ett fiktivt verb VerbName:

    HKEY_LOCAL_MACHINE
       Software
          Microsoft
             Windows
                CurrentVersion
                   Explorer
                      CommandStore
                         Shell
                            VerbName
                            command
                               (Default) = notepad.exe %1
    

Not

Den här metoden har fördelen att anpassade verb kan registreras en gång och återanvändas genom att visa verbnamnet under posten SubCommands. Det kräver dock att programmet har behörighet att ändra registret under HKEY_LOCAL_MACHINE.

 

Skapa kaskadmenyer med registerposten ExtendedSubCommandsKey

I Windows 7 och senare kan du använda posten ExtendedSubCommandKey för att skapa utökade sammanhängande menyer: sammanhängande menyer i sammanhängande menyer.

Följande skärmbild är ett exempel på en utökad sammanhängande meny.

skärmbild som visar utökad sammanhängande meny för enheter

Eftersom HKEY_CLASSES_ROOT är en kombination av HKEY_CURRENT_USER och HKEY_LOCAL_MACHINEkan du registrera alla anpassade verb under undernyckeln HKEY_CURRENT_USER\Software\-klasser. Den största fördelen med att göra det är att förhöjd behörighet inte krävs. Andra filassociationer kan också återanvända hela den här uppsättningen verb genom att ange samma ExtendedSubCommandsKey-undernyckel. Om du inte behöver återanvända den här uppsättningen verb kan du lista verben under det överordnade, men se till att standardvärdet för det överordnade är tomt.

För att skapa en kaskadmeny med hjälp av en ExtendedSubCommandsKey-post

  1. Skapa en undernyckel under HKEY_CLASSES_ROOT\ProgID\shell- för att representera din sammanhängande meny. I det här exemplet ger vi den här undernyckeln namnet CascadeTest2. Kontrollera att standardvärdet för undernyckeln CascadeTest är tomt och visas som (värdet har inte angetts).

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest2
                (Default)
    
  2. Till undernyckeln för din CascadeTest lägger du till en MUIVerb-post av typen REG_SZ, och tilldelar den den text som kommer att visas som dess namn på snabbmenyn. I det här exemplet tilldelar vi den "Test Cascade Menu".

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest
                (Default)
                MUIVerb = Test Cascade Menu 2
    
  3. Under undernyckeln CascadeTest som du har skapat lägger du till en ExtendedSubCommandsKey- undernyckel och lägger sedan till dokumentunderkommandona (av REG_SZ typ); till exempel:

    HKEY_CLASSES_ROOT
       txtfile
          Shell
             Test Cascade Menu 2
                (Default)
                ExtendedSubCommandsKey
                   Layout
                   Properties
                   Select all
    

    Kontrollera att standardvärdet för Test Cascade Menu 2 undernyckeln är tomt och visas som (värdet har inte angetts).

  4. Fyll i underverberna med någon av följande statiska verbimplementeringar. Observera att undernyckeln CommandFlags representerar EXPCMDFLAGS-värden. Om du vill lägga till en avgränsare före eller efter menyalternativet kaskad använder du ECF_SEPARATORBEFORE (0x20) eller ECF_SEPARATORAFTER (0x40). En beskrivning av dessa Windows 7- och senare flaggor finns i IExplorerCommand::GetFlags. ECF_SEPARATORBEFORE fungerar bara för menyalternativen på den översta nivån. MUIVerb är av typen REG_SZoch CommandFlags är av typen REG_DWORD.

    HKEY_CLASSES_ROOT
       txtile
          Shell
             Test Cascade Menu 2
                (Default)
                ExtendedSubCommandsKey
                   Shell
                      cmd1
                         MUIVerb = Notepad
                         command
                            (Default) = %SystemRoot%\system32\notepad.exe %1
                      cmd2
                         MUIVerb = Wordpad
                         CommandFlags = 0x20
                         command
                            (Default) = "C:\Program Files\Windows NT\Accessories\wordpad.exe" %1
    

Följande skärmbild är en bild av de tidigare postexemplen för registernyckeln.

skärmbild som visar ett exempel på en sammanhängande meny som visar val av anteckningar och ordlister

Skapa sammanhängande menyer med IExplorerCommand-gränssnittet

Ett annat alternativ för att lägga till verb i en sammanhängande meny är via IExplorerCommand::EnumSubCommands. Med den här metoden kan datakällor som tillhandahåller sina kommandomodulkommandon via IExplorerCommandProvider använda dessa kommandon som verb på en snabbmeny. I Windows 7 och senare kan du tillhandahålla samma verbimplementering med hjälp av IExplorerCommand som du kan med IContextMenu.

Följande två skärmbilder illustrerar användningen av sammanhängande menyer i mappen Enheter.

Skärmbild som visar ett exempel på en sammanhängande meny i enhetsmappen.

Följande skärmbild visar en annan implementering av en sammanhängande meny i mappen Enheter.

skärmbild som visar ett exempel på en sammanhängande meny i enhetsmappen

Obs

Eftersom IExplorerCommand endast stöder aktivering i processen rekommenderar vi att du använder shell-datakällor som behöver dela implementeringen mellan kommandon och snabbmenyer.

 

Hämta dynamiskt beteende för statiska verb med hjälp av avancerad frågesyntax

Avancerad frågesyntax (AQS) kan uttrycka ett villkor som utvärderas med hjälp av egenskaper från det objekt som verbet instansieras för. Det här systemet fungerar bara med snabba egenskaper. Det här är egenskaper som Shell-datakällan rapporterar så snabbt genom att inte returnera SHCOLSTATE_SLOW från IShellFolder2::GetDefaultColumnState.

Windows 7 och senare stöder kanoniska värden som undviker problem med lokaliserade versioner. Följande kanoniska syntax krävs på lokaliserade versioner för att dra nytta av den här Windows 7-förbättringen.

System.StructuredQueryType.Boolean#True

I följande exempelregisterpost:

  • Värdet AppliesTo styr om verbet visas eller döljs.
  • Värdet DefaultAppliesTo styr vilket verb som är standard.
  • Värdet HasLUAShield styr om en UAC-sköld (User Account Control) visas.

I det här exemplet gör värdet DefaultAppliesTo det här verbet till standard för alla filer med ordet "exampleText1" i filnamnet. Värdet AppliesTo aktiverar verbet för alla filer med "exampleText1" i namnet. Värdet HasLUAShield visar skölden för filer med "exampleText2" i namnet.

HKEY_CLASSES_ROOT
   txtile
      shell
         test.verb
            DefaultAppliesTo = System.ItemName:"exampleText1"
            HasLUAShield = System.ItemName:"exampleText2"
            AppliesTo = System.ItemName:"exampleText1"

Lägg till -kommandot undernyckel och ett värde:

HKEY_CLASSES_ROOT
   txtile
      shell
         test.verb
            Command
               (Default) = %SystemRoot%\system32\notepad.exe %1

I Windows 7-registret kan du läsa HKEY_CLASSES_ROOT\enhet som ett exempel på bitlocker-verb som använder följande metod:

  • AppliesTo = System.Volume.BitlockerProtection:=2
  • System.Volume.BitlockerKräverAdmin:=System.StruktureradFrågetyp.Booleansk#Sann

Mer information om AQS finns i Advanced Query Syntax.

Inaktuell: Associera verb med Dynamic Data Exchange-kommandon

DDE är inaktuellt. använd IDropTarget i stället. DDE är inaktuellt eftersom det förlitar sig på ett sändningsfönstermeddelande för att identifiera DDE-servern. En DDE-server låser upp sändningsfönstrets meddelande och låser därför DDE-konversationer för andra program. Det är vanligt att ett enda fastnat program orsakar efterföljande låsningar i hela användarens upplevelse.

Metoden IDropTarget är mer robust och har bättre aktiveringsstöd eftersom den använder COM-aktivering av hanteraren. I händelse av val av flera objekt, påverkas IDropTarget inte av buffertstorleksbegränsningarna som finns i både DDE och CreateProcess. Objekt skickas också till programmet som ett dataobjekt som kan konverteras till en objektmatris med hjälp av funktionen SHCreateShellItemArrayFromDataObject. Det är enklare och förlorar inte namnområdesinformation som inträffar när objektet konverteras till en sökväg för kommandorads- eller DDE-protokoll.

För ytterligare information om IDropTarget, och Shell-frågor för filassociationsattribut, se Uppfattade typer och programregistrering.

Slutföra uppgifter för verbimplementering

Följande uppgifter för att implementera verb är relevanta för både statiska och dynamiska verbimplementeringar. Mer information om dynamiska verb finns i Anpassa en snabbmeny med dynamiska verb.

Anpassa snabbmenyn för fördefinierade gränssnittsobjekt

Många fördefinierade Shell-objekt har snabbmenyer som kan anpassas. Registrera kommandot på ungefär samma sätt som du registrerar vanliga filtyper, men använd namnet på det fördefinierade objektet som filtypsnamn.

En lista över fördefinierade objekt finns i avsnittet fördefinierade gränssnittsobjekt i Skapa gränssnittstilläggshanterare. De fördefinierade Shell-objekt vars snabbmenyer kan anpassas genom att lägga till verb i registret markeras i tabellen med ordet Verb.

Förläng en ny undermeny

När en användare öppnar menyn File i Utforskaren är ett av kommandona som visas New. Om du väljer det här kommandot visas en undermeny. Som standard innehåller undermenyn två kommandon, Folder och Shortcut, som gör det möjligt för användare att skapa undermappar och genvägar. Den här undermenyn kan utökas till att omfatta filskapandekommandon för alla filtyper.

Om du vill lägga till ett filskapandekommando i Nytt undermeny måste programmets filer ha en associerad filtyp. Ta med en ShellNy under filnamnet. När kommandot Ny i menyn File väljs, lägger Shell till filtypen i undermenyn Ny. Kommandots visningssträng är den beskrivande sträng som tilldelas programmets ProgID.

Om du vill ange metoden för att skapa filer tilldelar du ett eller flera datavärden till ShellNy undernyckel. De tillgängliga värdena visas i följande tabell.

ShellNyt undernyckelvärde Beskrivning
Befallning Kör ett program. Det här REG_SZ värdet anger sökvägen till det program som ska köras. Du kan till exempel ställa in att den ska starta en guide.
Data Skapar en fil som innehåller angivna data. Det här REG_BINARY värdet anger filens data. Data ignoreras om antingen NullFile eller FileName har angetts.
Filnamn Skapar en fil som är en kopia av en angiven fil. Det här REG_SZ värdet anger den fullständigt kvalificerade sökvägen till filen som ska kopieras.
NullFile Skapar en tom fil. NullFile har inget tilldelat värde. Om NullFile anges ignoreras registervärdena Data och FileName.

 

Följande registernyckelexempel och skärmbild visar Ny undermeny för filtypen .myp-ms. Det har ett kommando, MyProgram Application.

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
      MyProgram.1
         ShellNew
         NullFile

Skärmbilden visar undermenyn New. När en användare väljer MyProgram Application från undermenyn Ny skapar Shell en fil med namnet New MyProgram Application.myp-ms och skickar den till MyProgram.exe.

skärmbild av Utforskaren som visar ett nytt

Att skapa dra-och-släpphanterare

Den grundläggande proceduren för att implementera en dra och släpp-hanterare är densamma som för vanliga snabbmenyhanterare. Snabbmenyhanterare använder dock normalt bara IDataObject pekare som skickas till hanterarens IShellExtInit::Initiera metod för att extrahera objektets namn. En dra och släpp-hanterare kan implementera en mer avancerad datahanterare för att ändra beteendet för det dragna objektet.

När en användare högerklickar på ett Shell-objekt för att dra ett objekt visas en snabbmeny när användaren försöker släppa objektet. Följande skärmbild illustrerar en typisk snabbmeny med dra och släpp.

skärmbild av snabbmenyn dra och släpp

En dra och släpp-hanterare är en snabbmenyhanterare som kan lägga till objekt på den här snabbmenyn. Dra och släpp-hanterare registreras vanligtvis under följande undernyckel.

HKEY_CLASSES_ROOT
   Directory
      shellex
         DragDropHandlers

Lägg till en undernyckel under DragDropHandlers undernyckel med namnet för dra och släpp-hanteraren och ange undernyckelns standardvärde till strängformen för hanterarens klassidentifierare (CLSID) GUID. I följande exempel aktiveras MyDD dra och släpp-hanteraren.

HKEY_CLASSES_ROOT
   Directory
      shellex
         DragDropHandlers
            MyDD
               (Default) = {MyDD CLSID GUID}

Begränsa användningen av verb och styra synlighet

Du kan använda Windows-principinställningar för att styra verbsynlighet. Verb kan ignoreras via principinställningar genom att lägga till ett SuppressionPolicy-värde eller ett SuppressionPolicyEx GUID-värde i verbets registerundernyckel. Ange värdet för SuppressionPolicy undernyckel till princip-ID:t. Om principen är aktiverad ignoreras verbet och dess associerade snabbmenypost. Information om möjliga princip-ID-värden finns i RESTRICTIONS uppräkning.

Använda verbvalsmodellen

Registervärden måste anges för verb för att hantera situationer där en användare kan välja ett enskilt objekt, flera objekt eller en markering från ett objekt. Ett verb kräver separata registervärden för var och en av dessa tre situationer som verbet stöder. Möjliga värden för verbmarkeringsmodellen är följande:

  • Ange MultiSelectModel-värdet för alla verb. Om värdet MultiSelectModel inte har angetts härleds det från den typ av verbimplementering som du har valt. För COM-baserade metoder (till exempel DropTarget och ExecuteCommand) antas Player, och för de andra metoderna antas Document.
  • Ange enskild för verb som endast stöder en enda markering.
  • Ange Player för verb som stöder valfritt antal objekt.
  • Ange dokument för verb som skapar ett fönster på den översta nivån för varje objekt. Detta begränsar antalet aktiverade objekt och hjälper till att undvika att systemresurserna börjar ta slut om användaren öppnar för många fönster.

När antalet markerade objekt inte matchar verbmarkeringsmodellen eller är större än de standardgränser som beskrivs i följande tabell visas inte verbet.

Typ av verbimplementering Dokument Spelare
Arv 15 artiklar 100 objekt
COM 15 artiklar Ingen gräns

 

Följande är exempel på registerposter med värdet MultiSelectModel.

HKEY_CLASSES_ROOT
   Folder
      shell
         open
             = MultiSelectModel = Document
HKEY_CLASSES_ROOT
   ProgID
      shell
         verb
             = MultiSelectModel = Single | Document | Player

Använda objektattribut

SFGAO- flaggvärden för Shell-attributen för ett objekt kan testas för att avgöra om verbet ska aktiveras eller inaktiveras.

Om du vill använda den här attributfunktionen lägger du till följande REG_DWORD värden under verbet:

  • AttributeMask-värdet anger SFGAO- värdet för bitvärdena för masken som ska testas med.
  • AttributeValue-värdet anger SFGAO- värdet för de bitar som testas.
  • ImplicitSelectionModel anger noll för objektverb eller nonzero för verb på snabbmenyn i bakgrunden.

I följande exempelregisterpost är AttributeMask inställt på SFGAO_READONLY (0x40000).

HKEY_CLASSES_ROOT
   txtfile
      Shell
         test.verb2
            AttributeMask = 0x40000
            AttributeValue = 0x0
            ImpliedSelectionModel = 0x0
            command
               (Default) = %SystemRoot%\system32\notepad.exe %1

Implementera anpassade verb för mappar via Desktop.ini

I Windows 7 och senare kan du lägga till verb i en mapp via Desktop.ini. Mer information om Desktop.ini filer finns i Anpassa mappar med Desktop.ini.

Observera

Desktop.ini filer bör alltid markeras System + Dolda så att de inte visas för användarna.

 

Utför följande steg för att lägga till anpassade verb för mappar via en Desktop.ini-fil:

  1. Skapa en mapp som är markerad skrivskyddad eller System.

  2. Skapa en Desktop.ini fil som innehåller en [. ShellClassInfo] DirectoryClass=Folder ProgID.

  3. I registret skapar du HKEY_CLASSES_ROOT\Folder ProgID med värdet CanUseForDirectory. Värdet CanUseForDirectory undviker missbruk av ProgID:er som inte är inställda på att delta i implementeringen av anpassade verb för mappar via Desktop.ini.

  4. Lägg till verb under -mappenProgID-undernyckel, till exempel:

    HKEY_CLASSES_ROOT
       CustomFolderType
          Shell
             MyVerb
                command
                   (Default) = %SystemRoot%\system32\notepad.exe %1\desktop.ini
    

Notera

Dessa verb kan vara standardverb, i vilket fall dubbelklicka på mappen aktiverar verbet.

 

metodtips för snabbmenyhanterare och verb med flera val

Välja ett statiskt eller dynamiskt verb för snabbmenyn

anpassa en snabbmeny med dynamiska verb

snabbmenyer (kontext) och snabbmenyhanterare

verb och filassociationer

Referens för snabbmeny