[이 기능은 Windows XP 또는 이전 버전에서만 지원됩니다. ]
Windows 탐색기의 세부 정보 보기에는 일반적으로 여러 표준 열이 표시됩니다. 각 열에는 현재 폴더의 각 파일에 대한 파일 크기 또는 형식과 같은 정보가 나열됩니다. 열 처리기를 구현하고 등록하면 사용자 지정 열을 표시할 수 있습니다.
셸 확장 처리기를 구현하고 등록하는 일반적인 절차는 셸 확장 처리기 만들기설명합니다. 이 문서에서는 열 처리기와 관련된 구현의 이러한 측면에 중점을 둡니다.
다음 항목에 대해 설명합니다.
- 열 처리기 작동 방식
- 열 처리기 등록
-
열 처리기 구현하기
- The Initialize 메서드
- GetColumnInfo 메서드
- GetItemData 메서드
열 처리기의 작동 방식
다음 그림에서는 세부 정보 보기의 Windows 탐색기를 보여 줍니다.
Windows 2000에서는 폴더가 기본적으로 표시되지 않는 여러 열을 지원할 수도 있습니다. 사용자는 열 머리글 중 하나를 마우스 오른쪽 단추로 클릭하고 메뉴에서 자세히... 명령을 선택하여 추가 열을 표시할 수 있습니다. 그런 다음 폴더에 사용 가능한 열을 나열하고 사용자가 표시할 열을 선택할 수 있는 대화 상자가 나타납니다. 다음 그림에서는 앞의 예제에 대한 이 대화 상자를 보여 줍니다.
세부 정보 선택 대화 상자가 표시된 windows 탐색기의 스크린샷 
열 처리기를 만들어 사용자 지정 열을 만들고 해당 목록에 추가할 수 있습니다. 예를 들어 음악이 포함된 파일 컬렉션은 열 처리기를 사용하여 각 파일에 포함된 아티스트 및 조각을 나열하는 열을 표시할 수 있습니다.
열 처리기는 Windows 탐색기에서 세부 정보 보기를 표시할 때마다 호출되는 전역 개체입니다. 그러나 열 처리기는 일반적으로 특정 파일 형식멤버에 대해서만 사용자 지정 열을 표시하는 데 사용됩니다. 세부 정보 보기를 표시하기 전에 Windows 탐색기는 등록된 모든 열 처리기에서 열 특성을 쿼리합니다. 사용자가 처리기의 열 중 하나를 선택한 경우 Windows 탐색기는 연결된 데이터에 대한 처리기를 쿼리합니다. 열 처리기가 데이터에 대한 요청을 받으면 파일이 지원되는 형식의 멤버인 경우 이를 제공합니다. 그렇지 않으면 S_FALSE 반환하여 요청을 무시합니다.
열 처리기 등록
열 처리기는 다음 하위 키 아래에 등록됩니다.
HKEY_CLASSES_ROOT
Folder
shellex
ColumnHandlers
ColumnHandlers의 하위 키를 만들고, 이 하위 키는 처리기의 클래스 식별자(CLSID) GUID의 문자열 형태로 명명됩니다. 셸 확장 처리기를 등록하는 방법에 대한 일반적인 내용은 셸 확장 처리기 만들기를 참조하세요. 다음 예제에서는 열 처리기를 등록하는 방법을 보여 줍니다.
HKEY_CLASSES_ROOT
Folder
shellex
ColumnHandlers
{My Column Handler CLSID GUID}
열 처리기 구현
모든 셸 확장 처리기와 마찬가지로 열 처리기는 DLL로 구현되는 COM(In-process Component Object Model) 개체입니다. IUnknown 외에도, IColumnProvider 인터페이스와인터페이스를 내보냅니다.
Windows 탐색기는 IColumnProvider 내보낸 세 가지 메서드를 호출하여 열을 표시하는 데 필요한 정보를 요청합니다. Windows 탐색기에서 사용하는 절차는 다음과 같습니다.
- IColumnProvider::Initialize 호출하여 표시할 폴더를 지정합니다.
- IColumnProvider::GetColumnInfo 호출하여 열의 식별자와 특성을 검색합니다.
- 사용자가 열을 선택한 경우 폴더의 각 파일에 대해 IColumnProvider::GetItemData 호출하여 파일의 열 항목에 속한 데이터를 검색합니다.
Initialize 메서드
Windows 탐색기는 IColumnProvider::Initialize 호출하여 열 처리기를 초기화합니다. 메서드에는 세 개의 매개 변수가 있지만 현재 wszFolder 만 사용됩니다. 세부 정보 보기가 표시될 폴더로 설정됩니다. 나중에 사용할 폴더 이름을 저장하고 필요에 따라 처리기 개체를 초기화합니다.
GetColumnInfo 메서드
Windows 탐색기는 다음으로 IColumnProvider::GetColumnInfo 호출하여 열의 식별자 및 특성을 요청합니다. dwIndex 매개 변수의 열에 대한 인덱스를 전달합니다. 이 인덱스는 열을 열거하는 데 사용되는 임의의 값입니다. 또한 Windows 탐색기는 SHCOLUMNINFO 구조체에 대한 포인터를 전달합니다. 이 구조는 열의 식별자와 특성을 반환하기 위해 사용됩니다. IColumnProvider::GetColumnInfo 구조체의 멤버에 적절한 값을 할당하고 반환해야 합니다.
열은 FMTID(OLE 속성 집합 ID) 및 PID(연결된 속성 ID)로 식별됩니다. SHCOLUMNINFO 구조체의 첫 번째 멤버인 scid열을 식별하는 데 사용되는 SHCOLUMNID 구조체에 대한 포인터입니다. fmtid 멤버는 열의 FMTID를 보유하고 pid 멤버는 열의 PID를 보유합니다. 예를 들어 열을 식별하는 데 일반적으로 사용되는 표준 FMTID/PID 쌍은 요약 정보 속성 집합의 Author PID입니다.
가능하면 처리기는 기존 FMTID 및 PID를 사용하여 지원하는 열을 식별해야 합니다. 사용자 지정 SHCOLUMNID 구조를 사용하는 경우 열은 처리기에서 지원하는 파일에 대한 데이터만 표시합니다. 폴더에 다른 파일이 포함되어 있으면 해당 항목은 비어 있습니다. 폴더에 둘 이상의 파일 형식의 파일이 포함된 경우 표준 FMTID/PID 값을 사용하면 다른 형식의 데이터를 동일한 열로 병합할 수 있습니다.
vt 멤버를 열에 표시할 데이터의 VARIANT 형식으로 설정합니다. 가장 일반적으로 사용되는 형식은 VT_LPSTR, 대부분의 열은 데이터를 문자열로 표시합니다. SHCOLUMNINFO 구조체의 나머지 멤버는 열의 특성을 정의하는 데 사용됩니다. 값을 적절하게 할당합니다.
GetItemData 메서드
열 처리기의 열을 선택한 경우 Windows 탐색기는 표시할 폴더의 각 파일에 대해 IColumnProvider::GetItemData 호출합니다. pscid 매개 변수는 열을 식별하는 SHCOLUMNID 구조체에 대한 포인터입니다. pscd 매개 변수는 특정 파일을 식별하는 SHCOLUMNDATA 구조를 가리킵니다.
pvarData 매개 변수는 pscd지정된 파일의 처리기 열에 표시되어야 하는 데이터를 반환합니다. 해당 파일이 열 처리기에서 지원되는 경우 pvarData 해당 데이터 값을 할당하고 S_OK 반환합니다. 파일이 열 처리기에서 지원되지 않는 경우 pvarData값을 할당하지 않고 S_FALSE 반환합니다.
많은 폴더에는 특정 열 처리기에서 지원되지 않는 여러 파일이 포함됩니다. 효율성을 개선하기 위해 IColumnProvider::GetItemData 먼저 pscd가리키는 구조체의 pwszExt 멤버를 확인해야 합니다. 이 멤버는 파일 이름 확장명을 보유합니다. 확장에서 파일이 처리기에서 지원하는 파일 형식의 멤버가 아님을 나타내는 경우 S_FALSE 즉시 반환하여 불필요한 처리를 방지합니다.