Auswählen einer statischen oder dynamischen Kontextmenümethode

Dieses Thema ist wie folgt organisiert:

Choose a Verb Method

Es wird dringend empfohlen, ein Kontextmenü mit einer der statischen Verbmethoden zu implementieren.

Static Verb-Methoden

Statische Verben sind die einfachsten Zu implementierenden Verben, bieten aber weiterhin 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 vertrautste Mittel zur Implementierung eines statischen Verbs. Ein Prozess wird über einen Aufruf der CreateProcess-Funktion mit den ausgewählten Dateien und allen optionalen Parametern aufgerufen, die als Befehlszeile übergeben werden. Dadurch wird die Datei oder der Ordner geöffnet.
Diese Methode hat die folgenden Einschränkungen:
  • Die Befehlszeilenlänge ist auf 2000 Zeichen begrenzt, wodurch die Anzahl der Elemente begrenzt wird, die das Verb verarbeiten kann.
  • Kann nur mit Dateisystemelementen verwendet werden.
  • Aktiviert die erneute Verwendung eines bereits ausgeführten Prozesses nicht.
  • 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 wird. 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 über das marshallalierte Datenobjekt perfekt ausgedrückt und ein Verweis auf die aufrufende Websitekette bereitgestellt, sodass Sie über den QueryService mit dem Aufrufer interagieren können.
Windows 7 und höher: IExecuteCommand Die direkteste Implementierungsmethode. Da es sich um eine COM-basierte Aufrufmethode (wie DropTarget) handelt, unterstützt diese Schnittstelle die In-Proc- und Out-of-Proc-Aktivierung. Das Verb implementiert IExecuteCommand und IObjectWithSelection und optional IInitializeCommand. Die Elemente werden direkt als Shellelementarray übergeben, und weitere Parameter aus dem Aufrufer sind für die Verbimplementierung 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 von Shell-Datenquellen empfohlen, die die Implementierung zwischen Befehlen und Kontextmenüs gemeinsam nutzen müssen.

 

Hinweis

IExplorerCommand ist eine Hybridlösung zwischen einem statischen und dynamischen Verb. IExplorerCommand wurde in Windows Vista deklariert, aber seine Fähigkeit, 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 Verb-Methoden

Die folgenden dynamischen Verbmethoden werden bevorzugt:

Verbtyp Beschreibung
Statisches Verb (in der vorherigen Tabelle aufgeführt) + Erweiterte Abfragesyntax (AQS) Diese Auswahl erhält dynamische Verbsichtbarkeit.
Windows 7 und höher: IExplorerCommand Diese Option 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 Option erhält auch die 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 angezeigt werden soll. Dies kann auf alle statischen Verbimplementierungsmethoden angewendet werden, um dynamisches Verhalten zu erzielen und die Gefährdung der Prozesslogik zu minimieren. IExplorerCommandState hat den Vorteil, auf einem Hintergrundthread ausgeführt zu werden, und dadurch werden UI-Blockaden vermieden. Es ist wesentlich einfacher als IContextMenu.

 

Entmutigte dynamische Verbmethoden

IContextMenu ist die leistungsfähigste, aber auch die komplizierteste Methode für die Implementierung. Sie basiert auf inprozessinternen COM-Objekten, die im Thread des Aufrufers ausgeführt werden, der in der Regel Windows-Explorer, aber eine beliebige Anwendung sein kann, die die Elemente hosten. IContextMenu unterstützt Verbsichtbarkeit, Sortierung und benutzerdefinierte Zeichnung. 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 bewältigen.

Wenn Sie das Kontextmenü für einen Dateityp erweitern müssen, indem Sie ein dynamisches Verb für den Dateityp registrieren, folgen Sie den 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 höher
CreateProcess X X X
DDE X X X
DropTarget X X X
ExecuteCommand X X
ExplorerCommand X
ExplorerCommandState X

 

Best Practices für Kontextmenühandler und Mehrfachauswahlverben

Erstellen von Kontextmenühandlern

Anpassen eines Kontextmenüs mit dynamischen Verben

Kontextmenüs und Kontextmenühandler

Kontextmenüreferenz

Verben und Dateizuordnungen