сделать поиск подсветки Windows в C # - PullRequest
3 голосов
/ 01 мая 2009

Возможно ли с помощью c # выполнить поиск Windows (тот, который вы найдете в Vista из меню с подсветкой (например, вы пишете 'fire' и получаете 'firefox')).

Спасибо:)

Ответы [ 2 ]

5 голосов
/ 01 мая 2009

Да, это возможно с помощью API поиска Windows Desktop (WDS). Вам понадобится SDK , который даже обеспечивает сборку .Net, если я правильно помню. Затем посмотрите документацию , чтобы узнать, как запросить индекс WDS. Это довольно просто, вот пример C #, который они предоставляют:

OleDbConnection conn = new OleDbConnection(
    "Data Source=(local);Initial Catalog=Search.CollatorDSO;Integrated Security=SSPI;User ID=<username>;Password=<password>");

OleDbDataReader rdr = null;

conn.Open();

OleDbCommand cmd = new OleDbCommand("SELECT Top 5 System.ItemPathDisplay FROM SYSTEMINDEX", conn);

rdr = cmd.ExecuteReader();

while (rdr.Read())
{
    Console.WriteLine(rdr[0]);
}

rdr.Close();
conn.Close();

Когда я использовал это в проекте некоторое время назад, строка запроса, которую я использовал, была построена примерно так:

CSearchManager SearchManager = new CSearchManager();
CSearchCatalogManager CatalogManager = SearchManager.GetCatalog("SystemIndex");
CSearchQueryHelper QueryHelper = CatalogManager.GetQueryHelper();
string connection_string = QueryHelper.ConnectionString;

Затем выполнить простой поиск файла:

QueryHelper.QueryWhereRestrictions = "AND scope='file:'";
QueryHelper.QuerySorting = "System.ItemNameDisplay ASC";
string sqlQuery = QueryHelper.GenerateSQLFromUserQuery(Filename);

Из документации вы можете увидеть, как создавать запросы, которые дают вам необходимые результаты.

Теперь короткая заметка. Мне удалось создать клон Vista Start Search, однако я сделал это, сначала просканировав файлы ссылок в местах, где Vista хранит ссылки в меню «Пуск» (% appdata% \ Microsoft \ Windows \ Start Menu & C: \ ProgramData \ Microsoft \ Windows \ Start Menu), затем асинхронная загрузка WDS приводит к фону, который лучше воспроизводит поведение при запуске поиска, чем полагается исключительно на WDS.

1 голос
/ 01 мая 2009

Поиск в Windows использует индекс для достижения результатов путем запроса индекса по мере обновления текста в поле поиска. Для того, чтобы это работало, движок должен быть способен быстро возвращать результаты, поэтому хорошая коллекция для поиска - хорошая идея.

Затем вы запросите хеш-таблицу при изменении текста в окне поиска.

...