Поделиться через


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

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

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

Инструкции

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

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

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

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

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

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

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

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