드롭 처리기를 만드는 방법

기본적으로 파일은 대상 삭제가 아닙니다. 드롭 처리기를 구현하고 등록하여 파일 형식의 멤버를 놓기 대상으로 만들 수 있습니다.

파일 형식에 대해 드롭 처리기가 등록된 경우 개체를 파일 형식의 멤버 위로 끌거나 놓을 때마다 호출됩니다. Shell은 처리기의 IDropTarget 인터페이스에서 적절한 메서드를 호출하여 작업을 관리합니다.

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

지침

1단계: 드롭 처리기 구현

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

셸은 IPersistFile 인터페이스를 통해 처리기를 초기화합니다. 이 인터페이스를 사용하여 처리기의 CLSID(클래스 식별자)를 요청하고 파일 이름을 제공합니다. IPersistFile 인터페이스를 포함하여 셸 확장 처리기를 구현하는 방법에 대한 일반적인 설명은 셸 확장 처리기 만들기를 참조하세요.

드롭 처리기가 초기화되면 Shell은 처리기의 IDropTarget 인터페이스에서 적절한 메서드를 호출합니다.

2단계: 삭제 처리기 등록

드롭 처리기는 이 파일 형식의 하위 키 아래에 등록됩니다.

HKEY_CLASSES_ROOT
   ProgID
      shellex
         DropHandler

처리기에 대해 명명된 DropHandler 의 하위 키를 만들고 하위 키의 기본값을 처리기의 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
         DropHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

셸 확장 처리기 만들기

Idroptarget

IPersistFile