Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Funktionen der Shell können mit Registrierungseinträgen und .ini Dateien erweitert werden. Obwohl dieser Ansatz zur Erweiterung der Shell einfach und für viele Zwecke angemessen ist, ist es begrenzt. Wenn Sie z. B. die Registrierung verwenden, um ein benutzerdefiniertes Symbol für einen Dateityp anzugeben, wird für jede Datei dieses Typs dasselbe Symbol angezeigt. Wenn Sie die Shell mit der Registrierung erweitern, können Sie das Symbol für verschiedene Elemente des Dateityps nicht variieren. Andere Aspekte der Shell, wie etwa das Eigenschaftenblatt Properties, das angezeigt werden kann, wenn mit der rechten Maustaste auf eine Datei geklickt wird, können über die Registrierung überhaupt nicht geändert werden.
Ein leistungsfähigerer und flexiblerer Ansatz zur Erweiterung der Shell besteht darin, Shell-Erweiterungshandler zu implementieren. Diese Handler können für eine Vielzahl von Aktionen implementiert werden, die von der Shell ausgeführt werden können. Vor dem Ausführen der Aktion fragt die Shell den Erweiterungshandler ab und gibt ihm so die Möglichkeit, die Aktion zu ändern. Ein gängiges Beispiel ist ein Shortcut-Menü-Erweiterungshandler. Wenn eine für einen Dateityp implementiert ist, wird sie jedes Mal abgefragt, wenn eine der Dateien mit der rechten Maustaste geklickt wird. Der Handler kann dann zusätzliche Menüelemente auf Dateibasis angeben, anstatt für alle Dateien dieses Dateityps denselben Satz festzulegen.
In diesem Themensatz wird erläutert, wie Sie die Erweiterungshandler implementieren, mit denen Sie eine Vielzahl von Shell-Aktionen ändern können. Die folgenden Handler sind einem bestimmten Dateityp zugeordnet und ermöglichen es Ihnen, dies für jede einzelne Datei anzugeben.
| Handler | Beschreibung |
|---|---|
| Schnellzugriffsmenü-Handler | Wird aufgerufen, bevor das Kontextmenü einer Datei angezeigt wird. Damit können Sie dem Kontextmenü Einträge auf Dateibasis hinzufügen. |
| Datenhandler | Wird aufgerufen, wenn ein Drag-and-Drop-Vorgang für Shell-Objekte ausgeführt wird. Es ermöglicht Ihnen, dem Ablageziel zusätzliche Zwischenablageformate zur Verfügung zu stellen. |
| Drop-Handler | Wird aufgerufen, wenn ein Datenobjekt auf eine Datei gezogen oder dort abgelegt wird. Sie können eine Datei in ein Drop-Ziel umwandeln. |
| Symbolhandler | Wird aufgerufen, bevor das Symbol einer Datei angezeigt wird. Sie können das Standardsymbol der Datei durch ein benutzerdefiniertes Symbol auf Dateibasis ersetzen. |
| Eigenschaftenblatthandler | Wird aufgerufen, bevor das Eigenschaftenfenster eines Objekts angezeigt wird. Sie können Seiten hinzufügen oder ersetzen. |
| Vorschaubild-Handler | Stellt ein Bild bereit, das das Element darstellt. |
| Infotip-Handler | Stellt Popuptext bereit, wenn der Benutzer den Mauszeiger über das Objekt bewegt. |
| Metadatenhandler | Bietet Lese- und Schreibzugriff auf Metadaten (Eigenschaften), die in einer Datei gespeichert sind. Dies kann zum Erweitern der Detailansicht, der Infotipps, der Eigenschaftsseite und der Gruppierungsfunktionen verwendet werden. |
Andere sind keinem bestimmten Dateityp zugeordnet, werden jedoch vor einigen Shell-Vorgängen aufgerufen.
| Handler | Beschreibung |
|---|---|
| Spaltenverarbeitung | Wird von Windows Explorer aufgerufen, bevor die Detailansicht eines Ordners angezeigt wird. Sie können der Detailansicht benutzerdefinierte Spalten hinzufügen. |
| Anker-Handler kopieren | Wird aufgerufen, wenn ein Ordner- oder Druckerobjekt verschoben, kopiert, gelöscht oder umbenannt werden soll. Sie können den Vorgang genehmigen oder vetoieren. |
| Drag-and-Drop-Handler | Wird aufgerufen, wenn eine Datei mit der rechten Maustaste gezogen wird. Sie können 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 | Wird zum Starten einer Suchmaschine aufgerufen. Sie können eine benutzerdefinierte Suchmaschine 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:
Note
Überlegungen zu Sicherheit und Stabilität: Shellerweiterungshandler sind prozessinterne COM-DLLs, die direkt in den Explorer-Prozess geladen werden (oder alle Prozesse, die die Shell hosten). Ein Absturz oder ein Hängenbleiben Ihrer Erweiterung führt dazu, dass der Explorer für alle Benutzer abstürzt oder sich aufhängt.
Wichtige Anforderungen:
- Registrieren mit
ThreadingModel = Apartment– Die Shellansichten des Explorers werden in einem STA-Thread ausgeführt. Die VerwendungFreeoderBothkann zu subtilen Threadingfehlern führen. - Behandeln Sie das DPI-Bewusstsein korrekt – Explorer ist pro Monitor DPI-bewusst. Erweiterungen, die von einer festen DPI ausgehen, werden auf Mehrmonitor-Setups falsch gerendert.
- Verwenden Sie für verpackte (MSIX)-Apps die manifestbasierte Registrierung über das
desktop4:ExtensionElement oder ein Sparse-Paket, anstatt Registrierungsschlüssel direkt zu schreiben. - Überlegen Sie, ob ein einfacherer Ansatz (statische Verbregistrierung,
.regDateizuordnung oder die Windows. Storage.Provider-APIs) können Ihre Anforderungen erfüllen, bevor sie eine vollständige COM-Shell-Erweiterung implementieren.