Создание обработчиков данных

Когда файл копируется в буфер обмена или перетаскивается, оболочка создает объект данных, поддерживающий различные стандартные форматы буфера обмена. Для файлов определенного типа можно расширить доступные форматы буфера обмена, реализовав и зарегистрировав обработчик данных. При передаче файла этого типа оболочка делегирует вызовы интерфейса IDataObject объекта данных обработчику данных, если используется один из настраиваемых форматов.

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

Инструкции

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

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

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

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

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

Обработчики данных регистрируются в подразделе ProgID типа файла, как показано ниже: HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler

Создайте подраздел с именем для обработчика в разделе DataHandler и задайте значение по умолчанию подраздела этого обработчика в строковой форме идентификатора 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
         DataHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

Создание обработчиков расширений оболочки

IPersistFile

Idataobject