Usando código gerenciado com dados de Shell e Pesquisa do Windows

O SDK de Pesquisa do Windows fornece um assembly de interoperabilidade para que você trabalhe com objetos COM (Component Object Model) expostos pela Pesquisa do Windows e outros programas, utilizando código gerenciado para interagir com interfaces e classes. O assembly de interoperabilidade é assinado digitalmente pela Microsoft e pode ser encontrado com os exemplos de Pesquisa do Windows.

Este tópico é organizado da seguinte maneira:

Usando o CodePack da API do Windows

Se você estiver trabalhando no ambiente do Microsoft .NET, use o Pacote de Códigos da API do Windows para Microsoft .NET Framework para obter resultados da pesquisa ou apenas navegue pelo namespace. O Pacote de Códigos da API do Windows para Microsoft .NET Framework fornece uma coleção de itens do Shell que são essencialmente wrappers em torno da Interface IShellItem nativa. Você pode iterar sobre essa coleção e obter os vários valores de propriedade de forma semelhante à forma como enumera os resultados em uma tabela de uma consulta OLE DB (Object Linking and Embedding Database).

O trecho de código a seguir ilustra como iterar sobre itens de pesquisa e obter os valores de propriedade para cada item.

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);   
}

Acessando os resultados do índice

Você pode acessar os resultados do índice por meio do OLE DB ou do modelo de dados shell. Há vantagens e desvantagens com qualquer abordagem. Uma vantagem é que o OLE DB e o SQL (Structured Query Language) são familiares para programadores de banco de dados. Outras vantagens são o melhor controle sobre o desempenho ao consultar apenas o indexador e o acesso a funcionalidades adicionais, como a capacidade de localizar resultados anteriores em um novo conjunto de linhas rapidamente.

As vantagens do modelo de dados do Shell são que ele abstrai em diferentes fontes de informações, como o OpenSearch, e fornece acesso a funcionalidades adicionais, como miniaturas e manipuladores de propriedades. O modelo de objeto Shell também não requer suporte especial para casos em resultados que não sejam de nome de arquivo, como itens de email ou resultados no OneNote, nem para qualquer item que resida no índice do usuário. Observe que no Shell KNOWNFOLDERID é o escopo de pasta conhecido para conteúdo indexado local. Para obter mais informações sobre como criar uma fonte de dados do Shell, consulte Implementando as interfaces básicas de objeto de pasta.

As fontes de dados do OpenSearch não são expostas por meio do OLE DB para pesquisa federada no Windows 7 e posterior. Por esse motivo, recomendamos que você considere escrever um provedor LINQ para o namespace shell em vez de usar o OLE DB para acessar os resultados do indexador. Para obter mais informações, consulte Passo a passo: criando um provedor LINQ IQueryable.

Aplicativo de exemplo usando o codepack da API do Windows

A captura de tela a seguir representa uma simulação de um aplicativo de exemplo criado com o Pacote de Códigos da API do Windows para Microsoft .NET Framework.

captura de tela do aplicativo media player mostrando mensagens de email

Conceitual

Pesquisa Federada no Windows

outros recursos

Interoperabilidade entre idiomas