使用託管代碼與 Shell 數據和 Windows 搜尋搭配
Windows 搜尋 SDK 提供互操作性組件,使您能夠使用 Windows 搜尋服務和其他程式所公開的組件物件模型 (COM) 物件,並以管理程式碼對介面和類別進行操作。 互操作性元件已由 Microsoft 進行數位簽署,可以使用 Windows 搜尋範例找到。
本主題的組織方式如下:
使用 Windows API CodePack
如果您正在Microsoft .NET 環境中工作,請使用適用於 Microsoft .NET Framework Windows API 程式代碼套件來取得搜尋結果,或只流覽命名空間。 適用於 Microsoft .NET Framework 的 Windows API 程式代碼套件 提供了一組殼層項目,這些項目基本上是對原生 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 或 Shell 資料模型來存取索引結果。 這兩種方法都有優點和缺點。 其中一個優點是 OLE DB 和結構化查詢語言 (SQL) 對資料庫程式設計人員很熟悉。 其他優點包括在僅查詢索引器時能更好地控制性能,並可存取附加功能,例如快速在新行集中定位先前結果的能力。
Shell 數據模型的優點是它會跨不同資訊來源抽象化,例如 OpenSearch,並提供其他功能的存取權,例如縮圖和屬性處理程式。 Shell 物件模型不需要對非檔名結果提供特殊支援,例如郵件專案和 OneNote 結果,也不需要對任何位於使用者索引中的專案提供特殊支援。 請注意,在 Shell 中,KNOWNFOLDERID 是用於本機索引內容的已知資料夾範圍。 如需建立 Shell 資料來源的詳細資訊,請參閱 實作基本資料夾物件介面。
OpenSearch 數據源不會透過 OLE DB 公開,以在 Windows 7 和更新版本中進行同盟搜尋。 基於這個理由,我們建議您考慮撰寫Shell命名空間的LINQ提供者,而不是使用OLE DB來存取索引器結果。 如需詳細資訊,請參閱 逐步解說:建立 IQueryable LINQ 提供者。
使用 Windows API Codepack 的範例應用程式
下列螢幕快照代表使用 Windows API Code Pack for Microsoft .NET Framework建立的範例應用程式模擬。
相關主題