Auswählen einer statischen oder dynamischen Kontextmenümethode

Dieses Thema ist wie folgt organisiert:

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:
  • Die Befehlszeilenlänge ist auf 2.000 Zeichen beschränkt, wodurch die Anzahl der Elemente begrenzt wird, die das Verb verarbeiten kann.
  • Kann nur mit Dateisystemelementen verwendet werden.
  • Aktiviert nicht die erneute Verwendung eines bereits ausgeführten Prozesses.
  • Erfordert, dass eine ausführbare Datei installiert wird, um das Verb zu verarbeiten.

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

Bewährte Methoden für Kontextmenühandler und Verben für mehrfache Auswahl

Erstellen von Kontextmenühandlern

Anpassen eines Kontextmenüs mit dynamischen Verben

Kontextmenüs und Kontextmenühandler

Kontextmenüreferenz

Verben und Dateizuordnungen