2009-04-30 3 views
3

実際にWindows検索を実行することは可能でしょうか?(ハイライト付きのメニューからVistaで見つけたもの(例: 'fire'と 'firefox'))Windowsでハイライト検索を行う#

おかげで:)

+0

あなたはこれのハイライト部分をどのように行うのか分かりましたか? – anon

答えて

5

はい、これはWindowsデスクトップサーチ(WDS)APIで可能です。 SDKが必要です。正しくリコールすれば.Netアセンブリを提供することさえできます。次に、the documentationを参照して、WDS索引を照会する方法を学習してください。やって次に

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

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

私はしばらく前に、プロジェクトでこれを使用すると、私が使用したクエリ文字列が構築されたこのような何か:それはここでは、それらが提供するC#の例ですが、非常に簡単です単純なファイル検索:

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 \スタートメニュー)、非同期的にWDS結果をバックグラウンドで読み込み、WDSのみに依存するよりもStart Searchの動作を複製します。

+1

ありがとう:)私はフィールドが何であるのだろうか:ユーザーID = ;パスワード= 。私のシステム上の私のユーザ名とパスワード/ windows-account?どうも – Johannes

1

Windowsの検索では、検索フィールドにテキストが更新されると、インデックスを照会することによって結果を達成するためにインデックスを使用しています。これを機能させるには、エンジンが非常に迅速に結果を返すことができなければならないので、検索に非常に効率的なコレクションが良い考えです。

次に、検索ボックスのテキストが変更されたときにハッシュテーブルにクエリを実行します。

関連する問題