如何创建放置处理程序
默认情况下,文件不是放置目标。 可以通过实现和注册放置处理程序,将 文件类型 的成员转换为 放置目标。
如果为某个文件类型注册了放置处理程序,则每当对象被拖过或拖放到文件类型的成员上时,将调用该处理程序。 Shell 通过在处理程序的 IDropTarget 接口上调用适当的方法来管理操作。
创建 Shell 扩展处理程序中讨论了实现和注册 Shell 扩展处理程序的一般过程。 本文档重点介绍特定于删除处理程序的实现的那些方面。
Instructions
步骤 1:实现放置处理程序
与所有 Shell 扩展处理程序一样,放置处理程序是作为 DLL 实现 (COM) 对象实现的进程内组件对象模型。 除了 IUnknown 之外,它们还导出两个接口: IPersistFile 和 IDropTarget。
Shell 通过其 IPersistFile 接口初始化处理程序。 它使用此接口 (CLSID) 请求处理程序的类标识符,并为其提供文件的名称。 有关如何实现 Shell 扩展处理程序(包括 IPersistFile 接口)的一般讨论,请参阅 创建 Shell 扩展处理程序。
初始化放置处理程序后,Shell 会在处理程序的 IDropTarget 接口上调用相应的方法。
步骤 2:注册放置处理程序
删除处理程序在此文件类型的子项下注册。
HKEY_CLASSES_ROOT
ProgID
shellex
DropHandler
为处理程序创建名为 的 DropHandler 子项,并将子项的默认值设置为处理程序 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
DropHandler
(Default) = {00000000-1111-2222-3333-444444444444}
相关主题