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