Uso di codice gestito con i dati della shell e Windows Search
Windows Search SDK fornisce un assembly di interoperabilità che consente di lavorare con oggetti COM (Component Object Model) esposti da Windows Search e altri programmi rispetto alle interfacce e alle classi che usano codice gestito. L'assembly di interoperabilità è firmato digitalmente da Microsoft ed è disponibile con gli esempi di Windows Search.
Questo argomento è organizzato come segue:
Uso di CodePack dell'API Windows
Se si lavora nell'ambiente Microsoft .NET, usare il Code Pack dell'API Windows per Microsoft .NET Framework per ottenere i risultati della ricerca o semplicemente esplorare lo spazio dei nomi. Il Code Pack dell'API Windows per Microsoft .NET Framework offre una raccolta di elementi della shell essenzialmente wrapper intorno all'interfaccia IShellItem nativa. È possibile scorrere questa raccolta e ottenere i vari valori delle proprietà in modo simile a come enumerare i risultati in una tabella da una query Object Linking and Embedding Database (OLE DB).
Il frammento di codice seguente illustra come scorrere gli elementi di ricerca e ottenere i valori delle proprietà per ognuno.
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);
}
Accesso ai risultati dell'indice
È possibile accedere ai risultati dell'indice tramite OLE DB o il modello di dati shell. Esistono vantaggi e svantaggi con entrambi gli approcci. Un vantaggio è che OLE DB e Structured Query Language (SQL) hanno familiarità con i programmatori di database. Altri vantaggi sono un migliore controllo sulle prestazioni quando si eseguono query solo sull'indicizzatore e l'accesso a funzionalità aggiuntive, ad esempio la possibilità di individuare rapidamente i risultati precedenti in un nuovo set di righe.
I vantaggi del modello di dati shell sono l'astrazione tra origini diverse di informazioni, ad esempio OpenSearch, e consente l'accesso a funzionalità aggiuntive, ad esempio anteprime e gestori di proprietà. Né il modello a oggetti shell richiede un supporto caso speciale per i risultati non di nome file, ad esempio elementi di posta elettronica e risultati di OneNote, né per qualsiasi elemento che risiede nell'indice dell'utente. Si noti che in Shell KNOWNFOLDERID è l'ambito della cartella nota per il contenuto indicizzato locale. Per altre informazioni sulla creazione di un'origine dati shell, vedere Implementazione delle interfacce oggetto cartella di base.
Le origini dati OpenSearch non vengono esposte tramite OLE DB per la ricerca federata in Windows 7 e versioni successive. Per questo motivo è consigliabile scrivere un provider LINQ per lo spazio dei nomi Shell anziché usare OLE DB per accedere ai risultati dell'indicizzatore. Per altre informazioni, vedere Procedura dettagliata: Creazione di un provider LINQ IQueryable.
Applicazione di esempio con codepack dell'API Windows
Lo screenshot seguente rappresenta un mock up di un'applicazione di esempio creata con il Code Pack dell'API Windows per Microsoft .NET Framework.
Argomenti correlati
-
Informazioni concettuali
-
Altre risorse