Auswählen einer statischen oder dynamischen Kontextmenümethode

Dieses Thema ist wie folgt organisiert:

Auswählen einer Verb-Methode

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

Statische Verbmethoden

Statische Verben sind die einfachsten zu implementierenden Verben, 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 die einfachste und vertrautste Methode 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 Wiederverwendung 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 Wiederverwendung eines bereits ausgeführten Handlers, wenn die IDropTarget-Schnittstelle von einem lokalen Server implementiert wird. Außerdem werden die Elemente über das gemarshallte Datenobjekt perfekt ausgedrückt und ein Verweis auf die aufrufende Websitekette bereitgestellt, sodass Sie mit dem Aufrufer über den QueryService 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 mehr Parameter aus dem Invoker stehen der Verbimplementierung zur Verfügung, einschließlich Aufrufpunkt, Tastaturzustand usw.
Windows 7 und höher:ExplorerCommand/ IExplorerCommand Ermöglicht Datenquellen, die ihre Befehlsmodulbefehle über IExplorerCommandProvider bereitstellen, die Verwendung dieser Befehle als Verben in einem Kontextmenü. Da diese Schnittstelle nur die prozessinterne Aktivierung unterstützt, wird sie für shellbasierte Datenquellen empfohlen, die die Implementierung zwischen Befehlen und Kontextmenüs gemeinsam nutzen müssen.

 

Hinweis

IExplorerCommand ist eine Hybridverbindung 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 Verbmethoden

Die folgenden dynamischen Verbmethoden werden bevorzugt:

Verbtyp BESCHREIBUNG
Statisches Verb (in der vorherigen Tabelle aufgeführt) + Erweiterte Abfragesyntax (AQS) Diese Auswahl erhält die Sichtbarkeit dynamischer Verben.
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 prozessinterner Handler verwendet wird, um zu berechnen, ob ein bestimmtes statisches Verb aufgehoben werden soll. Dies kann auf alle Implementierungsmethoden des statischen Verbs angewendet werden, um dynamisches Verhalten zu erzielen und die Offenlegung der Prozesslogik zu minimieren. IExplorerCommandState hat den Vorteil, dass es in einem Hintergrundthread ausgeführt wird, und dadurch werden Benutzeroberflächenhänger vermieden. Es ist erheblich einfacher als IContextMenu.

 

Entmutigte Methoden für dynamische Verben

IContextMenu ist die leistungsstärkste, aber auch die komplizierteste Zu implementierende Methode. Sie basiert auf prozessinternen COM-Objekten, die im Thread des Aufrufers ausgeführt werden, wobei normalerweise Windows Explorer, aber eine beliebige Anwendung sein kann, die die Elemente hosten. IContextMenu unterstützt Verbsichtbarkeit, Reihenfolge und benutzerdefiniertes Zeichnen. Einige dieser Features wurden den Features des statischen Verbs hinzugefügt, z. B. ein 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 mithilfe dynamischer 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
ExplorerBefehl X
ExplorerCommandState X

 

Bewährte Methoden für Kontextmenühandler und Mehrfachauswahlverben

Erstellen von Kontextmenühandlern

Anpassen eines Kontextmenüs mithilfe dynamischer Verben

Kontextmenüs und Kontextmenühandler

Kontextmenüreferenz

Verben und Dateizuordnungen