如何创建数据处理程序
将文件复制到剪贴板或拖放时,Shell 会创建支持各种标准 剪贴板格式的数据对象。 对于特定文件类型的文件,可以通过实现和注册 数据处理程序来扩展可用的剪贴板格式。 传输文件类型时,如果使用其中一种自定义格式,Shell 会将对数据对象的 IDataObject 接口的调用委托给数据处理程序。
创建 Shell 扩展处理程序中讨论了实现和注册 Shell 扩展处理程序的一般过程。 本文档重点介绍特定于数据处理程序的实现的那些方面。
Instructions
步骤 1:实现数据处理程序
与所有 Shell 扩展处理程序一样,数据处理程序是作为 DLL 实现 (COM) 对象实现的进程内组件对象模型。 除了 IUnknown 之外,它们还导出两个接口: IPersistFile 和 IDataObject。
Shell 通过其 IPersistFile 接口初始化处理程序。 它使用此接口 (CLSID) 请求处理程序的类标识符,并为其提供文件的名称。 有关如何实现 Shell 扩展处理程序(包括 IPersistFile 接口)的一般讨论,请参阅 创建 Shell 扩展处理程序。
初始化数据处理程序后,如果使用其中一种自定义格式,则 Shell 会委托从数据对象调用处理程序的 IDataObject 接口。
步骤 2:注册数据处理程序
数据处理程序在文件类型的 ProgID 子项下注册,如下所示: HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler
为 DataHandler 下的处理程序创建名为 的子项,并将该处理程序的子项的默认值设置为处理程序的 CLSID GUID 的字符串形式。 有关如何注册 Shell 扩展处理程序的一般讨论,请参阅 创建 Shell 扩展处理程序。
以下示例演示了为示例 .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}
相关主题