Utilisation de code managé avec Shell Data et Windows Search
Le Kit de développement logiciel (SDK) Recherche Windows fournit un assembly d’interopérabilité qui vous permet d’utiliser des objets COM (Component Object Model) exposés par Recherche Windows et d’autres programmes sur les interfaces et les classes à l’aide de code managé. L’assembly d’interopérabilité est signé numériquement par Microsoft et peut être trouvé avec les exemples Windows Search.
Cette rubrique est organisée comme suit :
Utilisation de l’API Windows CodePack
Si vous travaillez dans l’environnement Microsoft .NET, utilisez le pack de code d’API Windows pour Microsoft .NET Framework pour obtenir des résultats de recherche, ou parcourez simplement l’espace de noms. Le pack de code d’API Windows pour Microsoft .NET Framework vous fournit une collection d’éléments Shell qui sont essentiellement des wrappers autour de l’interface IShellItem native. Vous pouvez itérer sur cette collection et obtenir les différentes valeurs de propriété d’une manière similaire à la façon dont vous énuméreriez les résultats dans une table à partir d’une requête OLE DB (Object Linking and Embedding Database).
L’extrait de code suivant montre comment itérer sur les éléments de recherche et obtenir les valeurs de propriété pour chacun d’eux.
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);
}
Accès aux résultats de l’index
Vous pouvez accéder aux résultats d’index via OLE DB ou le modèle de données Shell. L’une ou l’autre approche présente des avantages et des inconvénients. L’un des avantages est qu’OLE DB et langage SQL (SQL) sont familiers aux programmeurs de base de données. D’autres avantages sont un meilleur contrôle des performances lors de l’interrogation uniquement de l’indexeur et l’accès à des fonctionnalités supplémentaires telles que la possibilité de localiser rapidement les résultats précédents dans un nouvel ensemble de lignes.
Les avantages du modèle de données Shell sont qu’il extrait différentes sources d’informations telles qu’OpenSearch et qu’il fournit l’accès à des fonctionnalités supplémentaires telles que des miniatures et des gestionnaires de propriétés. Le modèle objet Shell ne nécessite pas non plus la prise en charge des cas spéciaux pour les résultats autres que les noms de fichier, tels que les éléments de messagerie et les résultats OneNote, ni pour tout élément qui réside dans l’index de l’utilisateur. Notez que dans l’interpréteur de commandes KNOWNFOLDERID est l’étendue du dossier connu pour le contenu indexé local. Pour plus d’informations sur la création d’une source de données Shell, consultez Implémentation des interfaces d’objet dossier de base.
Les sources de données OpenSearch ne sont pas exposées via OLE DB pour la recherche fédérée dans Windows 7 et versions ultérieures. Pour cette raison, nous vous recommandons d’envisager d’écrire un fournisseur LINQ pour l’espace de noms Shell au lieu d’utiliser OLE DB pour accéder aux résultats de l’indexeur. Pour plus d’informations, consultez Procédure pas à pas : création d’un fournisseur LINQ IQueryable.
Exemple d’application à l’aide du codepack de l’API Windows
La capture d’écran suivante représente une maquette d’un exemple d’application créée avec le Pack de code d’API Windows pour Microsoft .NET Framework.
Rubriques connexes
-
Conceptuel
-
Autres ressources