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
- utökade verb
- Endast verb för programmatisk åtkomst
-
anpassa en snabbmeny med statiska verb
- Aktivera hanteraren med hjälp av IDropTarget-gränssnittet
- Ange position och ordning för statiska verb
- placera verb överst eller längst ned på menyn
- Skapa statiska sammanhängande menyer
- Hämta dynamiskt beteende för statiska verb med hjälp av avancerad frågesyntax
- Inaktuell: Associera verb med dynamiska datautbyteskommandon
- Att slutföra implementeringsuppgifter för verb
- Relaterade ämnen
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:
- Standardverbet
- Det första verbet i registret, om verbordningen anges
- Verbet Open
- 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.
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:
- Visa
- Prylar
- Personalisering
HKEY_CLASSES_ROOT
DesktopBackground
Shell
Display
Gadgets
Personalization
På samma sätt skapar följande registerpost snabbmenyverb i följande ordning:
- Personalisering
- Prylar
- 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.
I Windows 7 och senare finns det tre sätt att skapa sammanhängande menyer:
- Skapa sammanhängande menyer med underkommandons registerpost
- Skapa kaskadmenyer med registerposten ExtendedSubCommandsKey
- Skapa sammanhängande menyer med IExplorerCommand-gränssnittet
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
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)
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
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
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.
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
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)
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
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).
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.
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.
Följande skärmbild visar en annan implementering av en sammanhängande meny i mappen Enheter.
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.
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.
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:
Skapa en mapp som är markerad skrivskyddad eller System.
Skapa en Desktop.ini fil som innehåller en [. ShellClassInfo] DirectoryClass=Folder ProgID.
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.
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.
Relaterade ämnen