다음을 통해 공유


복사 후크 처리기를 만드는 방법

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

지침

1단계: 복사 후크 처리기 구현

모든 셸 확장 처리기와 마찬가지로 복사 후크 처리기는 DLL로 구현된 COM(In Process Component Object Model) 개체입니다. IUnknown: ICopyHook 외에 하나의 인터페이스를 내보냅니다. 셸은 처리기를 직접 초기화하므로 IShellExtInit와 같은 초기화 인터페이스가 필요하지 않습니다.

ICopyHook 인터페이스에는 단일 메서드 ICopyHook::CopyCallback이 있습니다. 폴더를 이동하려고 하면 Shell에서 이 메서드를 호출합니다. 다음을 비롯한 다양한 정보를 전달합니다.

  • 폴더의 이름입니다.
  • 폴더의 대상 또는 새 이름입니다.
  • 시도 중인 작업입니다.
  • 원본 및 대상 폴더의 특성입니다.
  • 사용자 인터페이스를 표시하는 데 사용할 수 있는 창 핸들입니다.

처리기의 ICopyHook::CopyCallback 메서드가 호출되면 다음 세 가지 값 중 하나를 반환하여 셸에 진행 방법을 나타냅니다.

Description
IDYES 작업을 허용합니다.
IDNO 이 폴더에 대한 작업을 방지합니다. 셸은 일괄 복사 작업과 같이 승인된 다른 작업을 계속할 수 있습니다.
IDCANCEL 현재 작업을 방지하고 보류 중인 작업을 취소합니다.

 

2단계: 복사 후크 처리기 등록

폴더에 대한 복사 후크 처리기는 HKEY_CLASSES_ROOT\디렉터리\셸ex\CopyHookHandlers 하위 키 아래에 등록됩니다. 처리기의 이름이 CopyHookHandlers 인 하위 키를 만들고 하위 키의 기본값을 CLSID(처리기 클래스 식별자) GUID의 문자열 형식으로 설정합니다.

다음 예제에서는 MyCopyHandler 하위 키를 셸의 복사 후크 처리기 목록에 추가합니다.

HKEY_CLASSES_ROOT
   Directory
      shellex
         CopyHookHandlers
            MyCopyHandler
               (Default) = {MyCopyHandler CLSID GUID}

프린터 개체에 대한 복사 후크 처리기는 기본적으로 동일한 방식으로 등록됩니다. 유일한 차이점은 HKEY_CLASSES_ROOT\프린터 하위 키 아래에 등록해야 한다는 것입니다.

설명

일반적으로 사용자와 애플리케이션은 몇 가지 제한 사항으로 폴더를 복사, 이동, 삭제 또는 이름을 바꿀 수 있습니다. 복사 후크 처리기를 구현하여 이러한 작업이 수행되는지 여부를 제어할 수 있습니다. instance 경우 이러한 처리기를 구현하면 중요한 폴더의 이름이 변경되거나 삭제되지 않도록 방지할 수 있습니다. 프린터 개체에 대해 복사 후크 처리기를 구현할 수도 있습니다.

복사 후크 처리기는 전역입니다. 셸은 애플리케이션 또는 사용자가 폴더 또는 프린터 개체를 복사, 이동, 삭제 또는 이름을 바꾸려고 할 때마다 등록된 모든 처리기를 호출합니다. 처리기는 작업 자체를 수행하지 않습니다. 그것은 단지 그것을 승인하거나 거부합니다. 모든 처리기가 승인하는 경우 셸은 작업을 수행합니다. 처리기가 작업을 거부하면 취소되고 나머지 처리기가 호출되지 않습니다. 복사 후크 처리기는 작업의 성공 또는 실패에 대해 알리지 않으므로 파일 작업을 모니터링하는 데 사용할 수 없습니다.

셸 확장 처리기 만들기

ICopyHook