Eigenschaftenblatthandler

Wenn ein Benutzer mit der rechten Maustaste auf ein Shell-Objekt klickt, enthält das angezeigte Kontextmenü normalerweise ein Eigenschaftenelement . Wenn Sie dieses Element auswählen, wird ein Eigenschaftenblatt gestartet, mit dem der Benutzer die Eigenschaften des Objekts anzeigen und in einigen Fällen ändern kann. Sie können dieses Eigenschaftenblatt anpassen, indem Sie einen Eigenschaftenblatthandler implementieren und registrieren.

Die allgemeinen Verfahren zum Implementieren und Registrieren eines Shellerweiterungshandlers werden unter Erstellen von Shellerweiterungshandlern erläutert. Dieses Dokument konzentriert sich auf die Aspekte der Implementierung, die speziell für Eigenschaftenblatthandler gelten.

Funktionsweise von Eigenschaftenblatthandlern

Die folgende Abbildung zeigt das Eigenschaftenblatt "Eigenschaften" für eine Windows XP-Textdatei.

Eigenschaftenblatt

Diese Abbildung zeigt das Standardeigenschaftenblatt eigenschaften, das für jede Datei angezeigt wird. Für viele solche Eigenschaftenblätter können Sie dem Eigenschaftenblatt eine oder mehrere Seiten hinzufügen, indem Sie einen Eigenschaftenblatthandler implementieren und registrieren.

Eigenschaftenblatthandler werden am häufigsten für einen Dateityp registriert. Jeder Handler kann dem Eigenschaftenblatt für die -Klasse eine benutzerdefinierte Seite hinzufügen. Diese Seiten bieten Benutzern in der Regel Zugriff auf Eigenschaften, die für den jeweiligen Dateityp spezifisch sind. Ein Dateityp, der aus Textdokumenten besteht, kann für instance eine Seite mit dem Titel und dem Autor sowie eine Zusammenfassung des Dokuments anzeigen. Ein Sonderfall dieses Typs von Eigenschaftenblatthandler wird verwendet, um dem Eigenschaftenblatt Eigenschaften für ein bereitgestelltes Laufwerk eine Seite hinzuzufügen.

Die andere Verwendung für Eigenschaftenblatthandler besteht darin, Seiten in den Eigenschaftenblättern zu ersetzen, die von Systemsteuerung-Anwendungen angezeigt werden. Ein Maushersteller kann für instance einen Eigenschaftenblatthandler verwenden, um die Seite Schaltflächen auf dem Eigenschaftenblatt "Mauseigenschaften" des Systemsteuerung durch eine Seite zu ersetzen, die an die Eigenschaften der Maus angepasst ist.

Wie alle Shell-Erweiterungshandler sind Eigenschaftenblatthandler prozessinterne COM-Objekte (Component Object Model), die als DLLs implementiert werden. Sie müssen zusätzlich zu IUnknown zwei Schnittstellen exportieren: IShellExtInit und IShellPropSheetExt.

Die IShellExtInit-Schnittstelle wird von der Shell verwendet, um den Handler zu initialisieren. Wenn die Shell IShellExtInit::Initialize aufruft, übergibt sie ein Datenobjekt mit dem Namen des Objekts und dem Zeiger auf eine Elementbezeichnerliste (Item Identifier List, PIDL) des Ordners, der die Datei enthält. Der hRegKey-Parameter wird nicht mit Eigenschaftenblatthandlern verwendet. Die IShellExtInit::Initialize-Methode muss den Dateinamen aus dem Datenobjekt extrahieren und den Namen und die PIDL des Ordners zur späteren Verwendung speichern. Weitere Informationen finden Sie im Abschnitt Implementieren von IShellExtInit unter Erstellen von Shellerweiterungshandlern.

Der Rest des Vorgangs erfolgt über die IShellPropSheetExt-Schnittstelle des Handlers. Wenn das Eigenschaftenblatt einem Dateityp zugeordnet ist, ruft die Shell IShellPropSheetExt::AddPages auf, damit der Handler dem Eigenschaftenblatt eine Seite hinzufügen kann. Wenn das Eigenschaftenblatt einer Systemsteuerung Anwendung zugeordnet ist, ruft die Shell IShellPropSheetExt::ReplacePage auf, damit der Handler eine Seite ersetzen kann.

Registrieren und Implementieren eines Eigenschaftenblatthandlers für ein eingebundenes Laufwerk

Jedes bereitgestellte Laufwerk verfügt über ein Eigenschaftenblatt, das vom Benutzer angezeigt werden kann. Die folgende Abbildung zeigt ein Eigenschaftenblatt für ein CD-ROM-Laufwerk.

Eigenschaftenblatt für cd-rom-Eigenschaften

Es gibt eine Vielzahl von Geräten, die als Laufwerke eingebunden werden können. Da das für Datenträger konzipierte Standardeigenschaftenblatt für einige Geräte möglicherweise nicht ausreicht, kann ein Eigenschaftenblatthandler implementiert werden, um eine Seite hinzuzufügen, die für das bereitgestellte Gerät spezifisch ist. Die grundlegende Implementierung dieses Typs von Eigenschaftenblatthandler ist mit der implementierung identisch, die unter Registrieren und Implementieren eines Eigenschaftenblatthandlers für einen Dateityp beschrieben wird, mit zwei Ausnahmen.

  • Das an die IShellExtInit::Initialize-Methode des Handlers übergebene Datenobjekt kann den Laufwerkspfad im CFSTR_MOUNTEDVOLUME Format anstelle des CF_HDROP-Formats enthalten. Das CF_HDROP-Format wird verwendet, wenn das Gerät in einen Laufwerkbuchstaben eingebunden wird. Das CFSTR_MOUNTEDVOLUME-Format wird mit NTFS-Dateisystemen verwendet, wenn das Remotegerät in einen Ordner und nicht in einen Laufwerkbuchstaben eingebunden wird.
  • Die GUID des Handlers wird unter dem Schlüssel HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers registriert.

Registrieren und Implementieren eines Eigenschaftenblatthandlers für einen Dateityp

Registrieren und Implementieren eines Eigenschaftenblatthandlers für eine Systemsteuerung-Anwendung