Snelmenu's uitbreiden
Als u normaal gesproken met de rechtermuisknop op een object klikt, wordt een snelmenuweergegeven. Dit menu bevat een lijst met opdrachten die de gebruiker kan selecteren om verschillende acties op het object uit te voeren. Deze sectie is een inleiding tot snelmenu's voor bestandssysteemobjecten.
- snelmenu's voor bestandssysteemobjecten
- snelkoppelingsmenuwerkwoorden
- het snelmenu voor een bestandstype uitbreiden
- het snelmenu uitbreiden voor vooraf gedefinieerde Shell-objecten
- een toepassing registreren voor het afhandelen van willekeurige bestandstypen
- het nieuwe submenu uitbreiden
Aanvullende informatie is hier beschikbaar:
Snelmenu's voor bestandssysteemobjecten
Wanneer een gebruiker met de rechtermuisknop op een object klikt, zoals een bestand, dat wordt weergegeven in Windows Verkenner of op het bureaublad, wordt er een snelmenu weergegeven met een lijst met opdrachten. De gebruiker kan vervolgens een actie uitvoeren op het bestand, zoals het openen of verwijderen ervan, door de juiste opdracht te selecteren.
Omdat snelmenu's vaak worden gebruikt voor bestandsbeheer, biedt de Shell een set standaardopdrachten, zoals Knippen en kopiëren, die worden weergegeven in het snelmenu voor elk bestand. Hoewel Openen met een standaardcommando is, wordt het niet weergegeven voor sommige standaardbestandstypen, zoals .wav. De volgende illustratie van de voorbeeldmap Mijn documenten, die ook als voorbeeld werd gebruikt in Pictogrammen aanpassen, toont een standaard snelmenu dat werd weergegeven door met de rechtermuisknop op MyDocs4.xyz te klikken.
De reden dat MyDocs4.xyz een standaardsnelmenu weergeeft, is dat het geen lid is van een geregistreerd bestandstype. Aan de andere kant is .txt een geregistreerd bestandstype. Als u met de rechtermuisknop op een van de .txt bestanden klikt, ziet u in plaats daarvan een snelmenu met twee extra opdrachten in het bovenste gedeelte: Openen en Afdrukken.
Zodra een bestandstype is geregistreerd, kunt u het snelmenu uitbreiden met extra opdrachten. Ze worden boven de standaardopdrachten weergegeven wanneer er met de rechtermuisknop op een bestand van dat type wordt geklikt. Hoewel de meeste opdrachten die op deze manier zijn toegevoegd, gebruikelijk zijn, zoals Afdrukken of Openen van, kunt u elke opdracht toevoegen die een gebruiker nuttig kan vinden.
Alles wat nodig is om het snelmenu voor een bestandstype uit te breiden, is door voor elke opdracht een registervermelding te maken. Een geavanceerdere benadering is het implementeren van een snelmenuhandler, waarmee u het snelmenu voor een bestandstype op bestandsbasis kunt uitbreiden. Zie Contextmenu-handlers makenvoor meer informatie.
Snelmenuopdrachten
Elke opdracht in het snelmenu wordt in het register geïdentificeerd door de werkwoordnaam . Deze werkwoorden zijn hetzelfde als die worden gebruikt door ShellExecuteEx bij het programmatisch starten van toepassingen. Voor meer informatie over het gebruik van ShellExecuteEx, zie de discussie in Toepassingen starten.
Een werkwoord is een eenvoudige tekenreeks die door de Shell wordt gebruikt om de bijbehorende opdracht te identificeren. Elk werkwoord komt overeen met de opdrachtreeks die gebruikt om de opdracht in een consolevenster of batchbestand (.bat) te starten. Bijvoorbeeld, het open werkwoord start normaal gesproken een programma om een bestand te openen. De opdrachtreeks ziet er doorgaans ongeveer als volgt uit:
"My Program.exe" "%1"
"%1" is de standaard tijdelijke aanduiding voor een opdrachtregelparameter die is opgegeven met de bestandsnaam. Het kan bijvoorbeeld een bepaalde pagina opgeven om weer te geven in een weergave met tabbladen.
Notitie
Als een element van de opdrachtreeks spaties bevat of bevat, moet het tussen aanhalingstekens staan. Als het element een spatie bevat, zal het anders niet correct geparseerd worden. Met 'Mijn Program.exe' wordt de toepassing bijvoorbeeld correct gestart. Als u Mijn Program.exegebruikt, probeert het systeem 'Mijn' met 'Program.exe' te starten als het eerste opdrachtregelargument. Gebruik altijd aanhalingstekens met argumenten zoals '%1' die zijn uitgebreid naar tekenreeksen door de Shell, omdat u niet zeker weet dat de tekenreeks geen spatie bevat.
Werkwoorden kunnen ook een weergavetekenreeks eraan zijn gekoppeld, die wordt weergegeven in het snelmenu in plaats van de werkwoordreeks zelf. De weergavetekenreeks voor openas is bijvoorbeeld Open With. Net als bij normale menureeksen, maakt het opnemen van een ampersand (&) in de weergavetekenreeks het mogelijk om het commando met het toetsenbord te selecteren.
Canonieke werkwoorden
Over het algemeen zijn toepassingen 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 werkwoordenworden genoemd. Een canonieke werkwoord kan worden gebruikt met elke taal en het systeem genereert automatisch een correct gelokaliseerde weergavetekenreeks. De bijvoorbeeld de weergavetekenreeks van werkwoord opent, wordt ingesteld op Openen op een Engels systeem en op Öffnen op een Duits systeem.
De canonieke werkwoorden zijn:
Waarde | Beschrijving |
---|---|
openen | Hiermee opent u het bestand of de map. |
nieuw openen | Hiermee opent u het bestand of de map in een nieuw venster. |
afdrukken | Het bestand afdrukken. |
verkennen | Hiermee opent u Windows Verkenner met de map geselecteerd. |
vinden | Hiermee opent u het dialoogvenster Windows Search met de map die is ingesteld als de standaardzoeklocatie. |
openas | Hiermee opent u het dialoogvenster Openen met. |
Eigenschappen | Hiermee opent u het eigenschappenvenster van het object. |
Het printto-werkwoord is ook canoniek, maar wordt nooit weergegeven. Hiermee kan de gebruiker een bestand afdrukken door het naar een printerobject te slepen.
Uitgebreide werkwoorden
Wanneer de gebruiker met de rechtermuisknop op een object klikt, bevat het snelmenu alle normale werkwoorden. Er kunnen echter opdrachten zijn die u wilt ondersteunen, maar 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 ook tekenreeksen en zijn vergelijkbaar met normale werkwoorden. Ze onderscheiden zich van normale werkwoorden door de manier waarop ze worden geregistreerd. Als u toegang wilt hebben tot de opdrachten die zijn gekoppeld aan uitgebreide werkwoorden, moet de gebruiker met de rechtermuisknop op een object klikken terwijl hij op de Shift-toets drukt. De uitgebreide werkwoorden worden vervolgens samen met de normale werkwoorden weergegeven.
Het snelmenu voor een bestandstype uitbreiden
De eenvoudigste manier om het snelmenu voor een bestandstype uit te breiden, is met het register. Hiervoor voegt u een Shell-subsleutel toe onder de sleutel voor de ProgID van de toepassing die is gekoppeld aan het bestandstype. U kunt desgewenst een standaardwoord definiëren voor het bestandstype door deze de standaardwaarde te maken van de Shell-subsleutel.
De standaardwerkwoord wordt eerst weergegeven in het snelmenu. Het doel is om de Shell te voorzien van een werkwoord dat kan worden gebruikt wanneer ShellExecuteEx- wordt aangeroepen, maar er geen werkwoord is opgegeven. De Shell selecteert niet noodzakelijkerwijs het standaardwerkwoord wanneer ShellExecuteEx- op deze manier wordt gebruikt. Voor Shell-versies 5.0 en hoger, te vinden in Windows 2000- en hogersystemen, gebruikt Shell het eerste beschikbare werkwoord uit de volgende lijst. Als er geen beschikbaar zijn, mislukt de bewerking.
- Het geopende werkwoord
- Het standaardwoord
- Het eerste werkwoord in het register
- Het openwith-werkwoord
Voor Shell-versies vóór versie 5.0laat u het derde item weg.
Maak onder de Shell subsleutel één subsleutel voor elk werkwoord dat u wilt toevoegen. Elk van deze subsleutels zal een waarde REG_SZ hebben die is ingesteld op de weergavestring van het werkwoord. U kunt de weergavetekenreeks weglaten voor canonieke werkwoorden, omdat in het systeem automatisch een correct gelokaliseerde tekenreeks wordt weergegeven. Als u de weergavetekenreeks weglaat voor niet-canonische werkwoorden, wordt de werkwoordreeks weergegeven. Maak voor elke subsleutel voor een werkwoord een opdracht subsleutel met de standaardwaarde ingesteld op de opdrachtstring.
In de volgende afbeelding ziet u een snelmenu voor het .myp-bestandstype dat wordt gebruikt in bestandstypen en Pictogrammen aanpassen. Het bevat nu de werkwoorden open, doit, afdrukken en printto in het snelmenu, met doit als standaardwerkwoord. Het snelmenu ziet er als volgt uit.
De registervermeldingen die worden gebruikt om het snelmenu uit te breiden dat in de vorige afbeelding wordt weergegeven, zijn:
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
(Default) = MyProgram Application
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
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" %3 %4
Hoewel de opdracht Openen met boven het eerste scheidingsteken staat, wordt deze automatisch door het systeem gemaakt en is er geen registervermelding vereist. Het systeem maakt automatisch weergavenamen voor de canonieke werkwoorden die worden geopend en afgedrukt. Omdat doit geen canonieke werkwoord is, wordt er een weergavenaam toegewezen, '&Doe het', die kan worden geselecteerd door op de D-toets te drukken. Het werkwoord printto wordt niet weergegeven in het snelmenu, maar door het toe te voegen kan de gebruiker bestanden afdrukken door ze op een printerpictogram te slepen en neer te zetten. In dit voorbeeld vertegenwoordigt %1 de bestandsnaam en %2 de printernaam.
Werkwoorden kunnen worden onderdrukt via beleidsinstellingen door een SuppressPolicy-waarde toe te voegen aan de sleutel van het werkwoord. Stel de waarde van SuppressionPolicy in op de beleids-id. Als de beleidsinstelling is ingeschakeld, worden het werkwoord en de bijbehorende snelmenuoptie onderdrukt. Zie de BEPERKINGEN opsomming voor mogelijke beleid-ID's.
Het snelmenu uitbreiden voor vooraf gedefinieerde Shell-objecten
Veel vooraf gedefinieerde Shell-objecten hebben snelmenu's die kunnen worden uitgebreid. 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 vindt u in de sectie Vooraf gedefinieerde Shell-objecten sectie van Shell-extensiehandlers maken. Deze vooraf gedefinieerde Shell-objecten waarvan de snelmenu's kunnen worden uitgebreid door werkwoorden toe te voegen in het register, worden gemarkeerd in de tabel met het woord 'Werkwoord'.
Een toepassing registreren voor het afhandelen van willekeurige bestandstypen
In de voorgaande secties van dit document is besproken hoe u snelmenu-items voor een bepaald bestandstype definieert. Met de definitie van het snelmenu kunt u onder andere specificeren hoe de bijbehorende toepassing een bestand van het bestandstype opent. Zoals besproken in bestandstypen, kunnen toepassingen echter ook een afzonderlijke standaardprocedure registreren die moet worden gebruikt wanneer een gebruiker probeert uw toepassing te gebruiken om een bestandstype te openen dat u niet aan de toepassing hebt gekoppeld. Dit onderwerp wordt hier besproken omdat u de standaardprocedure op ongeveer dezelfde manier registreert als het registreren van snelmenu-items.
De standaardprocedure heeft twee basisdoeleinden. U kunt opgeven hoe uw toepassing moet worden aangeroepen om een willekeurig bestandstype te openen. U kunt bijvoorbeeld een opdrachtregelvlag gebruiken om aan te geven dat een onbekend bestandstype wordt geopend. Het andere doel is om de verschillende kenmerken van een bestandstype te definiëren, zoals de snelmenu-items en het pictogram. Als een gebruiker uw toepassing koppelt aan een extra bestandstype, heeft dat type deze kenmerken. Als het extra bestandstype eerder aan een andere toepassing is gekoppeld, worden de oorspronkelijke kenmerken vervangen.
Als u de standaardprocedure wilt registreren, plaatst u dezelfde registersleutels die u hebt gemaakt voor de ProgID van uw toepassing onder de subsleutel van HKEY_CLASSES_ROOT\Toepassingen. U kunt ook een FriendlyAppName-waarde toevoegen om het systeem een beschrijvende naam voor uw toepassing te geven. De beschrijvende naam van de toepassing kan tevens worden geëxtraheerd uit het uitvoerbare bestand, maar alleen indien de FriendlyAppName-waarde afwezig is. In het volgende registerfragment ziet u een voorbeeld van een standaardprocedure voor MyProgram.exe waarmee een beschrijvende naam en verschillende snelmenu-items worden gedefinieerd. De opdrachtreeksen bevatten de vlag /a om de toepassing op de hoogte te stellen dat er een willekeurig bestandstype wordt geopend. Als u een DefaultIcon subsleutel opneemt, moet u een algemeen pictogram gebruiken.
HKEY_CLASSES_ROOT
Applications
MyProgram.exe
FriendlyAppName = Friendly Name
shell
open
command
(Default) = C:\MyDir\MyProgram.exe /a "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1" "%2" %3 %4
Het nieuwe submenu uitbreiden
Wanneer een gebruiker het menu Bestand opent in Windows Verkenner, is de eerste opdracht Nieuw. Als u deze opdracht selecteert, wordt een submenu weergegeven. Deze 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 bestandcreatie wilt toevoegen aan het submenu Nieuw, moeten de bestanden van uw toepassing gekoppeld zijn aan een bestandstype. Voeg een ShellNew subsleutel toe onder de sleutel voor de bestandsnaamextensie. Wanneer het commando Nieuw in het Bestand menu wordt geselecteerd, zal de Shell het toevoegen aan het Nieuw submenu. De weergavetekenreeks van de opdracht is de beschrijvende tekenreeks die is toegewezen aan de ProgID van het programma.
Wijs een of meer gegevenswaarden toe aan de subsleutel ShellNew om de methode voor het maken van bestanden op te geven. De beschikbare waarden volgen.
Waarde | Beschrijving |
---|---|
Bevelen | Hiermee wordt een toepassing uitgevoerd. Dit is een REG_SZ waarde die het pad opgeeft 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. Gegevens zijn een REG_BINARY waarde met de gegevens van het bestand. Gegevens worden genegeerd als de waarde van NullFile of FileName is opgegeven. |
Bestandsnaam | Hiermee maakt u een bestand dat een kopie van een opgegeven bestand is. FileName is een REG_SZ waarde, ingesteld op het volledig gekwalificeerde pad van het bestand dat moet worden gekopieerd. |
NullFile | Hiermee maakt u een leeg bestand. NullFile heeft geen waarde toegewezen. Als NullFile is opgegeven, worden de gegevens- en bestandsnaamwaarden genegeerd. |
In de volgende afbeelding ziet u het submenu Nieuw voor het .myp-bestandstype, dat als voorbeeld wordt gebruikt in Bestandstypen en Pictogrammen aanpassen. Het heeft nu een commando, MyProgram Application. Wanneer een gebruiker MyProgram Application selecteert in het submenu New, maakt de Shell een bestand met de naam 'New MyProgram Application.myp' en geeft het door aan MyProgram.exe.
De registervermelding is nu als volgt:
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
ShellNew
NullFile
MyProgram.1
(Default) = MyProgram Application
DefaultIcon
(Default) = C:\MyDir\MyProgram.exe,2
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
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" %3 %4