次の方法で共有


シェル データと Windows Search でのマネージド コードの使用

Windows Search SDK には、マネージ コードを使用してインターフェイスとクラスに対して Windows Search やその他のプログラムによって公開されるコンポーネント オブジェクト モデル (COM) オブジェクトを操作するための相互運用機能アセンブリが用意されています。 相互運用機能アセンブリは Microsoft によってデジタル署名されており、 Windows Search のサンプルを参照してください。

このトピックは次のように整理されています。

Windows API CodePack の使用

Microsoft .NET 環境で作業している場合は、Windows API Code Pack for Microsoft .NET Frameworkを使用して検索結果を取得するか、名前空間を参照します。 Microsoft .NET Framework 用 Windows API Code Pack には、基本的にネイティブ 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 またはシェル データ モデルのいずれかを使用してアクセスできます。 どちらの方法にも長所と短所があります。 1 つの利点は、OLE DB と 構造化照会言語 (SQL) がデータベース プログラマにとってなじみのある点です。 その他の利点は、インデクサーのみを照会する場合のパフォーマンスをより適切に制御できることと、新しい行セットで以前の結果をすばやく見つける機能などの追加機能にアクセスできることです。

シェル データ モデルの利点は、OpenSearch などのさまざまな情報ソース間で抽象化し、サムネイルやプロパティ ハンドラーなどの追加機能にアクセスできる点です。 また、シェル オブジェクト モデルでは、メール アイテムや OneNote の結果などのファイル名以外の結果や、ユーザーのインデックスに存在するアイテムに対する特別なサポートも必要ありません。 シェルの KNOWNFOLDERID は、ローカル インデックス付きコンテンツの既知のフォルダー スコープであることに注意してください。 シェル データ ソースの作成の詳細については、「 基本的なフォルダー オブジェクト インターフェイスの実装」を参照してください。

OpenSearch データ ソースは、Windows 7 以降のフェデレーション検索のために OLE DB を介して公開されません。 このため、OLE DB を使用してインデクサーの結果にアクセスするのではなく、シェル名前空間用の LINQ プロバイダーを作成することを検討することをお勧めします。 詳細については、「 チュートリアル: IQueryable LINQ プロバイダーの作成」を参照してください。

Windows API Codepack を使用したサンプル アプリケーション

次のスクリーンショットは、Windows API Code Pack for Microsoft .NET Framework で作成されたサンプル アプリケーションのモックアップを示しています。

電子メール メッセージを示すメディア プレーヤー アプリケーションのスクリーン ショット

概念

Windows でのフェデレーション検索

その他のリソース

言語間の相互運用性