Beheerde code gebruiken met Shell-gegevens en Windows Search
De Windows Search SDK biedt een interoperabiliteitsassembly waarmee u kunt werken met COM-objecten (Component Object Model) die worden weergegeven door Windows Search en andere programma's op basis van de interfaces en klassen met behulp van beheerde code. De interoperabiliteitassemblage is digitaal ondertekend door Microsoft en is te vinden met de Windows Search voorbeelden.
Dit onderwerp is als volgt ingedeeld:
Het Windows API CodePack gebruiken
Als u in de Microsoft .NET-omgeving werkt, gebruikt u het Windows API Code Pack voor Microsoft .NET Framework om zoekresultaten te verkrijgen of bladert u door de naamruimte. Het Windows API Code Pack voor Microsoft .NET Framework biedt u een verzameling Shell-items die in wezen wrappers zijn rond de systeemeigen IShellItem Interface. U kunt deze verzameling herhalen en de verschillende eigenschapswaarden op dezelfde manier ophalen als de manier waarop u de resultaten in een tabel opsommen uit een OLE DB-query (Object Linking and Embedding Database).
In het volgende codefragment ziet u hoe u door Search-items kunt itereren en de eigenschapswaarden voor elk item kunt ophalen.
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);
}
Toegang tot indexresultaten
U kunt toegang krijgen tot indexresultaten via OLE DB of het Shell-gegevensmodel. Er zijn voordelen en nadelen met beide benaderingen. Een voordeel is dat OLE DB en Structured Query Language (SQL) bekend zijn met databaseprogrammeurs. Andere voordelen zijn betere controle over prestaties bij het uitvoeren van query's op alleen de indexeerfunctie en toegang tot aanvullende functionaliteit, zoals de mogelijkheid om eerdere resultaten snel in een nieuwe rijenset te vinden.
Voordelen van het Shell-gegevensmodel zijn dat het abstract is over verschillende informatiebronnen, zoals OpenSearch, en toegang biedt tot extra functionaliteit zoals miniaturen en eigenschapshandlers. Het Shell-objectmodel vereist evenmin speciale ondersteuning voor niet-bestandsnaamresultaten, zoals e-mailitems en OneNote-resultaten, noch voor items die zich in de index van de gebruiker bevinden. Houd er rekening mee dat in Shell KNOWNFOLDERID het bekende mapbereik is voor lokale geïndexeerde inhoud. Voor meer informatie over het maken van een Shell-gegevensbron, zie De basismapobjectinterfaces implementeren.
OpenSearch-gegevensbronnen worden niet weergegeven via OLE DB voor federatieve zoekopdrachten in Windows 7 en hoger. Daarom raden we u aan om een LINQ-provider te schrijven voor de Shell-naamruimte in plaats van OLE DB te gebruiken voor toegang tot de indexeerfunctieresultaten. Zie Walkthrough: Een IQueryable LINQ Provider makenvoor meer informatie.
Voorbeeldtoepassing met behulp van het Windows API Codepack
De volgende schermopname vertegenwoordigt een voorbeeldtoepassing die is gemaakt met het Windows API Code Pack voor Microsoft .NET Framework.
Verwante onderwerpen
-
conceptuele
-
andere middelen