Arbeiten mit Shellerweiterungen

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.

Handler BESCHREIBUNG
Kontextmenühandler Wird aufgerufen, bevor das Kontextmenü einer Datei angezeigt wird. Damit können Sie dem Kontextmenü Datei für Datei Elemente hinzufügen.
Datenhandler 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.
Drop-Handler Wird aufgerufen, wenn ein Datenobjekt über eine Datei gezogen oder gelöscht wird. Es ermöglicht Ihnen, eine Datei zu einem Ablageziel zu machen.
Symbolhandler Wird aufgerufen, bevor das Symbol einer Datei angezeigt wird. Dadurch können Sie das Standardsymbol der Datei auf Dateibasis durch ein benutzerdefiniertes Symbol ersetzen.
Eigenschaftenblatthandler Wird aufgerufen, bevor das Eigenschaftenblatt Eigenschaften eines Objekts angezeigt wird. Es ermöglicht Ihnen, Seiten hinzuzufügen oder zu ersetzen.
Miniaturbildhandler Stellt ein Bild bereit, das das Element darstellt.
QuickInfo-Handler Stellt Popuptext bereit, wenn der Benutzer mit dem Mauszeiger auf das Objekt zeigt.
Metadatenhandler 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.

Handler BESCHREIBUNG
Spaltenhandler Wird von Windows Explorer aufgerufen, bevor die Detailansicht eines Ordners angezeigt wird. Sie können der Detailansicht benutzerdefinierte Spalten hinzufügen.
Kopierhakenhandler 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.
Drag & Drop-Handler Wird aufgerufen, wenn eine Datei mit der rechten Maustaste gezogen wird. Dadurch können Sie das angezeigte Kontextmenü ändern.
Symbolüberlagerungshandler Wird aufgerufen, bevor das Symbol einer Datei angezeigt wird. Sie können eine Überlagerung für das Symbol der Datei angeben.
Suchhandler 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: