다음을 통해 공유


셸 데이터 및 Windows 검색에서 관리 코드 사용

Windows Search SDK는 관리 코드를 사용하여 인터페이스 및 클래스에 대해 Windows Search 및 기타 프로그램에서 노출하는 COM(구성 요소 개체 모델) 개체로 작업할 수 있는 상호 운용성 어셈블리를 제공합니다. 상호 운용성 어셈블리는 Microsoft에서 디지털 서명하며 Windows Search 샘플에서 찾을 수 있습니다.

이 항목은 다음과 같이 구성됩니다.

Windows API CodePack 사용

Microsoft .NET 환경에서 작업하는 경우 Microsoft .NET Framework Windows API 코드 팩을 사용하여 검색 결과를 가져오거나 네임스페이스를 찾아봅니다. Microsoft .NET Framework용 Windows API 코드 팩은 기본적으로 네이티브 IShellItem 인터페이스에 대한 래퍼인 셸 항목 컬렉션을 제공합니다. 이 컬렉션을 반복하고 OLE DB(Object Linking and Embedding Database) 쿼리에서 테이블의 결과를 열거하는 방법과 유사한 방식으로 다양한 속성 값을 가져올 수 있습니다.

다음 코드 조각에서는 검색 항목을 반복하고 각각에 대한 속성 값을 가져오는 방법을 보여 줍니다.

foreach (ShellObject so in KnownFolders.SavedSearches)
{
    searchFolder = new ShellSearchFolder(finalSearchCondition, (ShellContainer)so);
    List<ShellObject> items = new List<ShellObject>();
    foreach (ShellObject so2 in searchFolder) items.Add(so2);   
}

인덱스 결과 액세스

OLE DB 또는 셸 데이터 모델을 통해 인덱스 결과에 액세스할 수 있습니다. 두 방법 중 하나에는 장점과 단점이 있습니다. 한 가지 장점은 OLE DB 및 SQL(구조적 쿼리 언어)이 데이터베이스 프로그래머에게 익숙하다는 것입니다. 다른 장점은 인덱서만 쿼리할 때 성능을 더 잘 제어하고 새 행 집합에서 이전 결과를 빠르게 찾을 수 있는 기능과 같은 추가 기능에 대한 액세스입니다.

Shell 데이터 모델의 장점은 OpenSearch와 같은 다양한 정보 원본을 추상화하고 썸네일 및 속성 처리기와 같은 추가 기능에 대한 액세스를 제공한다는 것입니다. 또한 Shell 개체 모델에는 메일 항목 및 OneNote 결과와 같은 파일 이름이 아닌 결과나 사용자 인덱스에 있는 항목에 대한 특별한 사례 지원이 필요하지 않습니다. 셸 KNOWNFOLDERID에서는 로컬 인덱싱된 콘텐츠에 대한 알려진 폴더 scope. 셸 데이터 원본을 만드는 방법에 대한 자세한 내용은 기본 폴더 개체 인터페이스 구현을 참조하세요.

OpenSearch 데이터 원본은 Windows 7 이상에서 페더레이션된 검색을 위해 OLE DB를 통해 노출되지 않습니다. 따라서 OLE DB를 사용하여 인덱서 결과에 액세스하는 대신 셸 네임스페이스에 대한 LINQ 공급자를 작성하는 것이 좋습니다. 자세한 내용은 연습: IQueryable LINQ 공급자 만들기를 참조하세요.

Windows API Codepack을 사용하는 샘플 애플리케이션

다음 스크린샷은 Microsoft .NET Framework 대한 Windows API 코드 팩을 사용하여 만든 샘플 애플리케이션의 모형을 나타냅니다.

전자 메일 메시지를 보여 주는 미디어 플레이어 애플리케이션의 스크린샷

개념

Windows에서 페더레이션된 검색

기타 리소스

언어 간 상호 운용성