Använda hanterad kod med Shell-data och Windows Search
Windows Search SDK tillhandahåller en interoperabilitetsassembly som låter dig arbeta med COM-objekt (Component Object Model) som exponeras av Windows Search och andra program, tillsammans med gränssnitt och klasser genom att använda hanterad kod. Interopability-sammansättningen är digitalt signerad av Microsoft och kan hittas med Windows Search-exempel.
Det här avsnittet är ordnat på följande sätt:
Använda Windows API CodePack
Om du arbetar i Microsoft .NET-miljön använder du Windows API Code Pack för Microsoft .NET Framework för att hämta sökresultat eller bara bläddra i namnområdet. Med Kodpaket för Windows API för Microsoft .NET Framework får du en samling Shell-objekt som i princip är omslutningar kring det interna IShellItem-gränssnittet. Du kan iterera över den här samlingen och hämta de olika egenskapsvärdena på ett sätt som liknar hur du skulle räkna upp resultatet i en tabell från en OLE DB-fråga (Object Linking and Embedding Database).
Följande kodfragment visar hur du itererar över sökobjekt och hämtar egenskapsvärdena för var och en.
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);
}
Åtkomst till indexresultat
Du kan komma åt indexresultat via antingen OLE DB eller Shell-datamodellen. Det finns fördelar och nackdelar med båda tillvägagångssätten. En fördel är att OLE DB och Structured Query Language (SQL) är bekanta för databasprogram programmerare. Andra fördelar är bättre kontroll över prestanda när du bara frågar indexeraren och åtkomst till ytterligare funktioner, till exempel möjligheten att snabbt hitta tidigare resultat i en ny raduppsättning.
Fördelarna med Shell-datamodellen är att den abstraherar mellan olika informationskällor, till exempel OpenSearch, och ger åtkomst till ytterligare funktioner som miniatyrer och egenskapshanterare. Shell-objektmodellen kräver inte heller specialfallsstöd för resultat som inte är filnamn, till exempel e-postobjekt och OneNote-resultat, eller för objekt som finns i användarens index. Observera att i Shell KNOWNFOLDERID är det kända mappomfånget för lokalt indexerat innehåll. Mer information om hur du skapar en Shell-datakälla finns i Implementera grundläggande mappobjektgränssnitt.
OpenSearch-datakällor exponeras inte via OLE DB för federerad sökning i Windows 7 och senare. Därför rekommenderar vi att du skriver en LINQ-provider för Shell-namnområdet i stället för att använda OLE DB för att komma åt indexerarens resultat. För mer information, se Genomgång: Skapa en IQueryable LINQ-provider.
Exempelprogram som använder Windows API Codepack
Följande skärmbild representerar en modell av ett exempelprogram som skapats med Windows API Code Pack för Microsoft .NET Framework.
Relaterade ämnen
-
konceptuell
-
andra resurser