Die Funktionen der Shell können mit Registrierungseinträgen und .ini Dateien erweitert werden. Dieser Ansatz zum Erweitern der Shell ist zwar einfach und für viele Zwecke angemessen, ist aber begrenzt. Wenn Sie beispielsweise die Registrierung verwenden, um ein benutzerdefiniertes Symbol für einen Dateityp anzugeben, wird das gleiche Symbol für jede Datei dieses Typs angezeigt. Wenn Sie die Shell mit der Registrierung erweitern, können Sie das Symbol nicht für verschiedene Elemente des Dateityps ändern. Andere Aspekte der Shell, z. B. das Eigenschaftenblatt , das angezeigt werden kann, wenn eine Datei mit der rechten Maustaste geklickt wird, können überhaupt nicht mit der Registrierung geändert werden.
Ein leistungsfähigerer und flexiblerer Ansatz zum Erweitern der Shell ist die Implementierung von Shellerweiterungshandlern. Diese Handler können für eine Vielzahl von Aktionen implementiert werden, die die Shell ausführen kann. Bevor Sie die Aktion ausführen, fragt die Shell den Erweiterungshandler ab und gibt ihr die Möglichkeit, die Aktion zu ändern. Ein gängiges Beispiel ist ein Kontextmenüerweiterungshandler. Wenn eine für einen Dateityp implementiert ist, wird sie jedes Mal abgefragt, wenn mit der rechten Maustaste auf eine der Dateien geklickt wird. Der Handler kann dann dateiweise zusätzliche Menüelemente angeben, anstatt denselben Satz für alle Dateien dieses Dateityps festzulegen.
In diesem Themensatz wird erläutert, wie Sie die Erweiterungshandler implementieren, mit denen Sie eine Vielzahl von Shellaktionen ändern können. Die folgenden Handler sind einem bestimmten Dateityp zugeordnet und ermöglichen es Ihnen, dateiweise anzugeben.
Wird aufgerufen, wenn ein Drag-and-Drop-Vorgang für Shell-Objekte ausgeführt wird. Dadurch können Sie dem Ablageziel zusätzliche Zwischenablageformate bereitstellen.
Wird aufgerufen, bevor das Symbol einer Datei angezeigt wird. Dadurch können Sie das Standardsymbol der Datei auf Dateibasis durch ein benutzerdefiniertes Symbol ersetzen.
Bietet Lese- und Schreibzugriff auf Metadaten (Eigenschaften), die in einer Datei gespeichert sind. Dies kann verwendet werden, um die Detailsansicht, Infotips, die Eigenschaftenseite und die Gruppierungsfeatures zu erweitern.
Andere werden nicht einem bestimmten Dateityp zugeordnet, sondern vor einigen Shellvorgängen aufgerufen.
Wird von Windows Explorer aufgerufen, bevor die Detailansicht eines Ordners angezeigt wird. Sie können der Detailansicht benutzerdefinierte Spalten hinzufügen.
Wird aufgerufen, wenn ein Ordner- oder Druckerobjekt verschoben, kopiert, gelöscht oder umbenannt werden soll. Es ermöglicht Ihnen, den Vorgang zu genehmigen oder ein Veto einzufügen.
Aufgerufen, um eine Suchmaschine zu starten. Es ermöglicht Ihnen, eine benutzerdefinierte Suchmaschine zu implementieren, auf die über das Startmenü oder windows Explorer zugegriffen werden kann.
Die Details zum Implementieren bestimmter Erweiterungshandler werden in den oben aufgeführten Abschnitten behandelt. Informationen zu Implementierungsproblemen, die allen Shell-Erweiterungshandlern gemeinsam sind, finden Sie in den folgenden Themen:
Finanz‑ und Betriebs-Apps werden mithilfe von Erweiterungen angepasst, mit denen Sie in Visual Studio den Modellelementen und dem Quellcode in der Entwicklungsumgebung (Application Object Tree, AOT) Funktionen hinzufügen können.
Ein Shell-Erweiterungshandlerobjekt muss registriert werden, bevor es von der Shell verwendet werden kann. In diesem Thema wird allgemein erläutert, wie Sie einen Shell-Erweiterungshandler registrieren.
Kontextmenühandler, auch als Kontextmenühandler oder Verbhandler bezeichnet, sind ein Dateityphandler. Wie bei allen solchen Handlern handelt es sich um in-process Component Object Model (COM)-Objekte, die als DLLs implementiert werden.
Wenn der Benutzer mit der rechten Maustaste auf ein Element eines Dateityps klickt, um das Eigenschaftenfenster Eigenschaften anzuzeigen, ruft die Shell die Eigenschaftenblatthandler auf, die für den Dateityp registriert sind. Jeder Handler kann dem Standardeigenschaftenblatt eine benutzerdefinierte Seite hinzufügen.
Ein Großteil der Implementierung eines Shell-Erweiterungshandlerobjekts wird vom Typ vorgegeben. Es gibt jedoch einige gemeinsame Elemente. In diesem Thema werden die Aspekte der Implementierung erläutert, die von allen Shellerweiterungshandlern gemeinsam verwendet werden.