在c#中使窗口突出显示搜索

Joh*_*nes 3 c# windows search wds

是否有可能通过c#实际进行Windows搜索(在菜单中使用higlighting在Vista中找到的那个(例如你写'fire'并获得'firefox')).

谢谢 :)

Fac*_*tic 5

是的,这可以通过Windows桌面搜索(WDS)API实现.你需要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();
Run Code Online (Sandbox Code Playgroud)

当我在一段时间的项目中使用它时,我使用的查询字符串构建如下:

CSearchManager SearchManager = new CSearchManager();
CSearchCatalogManager CatalogManager = SearchManager.GetCatalog("SystemIndex");
CSearchQueryHelper QueryHelper = CatalogManager.GetQueryHelper();
string connection_string = QueryHelper.ConnectionString;
Run Code Online (Sandbox Code Playgroud)

然后做一个简单的文件搜索:

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

从文档中,您可以看到如何构建可以获得所需结果的查询.

现在,快速说明.我是能够建立一个Vista的开始搜索克隆,但是,我做到了,通过在地方第一扫描链接文件,其中Vista的商店开始菜单链接(%APPDATA%\微软\的Windows \开始菜单和C:\ ProgramData \微软\的Windows \开始菜单),然后在后台异步加载WDS结果,这比仅依赖于WDS更好地复制开始搜索行为.