Freigeben über


Verwenden von verwaltetem Code mit Shelldaten und Windows Search

Das Windows Search SDK bietet eine Inopability-Assembly, mit der Sie mit COM-Objekten (Component Object Model) arbeiten können, die von Windows Search und anderen Programmen für die Schnittstellen und Klassen mit verwaltetem Code verfügbar gemacht werden. Die Interopability-Assembly wird von Microsoft digital signiert und kann mit den Windows Search-Beispielen gefunden werden.

Dieses Thema ist wie folgt organisiert:

Verwenden des Windows-API-CodePacks

Wenn Sie in der Microsoft .NET-Umgebung arbeiten, verwenden Sie das Windows API Code Pack für Microsoft .NET Framework, um Suchergebnisse abzurufen, oder durchsuchen Sie einfach den Namespace. Das Windows API Code Pack für Microsoft .NET Framework bietet Ihnen eine Sammlung von Shellelementen, die im Wesentlichen Wrapper um die native IShellItem-Schnittstelle herum sind. Sie können diese Auflistung durchlaufen und die verschiedenen Eigenschaftswerte auf eine Ähnliche Weise abrufen wie die Ergebnisse in einer Tabelle aus einer OLE DB-Abfrage (Object Linking and Embedding Database).

Der folgende Codeausschnitt veranschaulicht, wie Suchelemente durchlaufen und die Eigenschaftenwerte für die einzelnen Elemente abgerufen werden.

foreach (ShellObject so in KnownFolders.SavedSearches)
{
    searchFolder = new ShellSearchFolder(finalSearchCondition, (ShellContainer)so);
    List<ShellObject> items = new List<ShellObject>();
    foreach (ShellObject so2 in searchFolder) items.Add(so2);   
}

Zugreifen auf Indexergebnisse

Sie können entweder über OLE DB oder das Shell-Datenmodell auf Indexergebnisse zugreifen. Bei beiden Ansätzen gibt es Vor- und Nachteile. Ein Vorteil ist, dass OLE DB und strukturierte Abfragesprache (SQL) Datenbankprogrammierern vertraut sind. Weitere Vorteile sind eine bessere Kontrolle über die Leistung beim Abfragen nur des Indexers und der Zugriff auf zusätzliche Funktionen, z. B. die Möglichkeit, frühere Ergebnisse schnell in einem neuen Rowset zu finden.

Der Vorteil des Shell-Datenmodells besteht darin, dass es verschiedene Informationsquellen wie OpenSearch abstrahiert und Zugriff auf zusätzliche Funktionen wie Miniaturansichten und Eigenschaftenhandler bietet. Das Shell-Objektmodell erfordert auch keine Unterstützung für Sonderfälle für Nicht-Dateinamen-Ergebnisse wie E-Mail-Elemente und OneNote-Ergebnisse, noch für elemente, die sich im Index des Benutzers befinden. Beachten Sie, dass in Shell KNOWNFOLDERID der bekannte Ordnerbereich für lokale indizierte Inhalte ist. Weitere Informationen zum Erstellen einer Shell-Datenquelle finden Sie unter Implementieren der Grundlegenden Ordnerobjektschnittstellen.

OpenSearch-Datenquellen werden nicht über OLE DB für die Verbundsuche in Windows 7 und höher verfügbar gemacht. Aus diesem Grund wird empfohlen, einen LINQ-Anbieter für den Shell-Namespace zu schreiben, anstatt OLE DB für den Zugriff auf die Indexerergebnisse zu verwenden. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines IQueryable LINQ-Anbieters.

Beispielanwendung mit dem Windows-API-Codepack

Der folgende Screenshot stellt ein Modell einer Beispielanwendung dar, die mit dem Windows API Code Pack für Microsoft .NET Framework erstellt wurde.

Screenshot der Media Player-Anwendung mit E-Mail-Nachrichten

Konzept

Verbundsuche in Windows 10

Andere Ressourcen

Sprachübergreifende Interoperabilität