Я пытаюсь получить результаты глобального поиска файлов в Windows, но документация по Windows Search невероятно сложна, и я бы не стал иметь дело с SQL для такой простой функциональности. Можно ли отобразить результаты поиска в проводнике Windows после запуска? search:query=%s
как IShellFolder
или же IShellItem
чтобы я мог обработать результаты в моем приложении?
Если вы хотите, чтобы всплыло дополнительное окно, вы можете создать окно 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 для возврата перечислителя элемента оболочки.
Других решений пока нет …