Partager via


Utilisation de code géré avec des données du shell et Windows Search

Le Kit de développement logiciel (SDK) Windows Search fournit un assembly d’interopérabilité qui vous permet d’utiliser des objets COM (Component Object Model) exposés par Windows Search 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 est disponible avec les exemples de Windows Search.

Cette rubrique est organisée comme suit :

Utilisation du CodePack de l’API Windows

Si vous travaillez dans l’environnement Microsoft .NET, utilisez le pack de code de l’API Windows pour Microsoft .NET Framework pour obtenir des résultats de recherche ou simplement parcourir l’espace de noms. Le pack de code de l’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érez les résultats d’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 chacune d’elles.

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 d’index

Vous pouvez accéder aux résultats d’index via OLE DB ou le modèle de données Shell. Il existe des avantages et des inconvénients avec l’une ou l’autre approche. L’un des avantages est que OLE DB et SQL (Structured Query Language) sont familiers avec les programmeurs de base de données. D’autres avantages permettent de mieux contrôler les performances lors de l’interrogation du seul indexeur et de 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 des différentes sources d’informations telles que OpenSearch et fournit un accès à des fonctionnalités supplémentaires telles que les miniatures et les gestionnaires de propriétés. Le modèle objet Shell ne nécessite pas non plus de prise en charge des cas spéciaux pour les résultats non-nom de fichier, tels que les éléments de messagerie et les résultats OneNote, ni pour tous les éléments qui résident dans l’index de l’utilisateur. Notez que dans le Shell, KNOWNFOLDERID est l'étendue du répertoire connu pour le contenu local indexé. 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’é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 utilisant le codepack de l’API Windows

La capture d’écran suivante représente une maquette d’un exemple d’application créé avec le pack de code de l’API Windows pour Microsoft .NET Framework.

capture d’écran de l’application lecteur multimédia montrant les messages électroniques

conceptuelle

Recherche fédérée dans Windows

Autres ressources

Interopérabilité inter-langages