2009-04-30 3 views
3

C#을 통해 실제로 윈도우 검색을 할 수 있습니까? (예 : '파이어'를 쓰고 '파이어 폭스'를 얻을 수 있습니다.) 하이라이트가있는 메뉴에서 비스타에서 찾을 수 있습니다.윈도우에서 하이라이트 검색하기 #

감사합니다 :)

+0

강조 표시 부분을 수행하는 방법을 알아 냈습니까? – anon

답변

5

예, Windows 데스크톱 검색 (WDS) API에서 가능합니다. SDK이 필요합니다. 정확하게 리콜하면 .Net 어셈블리도 제공됩니다. 그런 다음 the documentation을보고 WDS 색인을 쿼리하는 방법을 알아보십시오.

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; 

는 그 다음을 수행 그것은 여기에 그들이 제공하는 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에만 의존하는 것보다 검색 시작 동작이 더 잘 복제됩니다.

+1

고마워 :) 나는 단지 필드가 궁금하다 : 사용자 ID = ; 비밀 번호 = . 내 시스템의 사용자 이름과 암호/windows-account? 고마워 – Johannes

1

윈도우 검색 검색 필드에 텍스트로 인덱스를 쿼리하여 결과를 달성하기 위해 인덱스를 사용하여 업데이트됩니다. 이 기능을 작동 시키려면 엔진이 결과를 매우 빠르게 리턴 할 수 있어야하며 조회에 매우 효율적인 콜렉션이 좋은 아이디어입니다.

검색 상자의 텍스트가 변경되면 해시 테이블을 쿼리합니다.