데이터 처리기를 만드는 방법

파일이 클립보드에 복사되거나 끌어서 놓으면 Shell은 다양한 표준 클립보드 형식을 지원하는 데이터 개체를 만듭니다. 특정 파일 형식의 파일의 경우 데이터 처리기를 구현하고 등록하여 사용 가능한 클립보드 형식을 확장할 수 있습니다. 파일 형식의 파일이 전송되면 셸은 사용자 지정 형식 중 하나가 사용되는 경우 데이터 개체의 IDataObject 인터페이스에 대한 호출을 데이터 처리기에 위임합니다.

셸 확장 처리기를 구현하고 등록하는 일반적인 절차는 셸 확장 처리기 만들기에서 설명합니다. 이 문서에서는 데이터 처리기와 관련된 구현의 이러한 측면에 중점을 둡니다.

지침

1단계: 데이터 처리기 구현

모든 Shell 확장 처리기와 마찬가지로 데이터 처리기는 DLL로 구현된 COM(In-process Component Object Model) 개체입니다. IUnknown 외에도 IPersistFileIDataObject라는 두 개의 인터페이스를 내보냅니다.

셸은 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}

셸 확장 처리기 만들기

IPersistFile

Idataobject