Auswählen einer statischen oder dynamischen Kontextmenümethode

Dieses Thema wird 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 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 zum Implementieren eines statischen Verbs. Ein Prozess wird über 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.
Diese Methode hat die folgenden Einschränkungen:
  • Die Befehlszeilenlänge ist auf 2000 Zeichen beschränkt, wodurch die Anzahl der Elemente begrenzt wird, die das Verb behandeln 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 behandeln.

DropTarget/Idroptarget Eine COM-basierte Verbaktivierung bedeutet, dass 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 Marshaled Data-Objekt perfekt ausgedrückt und ein Verweis auf die aufrufende Websitekette bereitgestellt, damit Sie über den QueryService mit dem Aufrufer interagieren können.
Windows 7 und höher: IExecuteCommand Die direkteste Implementierungsmethode. Da es sich hierbei um eine COM-basierte Aufrufmethode (wie DropTarget) handelt, unterstützt diese Schnittstelle 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:ExplorerCommandIExplorerCommand/ Ermöglicht Datenquellen, die ihre Befehlsmodulbefehle über IExplorerCommandProvider bereitstellen, diese Befehle als Verben in einem Kontextmenü zu verwenden. Da diese Schnittstelle nur die In-Process-Aktivierung unterstützt, empfiehlt es sich, von Shell-Datenquellen zu verwenden, die die Implementierung zwischen Befehlen und Kontextmenüs freigeben müssen.

 

Hinweis

IExplorerCommand ist eine Hybride 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 für Windows 7.

 

Weitere Informationen zu IDropTarget - und Shellabfragen 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 Wahl erhält dynamische Verbsichtbarkeit.
Windows 7 und höher: IExplorerCommand Diese Wahl ermöglicht eine allgemeine Implementierung von Verben und Explorer-Befehlen, die im Befehlsmodul im Windows Explorer angezeigt werden.
Windows 7 und höher: IExplorerCommandState + statisches Verb Diese Wahl erhält auch die dynamische Verbsichtbarkeit. Es handelt sich um ein Hybridmodell, bei dem ein einfacher Prozesshandler verwendet wird, um zu berechnen, ob ein bestimmtes statisches Verbdisplysiert werden soll. Dies kann auf alle statischen Verbimplementierungsmethoden angewendet werden, um dynamisches Verhalten zu erzielen und die Exposition der In-Process-Logik zu minimieren. IExplorerCommandState hat den Vorteil, dass sie auf einem Hintergrundthread ausgeführt wird und dadurch UI-Hängen vermieden wird. Es ist wesentlich einfacher als IContextMenu.

 

Entmutigte dynamische Verbmethoden

IContextMenu ist die leistungsfähigste, aber auch die komplizierteste Methode zur Implementierung. Es basiert auf inprozessinternen COM-Objekten, die auf dem Thread des Aufrufers ausgeführt werden, der normalerweise Windows Explorer, kann jedoch jede Anwendung sein, 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 behandeln.

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 im Anpassen eines Kontextmenüs mithilfe von 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 durch Betriebssystem wird in der folgenden Tabelle aufgeführt.

Verb-Methode Windows XP Windows Vista Windows 7 und mehr
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 Mehrfachauswahlverben

Erstellen von Kontextmenühandlern

Anpassen eines Kontextmenüs mit dynamischen Verben

Kontextmenüs und Kontextmenühandler

Kontextmenüreferenz

Verben und Dateizuordnungen