0

引数を指定してSearchIndexerを呼び出す方法はありますか? (またはタイトルが言うことを達成する別の方法はありますか?)検索ウィンドウ7は、sdkライブラリを使用せずにプログラム的に

さまざまなMSDNの記事を見てみましたが、それらはすべて私がライブラリを使用するように示唆されたようです。しかし、私は検索を実行すると、私はライブラリの任意の並べ替えをダウンロードせずに実行されます。

XPの時代に戻ると、インデックスサービスのプロパティに行き、クエリを実行することができました。私はWindows 7ではそれが表示されません。

ありがとう。

答えて

2

ここでは例のクエリです。 Windows 7 SDKは使用しないことに注意してください。

using System; 
using System.Data.OleDb; 

namespace FileSearchingExe 
{ 
class MainProgram 
{ 
    static void Main(string[] args) 
    {  
string sqlQuery = "SELECT TOP 10 \"System.ItemPathDisplay\", \"System.DateModified\" FROM \"SystemIndex\" WHERE CONTAINS(*,'\"urSearchWord*\"') " + 
      "AND scope='file:C:/SomeFolder' ORDER BY System.ItemPathDisplay DESC"; //note the forwardslash in the scope parameter. 

     // --- Perform the query --- 
     // create an OleDbConnection object which connects to the indexer provider with the windows application 
     using (System.Data.OleDb.OleDbConnection conn = new OleDbConnection("provider=Search.CollatorDSO.1;EXTENDED PROPERTIES=\"Application=Windows\""))//queryHelper.ConnectionString)) 
     { 
      // open the connection 
      conn.Open(); 

      // now create an OleDB command object with the query we built above and the connection we just opened. 
      using (OleDbCommand command = new OleDbCommand(sqlQuery, conn)) 
      { 
       // execute the command, which returns the results as an OleDbDataReader. 
       using (OleDbDataReader WDSResults = command.ExecuteReader()) 
       { 
        while (WDSResults.Read()) 
        { 
         // col 0 is our path in display format 

         Console.WriteLine("{0}, {1}", WDSResults.GetString(0), WDSResults.GetDateTime(1).ToString()); 
        } 
       } 
      } 
     } 
    } 
} 
} 

しかし、それはWindows 7 SDKのDSearchの例から修正されました。 ([SDK]¥Samples¥winui¥WindowsSearch¥DSearch。[SDK]は通常「C:¥Program Files¥Microsoft SDKs¥Windows¥v1.1」です。

SQLクエリをより簡単に行うことができますSDKのISearchQueryHelperを使用する場合は少し柔軟性の低いものになります)。そのクラスと関連クラスを使用するには、Microsoft.Search.Interopへの参照が必要です。これはWindows 7 SDKにはDLLとして含まれていません。 SearchAPI.tlbファイル([SDK] \ Lib)のTlbImp.exe([SDK] \ binにあるタイプライブラリインポータ)を使用してください。Also described here

この投稿は、プログラムで接続する必要がある人Windows 7以降のWindows検索

関連する問題