Использование search-ms: или search: протоколы для получения результатов поиска в качестве IShellItem

Я пытаюсь получить результаты глобального поиска файлов в Windows, но документация по Windows Search невероятно сложна, и я бы не стал иметь дело с SQL для такой простой функциональности. Можно ли отобразить результаты поиска в проводнике Windows после запуска? search:query=%s как IShellFolder или же IShellItem чтобы я мог обработать результаты в моем приложении?

1

Решение

Если вы хотите, чтобы всплыло дополнительное окно, вы можете создать окно Internet Explorer, перейти к URL-адрес поискового сообщения, запросите службу IShellBrowser из реализации IerebBrowser2 IServiceProvider, затем получить активное представление оболочки и перечислить элементы в представлении.

Если вам не нужно дополнительное окно, вы можете использовать ISearchFolderItemFactory и установить условие PKEY_FileName с оператором COP_VALUE_CONTAINS. Вы также можете использовать IConditionFactory2 :: CreateCompoundFromArray для создания сопутствующих условий, в терминах SQL это может быть что-то вроде

где fileName содержит «ABC» ИЛИ fileAuthor содержит «ABC» или fileFullText содержит «ABC» или fileTitle содержит «ABC»

Затем вы можете вызвать ISearchFolderItemFactory :: GetShellItem, чтобы получить интерфейс IShellItem объекта папки поиска, из которого вы можете вызовите BindToHandler с BHID_EnumItems для возврата перечислителя элемента оболочки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]