Использование управляемого кода с данными оболочки и Windows Search

Пакет SDK для Windows Search предоставляет сборку взаимодействия для работы с com-объектами, предоставляемыми Windows Search и другими программами в интерфейсах и классах с помощью управляемого кода. Сборка взаимодействия подписана корпорацией Майкрософт с цифровой подписью. Ее можно найти в примерах Windows Search.

Этот раздел организован следующим образом:

Использование пакета CodePack api Windows

Если вы работаете в среде Microsoft .NET, используйте пакет кода API Windows для Microsoft платформа .NET Framework для получения результатов поиска или просто просмотрите пространство имен. Пакет кода API Windows для Microsoft платформа .NET Framework предоставляет коллекцию элементов оболочки, которые по сути являются оболочками для собственного интерфейса IShellItem. Вы можете выполнить итерацию по этой коллекции и получить различные значения свойств так же, как можно перечислить результаты в таблице из запроса ole DB.

В следующем фрагменте кода показано, как выполнить итерацию по элементам поиска и получить значения свойств для каждого из них.

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

Доступ к результатам индекса

Получить доступ к результатам индекса можно с помощью OLE DB или модели данных оболочки. Любой из подходов имеет свои преимущества и недостатки. Одним из преимуществ является то, что OLE DB и язык SQL (SQL) знакомы программистам баз данных. Другими преимуществами являются лучший контроль над производительностью при запросе только индексатора и доступ к дополнительным функциям, таким как возможность быстрого поиска предыдущих результатов в новом наборе строк.

Преимущества модели данных оболочки заключается в том, что она абстрагирует различные источники информации, такие как OpenSearch, и предоставляет доступ к дополнительным функциям, таким как эскизы и обработчики свойств. Объектная модель оболочки также не требует поддержки особых случаев для результатов, не связанных с именем файла, таких как почтовые элементы и результаты OneNote, ни для любого элемента, который находится в индексе пользователя. Обратите внимание, что в оболочке KNOWNFOLDERID — это известная папка область для локального индексированного содержимого. Дополнительные сведения о создании источника данных оболочки см. в разделе Реализация базовых интерфейсов объектов папок.

Источники данных OpenSearch не предоставляются через OLE DB для федеративного поиска в Windows 7 и более поздних версиях. По этой причине рекомендуется написать поставщик LINQ для пространства имен оболочки вместо использования OLE DB для доступа к результатам индексатора. Дополнительные сведения см. в разделе Пошаговое руководство. Создание поставщика IQueryable LINQ.

Пример приложения, использующего пакет кода API Windows

На следующем снимке экрана показан макет примера приложения, созданного с помощью пакета кода API Windows для Microsoft платформа .NET Framework.

Снимок экрана: приложение проигрывателя мультимедиа с сообщениями электронной почты

Основные понятия

Федеративный поиск в Windows

Другие ресурсы

Взаимная совместимость кодов на разных языках