2016-03-17 104 views
1

我試圖檢索Windows中的全局文件搜索結果,但Windows搜索文檔非常複雜,我寧願不處理這樣簡單的SQL功能。在將search:query=%s作爲IShellFolderIShellItem運行後,是否可以在Windows資源管理器中顯示搜索結果,以便可以在我的應用程序中處理結果項目?使用搜索毫秒:或搜索協議檢索搜索結果作爲IShellItem

+1

您可以使用ISearchQueryHelper接口爲您構建SQL(使用資源管理器的語法):https://msdn.microsoft.com/en-us/library/windows/desktop/bb231313.aspx,但您仍然可以使用ADO或OLEDB運行查詢。這將返回您可以使用標準shell函數轉換爲IShellItem的項目路徑 –

回答

1

如果你想要一個額外的窗口彈出,您可以創建一個Internet Explorer窗口,瀏覽到一個search-ms url,從IWebBrowser2的的實現的IServiceProvider,然後get the active shell view and enumerate items in the view查詢IShellBrowser服務。

如果您不需要額外的窗口,可以使用ISearchFolderItemFactory並使用運算符COP_VALUE_CONTAINS設置PKEY_FileName的條件。你也可以使用IConditionFactory2 :: CreateCompoundFromArray創建一個複合條件,用SQL語句可以是

其中fileName包含「ABC」或fileAuthor包含「ABC」或fileFullText包含「ABC」或fileTitle包含「ABC」

然後,您可以調用ISearchFolderItemFactory :: GetShellItem來獲取搜索文件夾對象的IShellItem接口,從中您可以call BindToHandler with BHID_EnumItems to return a shell item enumerator