Создание обработчиков удаления

По умолчанию файлы не являются целевыми объектами удаления. Члены типа файла можно сделать целевыми объектами перетаскивания, реализовав и зарегистрировав обработчик перетаскивания.

Если обработчик перетаскивания зарегистрирован для типа файла, он вызывается всякий раз, когда объект перетаскивается или удаляется на член этого типа файла. Оболочка управляет операцией, вызывая соответствующие методы в интерфейсе IDropTarget обработчика.

Общие процедуры реализации и регистрации обработчика расширений оболочки рассматриваются в разделе Создание обработчиков расширений оболочки. В этом документе рассматриваются те аспекты реализации, которые относятся к обработчикам удаления.

Инструкции

Шаг 1. Реализация обработчиков удаления

Как и все обработчики расширений оболочки, обработчики перетаскивания являются внутрипроцессными объектами модели COM, реализованными в виде библиотек DLL. В дополнение к IUnknown они экспортируют два интерфейса: IPersistFile и IDropTarget.

Оболочка инициализирует обработчик с помощью интерфейса IPersistFile . Он использует этот интерфейс для запроса идентификатора класса обработчика (CLSID) и предоставляет ему имя файла. Общие сведения о реализации обработчиков расширений оболочки, включая интерфейс IPersistFile , см. в разделе Создание обработчиков расширений оболочки.

После инициализации обработчика перетаскивания оболочка вызывает соответствующий метод в интерфейсе IDropTarget обработчика.

Шаг 2. Регистрация обработчиков удаления

Обработчики перетаскивания регистрируются в подразделе этого типа файла.

HKEY_CLASSES_ROOT
   ProgID
      shellex
         DropHandler

Создайте подраздел DropHandler с именем для обработчика и задайте для этого подраздела значение по умолчанию в строковой форме идентификатора GUID CLSID обработчика. Общие сведения о регистрации обработчиков расширений оболочки см. в разделе Создание обработчиков расширений оболочки.

В следующем примере показаны записи реестра, которые позволяют использовать обработчик перетаскивания для примера типа файла .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