Auswählen einer statischen oder dynamischen Kontextmenümethode
Dieses Thema ist wie folgt organisiert:
- Auswählen einer Verbmethode
- Erweitern eines Kontextmenüs
- Unterstützung für Verbmethoden nach Betriebssystem
- Zugehörige Themen
Auswählen einer Verbmethode
Es wird dringend empfohlen, ein Kontextmenü mit einer der statischen Verbmethoden zu implementieren.
Statische Verbmethoden
Statische Verben sind die einfachsten Verben, die implementiert werden müssen, bieten aber dennoch umfangreiche Funktionen. Wählen Sie immer die einfachste Kontextmenümethode aus, die Ihren Anforderungen entspricht.
| Statisches Verb | BESCHREIBUNG |
|---|---|
| CreateProcess mit Befehlszeilenparametern | Dies ist das einfachste und vertrauteste Mittel zum Implementieren eines statischen Verbs. Ein Prozess wird durch einen Aufruf der CreateProcess-Funktion mit den ausgewählten Dateien und optionalen Parametern aufgerufen, die als Befehlszeile übergeben werden. Dadurch wird die Datei oder der Ordner geöffnet. Für diese Methode gelten die folgenden Einschränkungen:
|
| DropTarget / IDropTarget | Eine COM-basierte Verbaktivierung bedeutet, dass die In-Proc- oder Out-of-Proc-Aktivierung unterstützt. DropTarget / IDropTarget unterstützt auch die erneute Verwendung eines bereits ausgeführten Handlers, wenn die IDropTarget-Schnittstelle von einem lokalen Server implementiert wird. Außerdem werden die Elemente perfekt über das gemarshallte Datenobjekt ausgedrückt, und es wird ein Verweis auf die aufrufende Websitekette angezeigt, sodass Sie über queryServicemit dem Aufrufer interagieren können. |
| Windows 7 und höher: IExecuteCommand | Die direkteste Implementierungsmethode. Da es sich um eine COM-basierte Aufrufmethode (z.B. DropTarget) handelt, unterstützt diese Schnittstelle die In-Proc- und Out-of-Proc-Aktivierung. Das Verb implementiert IExecuteCommand und IObjectWithSelectionund optional IInitializeCommand. Die Elemente werden direkt als Shell-Elementarray übergeben, und weitere Parameter des Aufrufrs sind für die Verbimplementierungen verfügbar, einschließlich des Aufrufpunkts, des Tastaturzustands usw. |
| Windows 7 und höher:ExplorerCommand / IExplorerCommand | Ermöglicht Datenquellen, die ihre Befehlsmodulbefehle über IExplorerCommandProvider bereitstellen, diese Befehle als Verben in einem Kontextmenü zu verwenden. Da diese Schnittstelle nur die Prozessaktivierung unterstützt, wird die Verwendung durch Shell-Datenquellen empfohlen, die die Implementierung zwischen Befehlen und Kontextmenüs freigeben müssen. |
Hinweis
IExplorerCommand ist ein Hybrid zwischen einem statischen und einem dynamischen Verb. IExplorerCommand wurde in Windows Vista deklariert, aber die Möglichkeit, ein Verb in einem Kontextmenü zu implementieren, ist neu in Windows 7.
Weitere Informationen zu IDropTarget- und Shell-Abfragen für Dateizuordnungsattribute finden Sie unter Wahrgenommene Typen und Anwendungsregistrierung.
Bevorzugte dynamische Verbmethoden
Die folgenden dynamischen Verbmethoden werden bevorzugt:
| Verbtyp | BESCHREIBUNG |
|---|---|
| Statisches Verb (in der vorherigen Tabelle aufgeführt) + Erweiterte Abfragesyntax (AQS) | Diese Auswahl ruft dynamische Verbsichtbarkeit ab. |
| Windows 7 und höher: IExplorerCommand | Diese Auswahl ermöglicht eine allgemeine Implementierung von Verben und Explorer-Befehlen, die im Befehlsmodul in Windows Explorer angezeigt werden. |
| Windows 7 und höher: IExplorerCommandState + statisches Verb | Diese Auswahl erhält auch dynamische Verbsichtbarkeit. Es handelt sich um ein Hybridmodell, bei dem ein einfacher In-Process-Handler verwendet wird, um zu berechnen, ob ein bestimmtes statisches Verb disponiert werden soll. Dies kann auf alle Implementierungsmethoden für statische Verben angewendet werden, um dynamisches Verhalten zu erzielen und die Gefährdung der Prozesslogik zu minimieren. IExplorerCommandState bietet den Vorteil der Ausführung in einem Hintergrundthread und vermeidet dadurch das Hängen der Benutzeroberfläche. Sie ist erheblich einfacher als IContextMenu. |
Von dynamischen Verbmethoden abgeraten
IContextMenu ist die leistungsfähigste, aber auch die komplizierteste Methode, die implementiert werden muss. Sie basiert auf prozessin-process-COM-Objekten, die im Thread des Aufrufers ausgeführt werden. Dies Windows Explorer, kann aber eine beliebige Anwendung sein, die die Elemente hostet. IContextMenu unterstützt Verbsichtbarkeit, Sortierung und benutzerdefiniertes Zeichnen. Einige dieser Features wurden den statischen Verbfeatures hinzugefügt, z. B. einem Symbol, das einem Befehl zugeordnet werden soll, und IExplorerCommand, um die Sichtbarkeit zu behandeln.
Wenn Sie das Kontextmenü für einen Dateityp erweitern müssen, indem Sie ein dynamisches Verb für den Dateityp registrieren, befolgen Sie die Anweisungen unter Anpassen eines Kontextmenüs mit dynamischen Verben.
Erweitern eines Kontextmenüs
Nachdem Sie eine Verbmethode ausgewählt haben, können Sie ein Kontextmenü für einen Dateityp erweitern, indem Sie ein statisches Verb für den Dateityp registrieren. Weitere Informationen finden Sie unter Erstellen von Kontextmenühandlern.
Unterstützung für Verbmethoden nach Betriebssystem
Die Unterstützung für Verbaufrufmethoden nach Betriebssystem ist in der folgenden Tabelle aufgeführt.
| Verb-Methode | Windows XP | Windows Vista | Windows 7 und darüber hinaus |
|---|---|---|---|
| CreateProcess | X | X | X |
| DDE | X | X | X |
| DropTarget | X | X | X |
| Executecommand | X | X | |
| ExplorerCommand | X | ||
| ExplorerCommandState | X |