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()); 
        } 
       } 
      } 
     } 
    } 
} 
} 

Однако он был адаптирован из примера DSearch в Windows 7 SDK. ([SDK] \ Samples \ winui \ WindowsSearch \ DSearch. [SDK] обычно «C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1»

Обратите внимание, что вы можете сделать запрос SQL более легко (но чуть менее гибкий imo), если вы используете SDK ISearchQueryHelper.Чтобы использовать этот класс и связанные классы, вам нужно иметь ссылку на Microsoft.Search.Interop, который не входит в пакет Windows 7 SDK как dll. Однако вы можете получить его в dll форме используя TlbImp.exe (импортер библиотеки типов, в [SDK] \ bin) в файле SearchAPI.tlb (в [SDK] \ Lib). Also described here.

Я надеюсь, что этот пост поможет всем, кому необходимо программно подключиться к Windows Search в Windows 7 или выше.