파일이 클립보드에 복사되거나 끌어서 놓으면 Shell은 다양한 표준 클립보드 형식을 지원하는 데이터 개체를 만듭니다. 특정 파일 형식의 파일의 경우 데이터 처리기를 구현하고 등록하여 사용 가능한 클립보드 형식을 확장할 수 있습니다. 파일 형식의 파일이 전송되면 셸은 사용자 지정 형식 중 하나가 사용되는 경우 데이터 개체의 IDataObject 인터페이스에 대한 호출을 데이터 처리기에 위임합니다.
셸 확장 처리기를 구현하고 등록하는 일반적인 절차는 셸 확장 처리기 만들기에서 설명합니다. 이 문서에서는 데이터 처리기와 관련된 구현의 이러한 측면에 중점을 둡니다.
지침
1단계: 데이터 처리기 구현
모든 Shell 확장 처리기와 마찬가지로 데이터 처리기는 DLL로 구현된 COM(In-process Component Object Model) 개체입니다. IUnknown 외에도 IPersistFile 및 IDataObject라는 두 개의 인터페이스를 내보냅니다.
셸은 IPersistFile 인터페이스를 통해 처리기를 초기화합니다. 이 인터페이스를 사용하여 처리기의 CLSID(클래스 식별자)를 요청하고 파일 이름을 제공합니다. IPersistFile 인터페이스를 포함하여 셸 확장 처리기를 구현하는 방법에 대한 일반적인 설명은 셸 확장 처리기 만들기를 참조하세요.
데이터 처리기가 초기화되면 셸은 사용자 지정 형식 중 하나가 사용되는 경우 데이터 개체에서 처리기의 IDataObject 인터페이스로 호출을 위임합니다.
2단계: 데이터 처리기 등록
데이터 처리기는 다음과 같이 파일 형식의 ProgID 하위 키 아래에 등록됩니다. HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler
DataHandler에서 처리기에 대한 라는 하위 키를 만들고 해당 처리기 하위 키의 기본값을 처리기의 CLSID GUID 문자열 형식으로 설정합니다. Shell 확장 처리기를 등록하는 방법에 대한 일반적인 내용은 셸 확장 처리기 만들기를 참조하세요.
다음 예제에서는 예제 .myp 파일 형식에 대한 데이터 처리기를 사용하도록 설정하는 레지스트리 항목을 보여 줍니다.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
CLSID
{00000000-1111-2222-3333-444444444444}
InProcServer32
(Default) = C:\MyDir\MyCommand.dll
ThreadingModel = Apartment
MyProgram.1
(Default) = MyProgram Application
Shellex
DataHandler
(Default) = {00000000-1111-2222-3333-444444444444}
관련 항목