Freigeben über


Hinzufügen von Symbolen und Kontextmenüs mit Shellerweiterungen

Hinweis

Windows Desktop Search 2.x ist eine veraltete Technologie, die ursprünglich als Add-In für Windows XP und Windows Server 2003 verfügbar war. Verwenden Sie in späteren Releases stattdessen Windows Search .

Sie können die Benutzerfreundlichkeit mit Microsoft Windows Desktop Search (WDS) und Ihrem Protokollhandler verbessern, indem Sie Shell-Erweiterungen implementieren. Ohne weitere Erweiterung enthält der von Ihnen erstellte Protokollhandler nicht die folgenden Benutzeroberflächen:

  • WDS zeigt keine spezifischen Symbole für Ihre Ergebnisse an.
  • Wenn Benutzer auf ein Element doppelklicken, reagiert die Benutzeroberfläche nicht auf das Ereignis.
  • Wenn Benutzer mit der rechten Maustaste auf ein Element klicken, unterstützt das Kontextmenü keine Vorgänge für das Element.

Für IShellFolder sind minimale Implementierungen von IPersist und IPersistFolder erforderlich, und für IContextMenu und IExtractIcon, die beiden Schnittstellen, die eine nahtlosere Benutzeroberfläche bieten, ist eine minimale Implementierung von IShellFolder erforderlich.

 

Ipersist

Die IPersist-Schnittstelle definiert die einzelne Methode GetClassID, die für die Bereitstellung der CLSID eines Objekts konzipiert ist, das dauerhaft im System gespeichert werden kann.

Methode BESCHREIBUNG
GetClassID() Gibt die ClassID des Protokollhandlers zurück.

 

Hinweis

Dieselbe CLSID sollte für IPersist, IPersistFolder und IShellFolder implementiert werden.

 

 

IPersistFolder

Die IPersistFolder-Schnittstelle wird verwendet, um Shellordnerobjekte zu initialisieren. Bei der Implementierung dieser Schnittstelle, die von IPersist abgeleitet wird, wird dem Ordner mitgeteilt, wo er sich im Shell-Namespace befindet.

Methode BESCHREIBUNG
Initialize() Weist ein Shell-Ordnerobjekt an, sich basierend auf den übergebenen Informationen zu initialisieren, und gibt S_OK

 

Hinweis

Dieselbe CLSID sollte für IPersist, IPersistFolder und IShellFolder implementiert werden.

 

Sie verwenden diese Schnittstelle nicht direkt. Es wird von der Dateisystemimplementierung der IShellFolder::BindToObject-Schnittstelle verwendet, wenn ein Shell-Ordnerobjekt initialisiert wird.

 

IShellFolder

Die IShellFolder-Schnittstelle wird zum Verwalten von Ordnern verwendet, und eine teilweise Implementierung ist erforderlich, damit sich die für einen Protokollhandler implementierten Symbol- und Kontextschnittstellen in der Benutzeroberfläche der Windows-Desktopsuche-Ergebnisse ordnungsgemäß verhalten. Die meisten der erforderlichen Funktionen werden über die GetUIObjectOf-Methode verfügbar gemacht. Mit dieser Methode kann ein Add-In die Schnittstellen IExtractIcon und IContextMenu abfragen.

Die IShellFolder-Schnittstelle verwendet PIDLs anstelle von URLs. Im Gegensatz zu den Anforderungen einer vollständigen Namespaceerweiterung können Add-Ins eine einfache IDL-Struktur verwenden, die nur die URL enthält.

Die folgenden Methoden von IShellFolder müssen implementiert werden. Beachten Sie, dass fünf dieser Methoden eine minimale Implementierung erfordern.

Methode BESCHREIBUNG
BindToObject() Gibt E_NOTIMPL zurück
BindToStorage() Gibt E_NOTIMPL zurück
CreateViewObject() Gibt E_NOTIMPL zurück
SetNameOf() Gibt E_NOTIMPL zurück
ParseDisplayName() Konvertiert eine URL in die PIDL-Struktur
CompareIDs() Vergleicht zwei PIDL-Werte
GetDisplayNameOf() Gibt die URL für eine PIDL zurück.
GetUIObjectOf() Diese Methode ähnelt der OLE COM QueryInterface-Methode. Wenn ein Symbol angefordert wird, fordert der Aufrufer die IID_IExtractIcon an. wenn ein Kontextmenü angefordert wird, fordert der Aufrufer den IID_IContextMenu an.

 

Hinweis

Dieselbe CLSID sollte für IPersist, IPersistFolder und IShellFolder implementiert werden.

 

IShellFolder wird nicht zum Auflisten von Ordnern verwendet. Dies bedeutet, dass der Anzeigename eines Ordners die physische URL ist. Dies kann sich in Zukunft ändern.

 

IContextMenu

Wenn WDS dem Benutzer Ergebnisse anzeigt, kann der Benutzer mit der rechten Maustaste auf ein Element klicken und ein Kontextmenü anzeigen, das von Ihrer IContextMenu-Schnittstelle definiert ist.

Die Standardaktion im Kontextmenü ist dieselbe Aktion, die beim Doppelklicken auf das Element ausgeführt wird. Ohne die entsprechenden IShellFolder - oder IContextMenu-Schnittstellen für das Element besteht das Standardverhalten für ein Doppelklickereignis darin, die URL als Argument an die ShellExecute-Funktion zu übergeben.

 

IExtractIcon

IExtractIcon ruft ein Symbol für die WDS-Benutzeroberfläche basierend auf der URL in der PIDL ab, die von Ihrem Protokollhandler bereitgestellt wird.

 

Codebeispiel

Der Benutzeroberfläche des benutzerdefinierten Protokollhandler-Beispielcodes veranschaulicht eine Implementierung von IShellFolder und unterstützenden Schnittstellen und enthält Unterstützung für die Bearbeitung der PIDLs.

Referenz

Benutzerdefinierter Benutzeroberfläche für Protokollhandler– Beispielcode

Installieren und Registrieren von Protokollhandlern