Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Handlers voor snelmenu's, ook wel contextmenuhandlers of verb handlers genoemd, zijn een type handler voor bestandstypen. Deze handlers kunnen worden geïmplementeerd op een manier die ervoor zorgt dat ze in hun eigen proces of in de verkenner of andere processen van derden worden geladen. Wees voorzichtig bij het maken van in-process handlers, omdat deze schade kunnen toebrengen aan het proces dat hen laadt.
Notitie
Er zijn speciale overwegingen voor 64-bits versies van Windows bij het registreren van handlers die in de context van 32-bits toepassingen werken: wanneer deze worden aangesproken in de context van een toepassing met een andere bitspecificatie, leidt het WOW64-subsysteem de toegang tot het bestandssysteem om naar sommige paden. Als uw .exe handler is opgeslagen in een van deze paden, is deze niet toegankelijk in deze context. Sla uw .exe daarom op in een pad dat niet wordt omgeleid, of sla een stub-versie van uw .exe op waarmee de echte versie wordt gestart.
Dit onderwerp is als volgt ingedeeld:
- canonieke werkwoorden
- uitgebreide werkwoorden
- Werkwoorden Alleen voor Programmatische Toegang
-
een snelmenu aanpassen met behulp van statische werkwoorden
- uw handler activeren met behulp van de IDropTarget-interface
- de positie en volgorde van statische werkwoorden opgeven
- Het positioneren van werkwoorden boven of onder aan het menu
- Statische cascaderende menu's maken
- dynamisch gedrag voor statische werkwoorden krijgen met behulp van geavanceerde querysyntaxis
- afgeschaft: Werkwoorden koppelen aan opdrachten voor dynamische gegevensuitwisseling
- Verb Implementatietaken voltooien
- Verwante onderwerpen
Canonieke werkwoorden
Toepassingen zijn over het algemeen verantwoordelijk voor het leveren van gelokaliseerde weergavetekenreeksen voor de werkwoorden die ze definiëren. Om een zekere mate van taalonafhankelijkheid te bieden, definieert het systeem echter een standaardset veelgebruikte werkwoorden die canonieke werkwoorden worden genoemd. Een canoniek verb wordt nooit weergegeven aan de gebruiker en kan worden gebruikt met elke ui-taal. Het systeem gebruikt de canonieke naam om automatisch een correct gelokaliseerde weergavetekenreeks te genereren. De weergavetekenreeks van open verbis bijvoorbeeld ingesteld op Openen op een Engels systeem en op het Duitse equivalent op een Duits systeem.
| Standaard verb | Beschrijving |
|---|---|
| Open | Hiermee opent u het bestand of de map. |
| Opennew | Hiermee opent u het bestand of de map in een nieuw venster. |
| Het bestand afdrukken. | |
| Printto | Hiermee kan de gebruiker een bestand afdrukken door het naar een printerobject te slepen. |
| Explore | Hiermee opent u Windows Verkenner met de map geselecteerd. |
| Properties | Hiermee opent u het eigenschappenvenster van het object. |
Notitie
De Printtoverb is ook canoniek, maar wordt nooit weergegeven. Met de opname ervan kan de gebruiker een bestand afdrukken door het naar een printerobject te slepen.
Snelmenuhandlers kunnen hun eigen canonieke werkwoorden leveren via IContextMenu::GetCommandString met GCS_VERBWof GCS_VERBA. Het systeem gebruikt de canonieke werkwoorden als de tweede parameter (lpOperation) die wordt doorgegeven aan ShellExecuteen is de CMINVOKECOMMANDINFO. HetlpVerb attribuut wordt doorgegeven aan de methode IContextMenu::InvokeCommand.
Uitgebreide werkwoorden
Wanneer de gebruiker met de rechtermuisknop op een object klikt, worden in het snelmenu de standaardwoorden weergegeven. Mogelijk wilt u opdrachten toevoegen en ondersteunen in sommige snelmenu's die niet in elk snelmenu worden weergegeven. U kunt bijvoorbeeld opdrachten hebben die niet vaak worden gebruikt of die zijn bedoeld voor ervaren gebruikers. Daarom kunt u ook een of meer uitgebreide werkwoorden definiëren. Deze werkwoorden zijn vergelijkbaar met normale werkwoorden, maar worden onderscheiden van normale werkwoorden op de manier waarop ze worden geregistreerd. Als u toegang wilt hebben tot uitgebreide werkwoorden, moet de gebruiker met de rechtermuisknop op een object klikken terwijl hij op de Shift-toets drukt. Wanneer de gebruiker dit doet, worden de uitgebreide werkwoorden weergegeven naast de standaardwoorden.
U kunt het register gebruiken om een of meer uitgebreide werkwoorden te definiëren. De bijbehorende opdrachten worden alleen weergegeven wanneer de gebruiker met de rechtermuisknop op een object klikt terwijl hij ook op de Shift-toets drukt. Als u een verb als uitgebreid wilt definiëren, voegt u een 'uitgebreide' REG_SZ waarde toe aan de verbsubsleutel. Aan de waarde mogen geen gegevens zijn gekoppeld.
Werkwoorden alleen voor programmatische toegang
Deze werkwoorden worden nooit weergegeven in een contextmenu. U krijgt toegang tot deze door gebruik te maken van ShellExecuteEx en het veld lpVerb van de parameter pExecInfo (een SHELLEXECUTEINFO-object) op te geven. Als u alleen een verb als programmatische toegang wilt definiëren, voegt u een "ProgrammaticAccessOnly" REG_SZ waarde toe aan de verbsubsleutel. Aan de waarde mogen geen gegevens zijn gekoppeld.
U kunt het register gebruiken om een of meer uitgebreide werkwoorden te definiëren. De bijbehorende opdrachten worden alleen weergegeven wanneer de gebruiker met de rechtermuisknop op een object klikt terwijl hij ook op de Shift-toets drukt. Als u een verb als uitgebreid wilt definiëren, voegt u een 'uitgebreide' REG_SZ waarde toe aan de verbsubsleutel. Aan de waarde mogen geen gegevens zijn gekoppeld.
Een snelmenu aanpassen met statische werkwoorden
Nadat u een statisch of dynamisch Verb voor het snelmenu hebt gekozen , kunt u het snelmenu voor een bestandstype uitbreiden door een statisch verb voor het bestandstype te registreren. Voeg hiervoor een Shell subsleutel toe onder de subsleutel voor de ProgID van de toepassing die is gekoppeld aan het bestandstype. U kunt desgewenst een standaardwaarde verb voor het bestandstype definiëren door deze de standaardwaarde van de Shell subsleutel te maken.
De standaardwaarde verb wordt eerst weergegeven in het snelmenu. Het doel ervan is om de Shell te voorzien van een verb die het kan gebruiken wanneer ShellExecuteEx wordt aangeroepen, maar er is geen verb opgegeven. De Shell optie selecteert niet noodzakelijkerwijs de standaardinstelling verb wanneer ShellExecuteEx op deze manier wordt gebruikt.
Shell gebruikt de eerste beschikbare verb in de volgende volgorde:
- De standaardwaarde verb
- De eerste verb in het register, als de verb volgorde is opgegeven
- De Openverb
- De Open Withverb
Als geen van de vermelde werkwoorden beschikbaar is, mislukt de bewerking.
Maak één subsleutel voor elke verb subsleutel die u wilt toevoegen onder de Shell subsleutel. Elk van deze subsleutels moet een REG_SZ waarde hebben ingesteld op de verbweergavetekenreeks (gelokaliseerde tekenreeks). Maak voor elke verb subsleutel een opdrachtsubsleutel met de standaardwaarde ingesteld op de opdrachtregel voor het activeren van de items. Voor canonieke werkwoorden, zoals Open en Print, kunt u de weergavetekenreeks weglaten omdat in het systeem automatisch een correct gelokaliseerde tekenreeks wordt weergegeven. Als u de weergavetekenreeks weglaat, wordt de verb tekenreeks weergegeven voor niet-canonische werkwoorden.
In het volgende registervoorbeeld ziet u dat:
- Omdat Doit geen canonieke verbnaam is, wordt er een weergavenaam toegewezen, die kan worden geselecteerd door op de D-toets te drukken.
- Het afdrukmenuverb wordt niet weergegeven in het snelmenu. Door de opname in het register kan de gebruiker echter bestanden afdrukken door ze neer te zetten op een printerpictogram.
- Voor elke verb wordt één subsleutel weergegeven. %1 vertegenwoordigt de bestandsnaam en %2 de printernaam.
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"
In het volgende diagram ziet u de uitbreiding van het snelmenu in overeenstemming met de bovenstaande registervermeldingen. Dit snelmenu bevat Open, Do Iten Print werkwoorden in het menu, met Do It als standaardinstelling verb.
Uw handler activeren met behulp van de IDropTarget-interface
Dynamic Data Exchange (DDE) is afgeschaft; gebruik in plaats daarvan IDropTarget. IDropTarget is robuuster en biedt betere activeringsondersteuning omdat er COM-activering van de handler wordt gebruikt. In het geval van meerdere itemselectie is IDropTarget- niet onderworpen aan de buffergroottebeperkingen die zijn gevonden in zowel DDE als de CreateProcess-. Items worden ook doorgegeven aan de toepassing als een gegevensobject dat kan worden geconverteerd naar een itemmatrix met behulp van de functie SHCreateShellItemArrayFromDataObject. Dit is eenvoudiger en verliest geen naamruimtegegevens zoals wanneer het item wordt geconverteerd naar een pad voor opdrachtregel- of DDE-protocollen.
Zie Waargenomen typen en toepassingsregistratie voor meer informatie over IDropTarget en Shell query's voor bestandskoppelingskenmerken.
De positie en volgorde van statische werkwoorden opgeven
Normaal gesproken worden werkwoorden geordend in een snelmenu op basis van hoe ze worden opgesomd; opsomming is eerst gebaseerd op de volgorde van de koppelingsmatrix en vervolgens op de volgorde van de items in de koppelingsmatrix, zoals gedefinieerd door de sorteervolgorde van het register.
Werkwoorden kunnen worden geordend door de standaardwaarde van de Shell subsleutel voor de associatie-invoer op te geven. Deze standaardwaarde kan één item bevatten, dat wordt weergegeven op de bovenste positie van het snelmenu, of een lijst met items gescheiden door spaties of komma's. In het laatste geval is het eerste item in de lijst het standaarditem en worden de andere werkwoorden direct eronder weergegeven in de opgegeven volgorde.
De volgende registervermelding produceert bijvoorbeeld snelmenuopdrachten in de volgende volgorde:
- Beeldscherm
- Gadgets
- Personalisatie
HKEY_CLASSES_ROOT
DesktopBackground
Shell
Display
Gadgets
Personalization
Op dezelfde manier produceert de volgende registervermelding snelmenuopdrachten in de volgende volgorde:
- Personalisatie
- Gadgets
- Beeldscherm
HKEY_CLASSES_ROOT
DesktopBackground
Shell = "Personalization,Gadgets"
Display
Werkwoorden boven of onder aan het menu plaatsen
Het volgende registerkenmerk kan worden gebruikt om een verb aan de boven- of onderkant van het menu te plaatsen. Als er meerdere werkwoorden zijn die dit kenmerk opgeven, krijgt de laatste om dit te doen prioriteit:
Position=Top | Bottom
Statische cascade-menu's maken
In Windows 7 en hoger wordt trapsgewijze menu-implementatie ondersteund via registerinstellingen. Vóór Windows 7 was het maken van trapsgewijze menu's alleen mogelijk via de implementatie van de IContextMenu interface. In Windows 7 en hoger moet u alleen gebruikmaken van COM-oplossingen op basis van code wanneer de statische methoden onvoldoende zijn.
De volgende schermafbeelding bevat een voorbeeld van een trapsgewijze menu.
In Windows 7 en hoger zijn er drie manieren om trapsgewijze menu's te maken:
- Uitklapmenu's maken met de registerinvoer 'SubOpdrachten'
- Trapsgewijze menu's maken met de registervermelding ExtendedSubCommandsKey
- Trapsgewijze menu's maken met de interface IExplorerCommand
Trapsgewijze menu's maken met de registervermelding SubOpdrachten
In Windows 7 en hoger kunt u de vermelding SubOpdrachten gebruiken om trapsgewijze menu's te maken met behulp van de volgende procedure.
Een trapsgewijs menu maken met behulp van de vermelding SubOpdrachten
Maak een subsleutel onder HKEY_CLASSES_ROOT\ProgID\shell om uw trapsgewijze menu weer te geven. In dit voorbeeld geven we deze subsleutel de naam CascadeTest. Zorg ervoor dat de standaardwaarde van de subsleutel CascadeTest leeg is en wordt weergegeven als (waarde niet ingesteld).
HKEY_CLASSES_ROOT * shell CascadeTest (Default)Voeg aan de subsleutel CascadeTest een MUIVerb-vermelding van het type REG_SZ toe en geef deze de tekst die als naam in het contextmenu wordt weergegeven. In dit voorbeeld wijzen we het toe aan 'Test Cascade Menu'.
HKEY_CLASSES_ROOT * shell CascadeTest (Default) MUIVerb = Test Cascade MenuVoeg aan uw CascadeTest subsleutel een SubCommands-invoer toe van het type REG_SZ waaraan een lijst is toegewezen, gescheiden door puntkomma's, van de werkwoorden die in het menu worden weergegeven, in de weergegeven volgorde. Hier wijzen we bijvoorbeeld een aantal door het systeem geleverde werkwoorden toe:
HKEY_CLASSES_ROOT * Shell CascadeTest SubCommands Windows.delete;Windows.properties;Windows.rename;Windows.cut;Windows.copy;Windows.pasteImplementeer deze in het geval van aangepaste werkwoorden met behulp van een van de statische verb implementatiemethoden en vermeld deze onder de subsleutel CommandStore , zoals wordt weergegeven in dit voorbeeld voor een fictieve verbwerkwoordnaam:
HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion Explorer CommandStore Shell VerbName command (Default) = notepad.exe %1
Notitie
Deze methode heeft het voordeel dat de aangepaste werkwoorden eenmaal kunnen worden geregistreerd en opnieuw kunnen worden gebruikt door de verb naam onder de vermelding SubOpdrachten weer te gegeven. Het vereist echter dat de toepassing gemachtigd is om het register onder HKEY_LOCAL_MACHINEte wijzigen.
Trapsgewijze menu's maken met de registervermelding ExtendedSubCommandsKey
In Windows 7 en hoger kunt u de vermelding ExtendedSubCommandKey gebruiken om uitgebreide trapsgewijze menu's te maken: trapsgewijze menu's binnen trapsgewijze menu's.
De volgende schermafbeelding is een voorbeeld van een uitgebreid trapsgewijs menu.
Omdat HKEY_CLASSES_ROOT een combinatie is van HKEY_CURRENT_USER en HKEY_LOCAL_MACHINE, kunt u aangepaste werkwoorden registreren onder de subsleutel HKEY_CURRENT_USER\Software\Classes. Het belangrijkste voordeel hiervan is dat verhoogde machtigingen niet vereist zijn. Andere bestandskoppelingen kunnen deze hele set werkwoorden ook opnieuw gebruiken door dezelfde ExtendedSubCommandsKey-subsleutel op te geven. Als u deze set werkwoorden niet opnieuw hoeft te gebruiken, kunt u de werkwoorden onder het bovenliggende item weergeven, maar ervoor zorgen dat de standaardwaarde van het bovenliggende item leeg is.
Een trapsgewijs menu maken met behulp van een ExtendedSubCommandsKey-vermelding
Maak een subsleutel onder HKEY_CLASSES_ROOT\ProgID\shell om uw trapsgewijze menu weer te geven. In dit voorbeeld geven we deze subsleutel de naam CascadeTest2. Zorg ervoor dat de standaardwaarde van de subsleutel CascadeTest leeg is en wordt weergegeven als (waarde niet ingesteld).
HKEY_CLASSES_ROOT * shell CascadeTest2 (Default)Voeg aan de subsleutel CascadeTest een MUIVerb-vermelding van het type REG_SZ toe en geef deze de tekst die als naam in het contextmenu wordt weergegeven. In dit voorbeeld wijzen we het toe aan 'Test Cascade Menu'.
HKEY_CLASSES_ROOT * shell CascadeTest (Default) MUIVerb = Test Cascade Menu 2Voeg onder de CascadeTest subsleutel die u hebt gemaakt, een ExtendedSubCommandsKey subsleutel toe en voeg vervolgens de subopdrachten voor het document toe (van REG_SZ type); bijvoorbeeld:
HKEY_CLASSES_ROOT txtfile Shell Test Cascade Menu 2 (Default) ExtendedSubCommandsKey Layout Properties Select allZorg ervoor dat de standaardwaarde van de Test Cascade Menu 2-subsleutel leeg is en wordt weergegeven als (waarde niet ingesteld).
Vul de subverbs in met behulp van een van de volgende statische verb implementaties. Houd er rekening mee dat de subsleutel CommandFlags EXPCMDFLAGS-waarden vertegenwoordigt. Als u een scheidingsteken wilt toevoegen voor of na het cascade-menu-item, gebruik dan ECF_SEPARATORBEFORE (0x20) of ECF_SEPARATORAFTER (0x40). Zie IExplorerCommand::GetFlagsvoor een beschrijving van deze markeringen voor Windows 7 en hoger. ECF_SEPARATORBEFORE werkt alleen voor de menu-items op het hoogste niveau. MUIVerb is van het type REG_SZen CommandFlags is van het type 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
De volgende schermafbeelding is een afbeelding van de vorige voorbeelden van registersleutelvermeldingen.
Trapsgewijze menu's maken met de interface IExplorerCommand
Een andere optie voor het toevoegen van werkwoorden aan een trapsgewijze menu is via IExplorerCommand::EnumSubCommands. Met deze methode kunnen gegevensbronnen die hun opdrachtmoduleopdrachten leveren via IExplorerCommandProvider deze opdrachten gebruiken als werkwoorden in een snelmenu. In Windows 7 en hoger kunt u dezelfde verb implementatie bieden met IExplorerCommand als met IContextMenu.
De volgende twee schermafbeeldingen illustreren het gebruik van trapsgewijze menu's in de map Apparaten.
In de volgende schermafbeelding ziet u een andere implementatie van een trapsgewijs menu in de map Apparaten.
Notitie
Omdat IExplorerCommand alleen in-process activering ondersteunt, wordt het aanbevolen voor gebruik door Shell gegevensbronnen die de implementatie tussen opdrachten en snelmenu's moeten delen.
Dynamisch gedrag voor statische werkwoorden verkrijgen met behulp van geavanceerde querysyntaxis
Advanced Query Syntaxis (AQS) kan een voorwaarde uitdrukken die wordt geëvalueerd met behulp van eigenschappen van het item waarvoor de verb instantie wordt geïnstantieerd. Dit systeem werkt alleen met snelle eigenschappen. Dit zijn eigenschappen die de Shell gegevensbron zo snel rapporteert door SHCOLSTATE_SLOW niet te retourneren uit IShellFolder2::GetDefaultColumnState.
Windows 7 en hoger ondersteunen canonieke waarden die problemen bij gelokaliseerde builds voorkomen. De volgende canonieke syntaxis is vereist voor gelokaliseerde builds om te profiteren van deze Uitbreiding van Windows 7.
System.StructuredQueryType.Boolean#True
In de volgende voorbeeldregistervermelding:
- De waarde AppliesTo bepaalt of de verb waarde wordt weergegeven of verborgen.
- De waarde DefaultAppliesTo bepaalt welke verb de standaard is.
- De hasLUAShield-waarde bepaalt of een UAC-schild (User Account Control) wordt weergegeven.
In dit voorbeeld maakt de waarde DefaultAppliesTo dit verb de standaardwaarde voor elk bestand met het woord 'exampleText1' in de bestandsnaam. De waarde AppliesTo schakelt verb in voor elk bestand met 'exampleText1' in de naam. De HasLUAShield waarde geeft het schild voor bestanden weer met 'exampleText2' in de naam.
HKEY_CLASSES_ROOT
txtile
shell
test.verb
DefaultAppliesTo = System.ItemName:"exampleText1"
HasLUAShield = System.ItemName:"exampleText2"
AppliesTo = System.ItemName:"exampleText1"
Voeg de -commando-subsleutel en een waarde toe:
HKEY_CLASSES_ROOT
txtile
shell
test.verb
Command
(Default) = %SystemRoot%\system32\notepad.exe %1
Zie in het Windows 7-register HKEY_CLASSES_ROOT\station als voorbeeld van bitlocker-werkwoorden die de volgende methode gebruiken:
- AppliesTo = System.Volume.BitlockerProtection:=2
- System.Volume.BitlockerRequiresAdmin:=System.StructuredQueryType.Boolean#True
Zie Geavanceerde querysyntaxisvoor meer informatie over AQS.
Afgeschaft: Werkwoorden koppelen aan opdrachten voor dynamische gegevensuitwisseling
DDE is afgeschaft; gebruik in plaats daarvan IDropTarget. DDE is verouderd verklaard omdat het afhankelijk is van een broadcast-vensterbericht om de DDE-server te detecteren. Een DDE-server loopt vast, waardoor het bericht van het broadcast-venster wordt belemmerd en veroorzaakt zo dat DDE-gesprekken voor andere toepassingen vastlopen. Het is gebruikelijk dat een enkele vastgelopen toepassing ervoor zorgt dat de gebruikerservaring allemaal vastloopt.
De methode IDropTarget is robuuster en biedt betere activeringsondersteuning omdat er COM-activering van de handler wordt gebruikt. In het geval van meerdere itemselectie is IDropTarget- niet onderworpen aan de buffergroottebeperkingen die zijn gevonden in zowel DDE als de CreateProcess-. Items worden ook doorgegeven aan de toepassing als een gegevensobject dat kan worden geconverteerd naar een itemmatrix met behulp van de functie SHCreateShellItemArrayFromDataObject. Dit is eenvoudiger en verliest geen naamruimtegegevens zoals wanneer het item wordt geconverteerd naar een pad voor opdrachtregel- of DDE-protocollen.
Zie Waargenomen typen en toepassingsregistratie voor meer informatie over IDropTarget en Shell query's voor bestandskoppelingskenmerken.
Verb Implementatietaken voltooien
De volgende taken voor het implementeren van werkwoorden zijn relevant voor zowel statische als dynamische verb implementaties. Zie Een snelmenu aanpassen met dynamische werkwoordenvoor meer informatie over dynamische werkwoorden.
Het snelmenu aanpassen voor vooraf gedefinieerde Shell objecten
Veel vooraf gedefinieerde Shell objecten hebben snelmenu's die kunnen worden aangepast. Registreer de opdracht op ongeveer dezelfde manier als u typische bestandstypen registreert, maar gebruik de naam van het vooraf gedefinieerde object als de bestandsnaam.
Een lijst met vooraf gedefinieerde objecten bevindt zich in de sectie Vooraf gedefinieerde Shell objecten van extensiehandlers makenShell. Deze vooraf gedefinieerde Shell objecten waarvan snelmenu's kunnen worden aangepast door werkwoorden toe te voegen in het register, worden gemarkeerd in de tabel met het woord Verb.
Een nieuw submenu uitbreiden
Wanneer een gebruiker het menu Bestand opent in Windows Verkenner, is een van de opdrachten die worden weergegeven Nieuw. Als u deze opdracht selecteert, wordt een submenu weergegeven. Het submenu bevat standaard twee opdrachten, map en snelkoppeling, waarmee gebruikers submappen en snelkoppelingen kunnen maken. Dit submenu kan worden uitgebreid met opdrachten voor het maken van bestanden voor elk bestandstype.
Als u een opdracht voor het maken van bestanden wilt toevoegen aan het submenu Nieuw, moeten de bestanden van uw toepassing een bijbehorend bestandstype hebben. Neem een ShellNew subsleutel op onder de bestandsnaam. Wanneer de opdracht Nieuw in het menu Bestand is geselecteerd, Shell wordt het bestandstype toegevoegd aan het submenu Nieuw. De weergavetekenreeks van de opdracht is de beschrijvende tekenreeks die is toegewezen aan de ProgID van het programma.
Als u de methode voor het maken van bestanden wilt opgeven, wijst u een of meer gegevenswaarden toe aan de subsleutel ShellNew. De beschikbare waarden worden weergegeven in de volgende tabel.
| ShellNew-subsleutelwaarde | Beschrijving |
|---|---|
| Bevelen | Voert een toepassing uit. Met deze REG_SZ waarde geeft u het pad op van de toepassing die moet worden uitgevoerd. U kunt deze bijvoorbeeld instellen om een wizard te starten. |
| Gegevens | Hiermee maakt u een bestand met opgegeven gegevens. Met deze REG_BINARY waarde worden de gegevens van het bestand opgegeven. Gegevens worden genegeerd als ofwel NullFile of FileName is opgegeven. |
| Bestandsnaam | Hiermee maakt u een bestand dat een kopie van een opgegeven bestand is. Met deze REG_SZ waarde geeft u het volledig gekwalificeerde pad op van het te kopiëren bestand. |
| NullFile | Hiermee maakt u een leeg bestand. NullFile- heeft geen waarde toegewezen. Als NullFile is opgegeven, worden de registerwaarden Data en FileName genegeerd. |
In het volgende voorbeeld van de registersleutel en schermopname ziet u het submenu Nieuw voor het bestandstype .myp-ms. Het heeft een opdracht, MyProgram Application.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
ShellNew
NullFile
In de schermafbeelding ziet u het submenu Nieuw. Wanneer een gebruiker MyProgram Application selecteert in het submenu Nieuw , wordt er een bestand met de Shell naam New MyProgram Application.myp-ms gemaakt en doorgegeven aan MyProgram.exe.
Handlers voor slepen en neerzetten maken
De basisprocedure voor het implementeren van een handler voor slepen en neerzetten is hetzelfde als voor conventionele handlers voor snelmenu's. Snelmenuhandlers gebruiken normaal gesproken alleen de IDataObject- aanwijzer die wordt doorgegeven aan de IShellExtInit::Initialize-methode om de naam van het object op te halen. Een handler voor slepen en neerzetten kan een geavanceerdere gegevenshandler implementeren om het gedrag van het gesleepte object te wijzigen.
Wanneer een gebruiker met de rechtermuisknop op een object klikt om een Shell object te slepen, wordt er een snelmenu weergegeven wanneer de gebruiker probeert het object te verwijderen. In de volgende schermafbeelding ziet u een typisch snelmenu voor slepen en neerzetten.
Een handler voor slepen en neerzetten is een snelmenuhandler waarmee items aan dit snelmenu kunnen worden toegevoegd. Handlers voor slepen en neerzetten worden doorgaans geregistreerd onder de volgende subsleutel.
HKEY_CLASSES_ROOT
Directory
shellex
DragDropHandlers
Voeg een subsleutel toe onder de DragDropHandlers subsleutel, genoemd naar de handler voor slepen en neerzetten, en stel de standaardwaarde van de subsleutel in op de tekenreeksvorm van de class identifier (CLSID) GUID van de handler. In het volgende voorbeeld wordt de MyDD- handler voor slepen en neerzetten ingeschakeld.
HKEY_CLASSES_ROOT
Directory
shellex
DragDropHandlers
MyDD
(Default) = {MyDD CLSID GUID}
Werkwoorden onderdrukken en zichtbaarheid beheren
U kunt Windows-beleidsinstellingen gebruiken om de zichtbaarheid te beheren verb . Werkwoorden kunnen worden onderdrukt via beleidsinstellingen door een SuppressionPolicy-waarde of een SuppressionPolicyEx GUID-waarde toe te voegen aan de verb-registersubsleutel. Stel de waarde van de subsleutel SuppressionPolicy in op de beleids-id. Als het beleid is ingeschakeld, worden de verb en de snelkoppelingsmenu-invoer die daarbij hoort onderdrukt. Zie voor mogelijke beleid-ID-waarden de BEPERKINGEN opsomming.
Verb Het selectiemodel gebruiken
Registerwaarden moeten worden ingesteld voor werkwoorden voor het afhandelen van situaties waarin een gebruiker één item, meerdere items of een selectie uit een item kan selecteren. Een verb vereist afzonderlijke registerwaarden voor elk van deze drie situaties die door de verb ondersteuning worden ondersteund. De mogelijke waarden voor het verb selectiemodel zijn als volgt:
- Geef de multiSelectModel-waarde op voor alle werkwoorden. Als de waarde MultiSelectModel niet is opgegeven, wordt deze afgeleid van het type verb implementatie dat u hebt gekozen. Voor COM-methoden (zoals DropTarget en ExecuteCommand) Player wordt aangenomen en voor de andere methoden Document wordt aangenomen.
- Geef Single op voor werkwoorden die slechts één selectie ondersteunen.
- Specificeer Player- voor werkwoorden die ondersteuning bieden voor een willekeurig aantal items.
- Geef Document op voor werkwoorden die een hoofdvenster openen voor elk item. Als u dit doet, wordt het aantal geactiveerde items beperkt en wordt voorkomen dat er onvoldoende systeembronnen beschikbaar zijn als de gebruiker te veel vensters opent.
Wanneer het aantal geselecteerde items niet overeenkomt met het verb selectiemodel of groter is dan de standaardlimieten die in de volgende tabel worden beschreven, wordt het verb niet weergegeven.
| Type van verb implementatie | Document | Speler |
|---|---|---|
| Nalatenschap | 15 artikelen | 100 artikelen |
| COM | 15 artikelen | Geen limiet |
Hieronder ziet u een voorbeeld van registervermeldingen met behulp van de waarde MultiSelectModel.
HKEY_CLASSES_ROOT
Folder
shell
open
= MultiSelectModel = Document
HKEY_CLASSES_ROOT
ProgID
shell
verb
= MultiSelectModel = Single | Document | Player
Itemkenmerken gebruiken
De SFGAO-vlagwaarden van de Shell kenmerken voor een item kunnen worden getest om te bepalen of de verb waarden moeten worden ingeschakeld of uitgeschakeld.
Als u deze kenmerkfunctie wilt gebruiken, voegt u de volgende REG_DWORD waarden toe onder :verb
- De waarde AttributeMask geeft de SFGAO waarde van de bitwaarden van het masker waarmee moet worden getest.
- De waarde AttributeValue geeft de SFGAO waarde van de bits die worden getest.
- Het Impliciete Selectiemodel specificeert nul voor itemwerkwoorden, of een niet-nul waarde voor werkwoorden in het achtergrond snelmenu.
In het volgende voorbeeld wordt de AttributeMask ingesteld op SFGAO_READONLY (0x40000).
HKEY_CLASSES_ROOT
txtfile
Shell
test.verb2
AttributeMask = 0x40000
AttributeValue = 0x0
ImpliedSelectionModel = 0x0
command
(Default) = %SystemRoot%\system32\notepad.exe %1
Aangepaste werkwoorden voor mappen implementeren via Desktop.ini
In Windows 7 en hoger kunt u via Desktop.iniwerkwoorden toevoegen aan een map. Zie Mappen aanpassen met Desktop.inivoor meer informatie over Desktop.ini bestanden.
Notitie
Desktop.ini bestanden moeten altijd worden gemarkeerd System + Verborgen zodat ze niet worden weergegeven voor gebruikers.
Voer de volgende stappen uit om aangepaste werkwoorden toe te voegen voor mappen via een Desktop.ini-bestand:
Maak een map die is gemarkeerd als alleen-lezen of Systeem.
Maak een Desktop.ini-bestand met een [. ShellClassInfo] DirectoryClass=Folder ProgID.
Maak in het register HKEY_CLASSES_ROOT\Folder ProgID met de waarde CanUseForDirectory. De waarde CanUseForDirectory voorkomt misbruik van ProgID's die zijn ingesteld om niet deel te nemen aan het implementeren van aangepaste werkwoorden voor mappen via Desktop.ini.
Voeg werkwoorden toe onder de subsleutel MapProgID, bijvoorbeeld:
HKEY_CLASSES_ROOT CustomFolderType Shell MyVerb command (Default) = %SystemRoot%\system32\notepad.exe %1\desktop.ini
Notitie
Deze acties kunnen standaard zijn verb. In dat geval activeert dubbelklikken op de map de verb.
Verwante onderwerpen
-
Aanbevolen procedures voor snelmenuhandlers en meerdere selectiewerkwoorden
-
Een statische of dynamische Verb optie kiezen voor het snelmenu