使用 Shell 扩展

可以使用注册表项和.ini文件扩展 Shell 的功能。 虽然这种扩展 Shell 的方法很简单,并且足以满足许多目的,但这种方法是有限的。 例如,如果使用注册表为某个文件类型指定自定义图标,则对于该类型的每个文件,都将显示相同的图标。 使用注册表扩展 Shell 不允许更改文件类型的不同成员的图标。 Shell 的其他方面(如右键单击文件时可以显示的 “属性”属性 表)根本无法通过注册表进行修改。

扩展 Shell 的一种更强大、更灵活的方法是实现 shell 扩展处理程序。 这些处理程序可以针对 Shell 可以执行的各种操作实现。 在执行操作之前,Shell 会查询扩展处理程序,使其有机会修改操作。 一个常见示例是快捷菜单扩展处理程序。 如果为某个文件类型实现了一个,则每次右键单击其中一个文件时,都会对其进行查询。 然后,处理程序可以逐个文件指定其他菜单项,而不是为该文件类型的所有文件设置相同的菜单项。

这组主题讨论如何实现扩展处理程序,以便修改各种 Shell 操作。 以下处理程序与特定文件类型相关联,并允许逐个文件进行指定。

Handler 说明
快捷菜单处理程序 在显示文件的快捷菜单之前调用。 它使你能够逐个文件将项添加到快捷菜单。
数据处理程序 在对 Shell 对象执行拖放操作时调用。 它使你能够向放置目标提供其他剪贴板格式。
删除处理程序 在文件上拖动或丢弃数据对象时调用。 它使你能够将文件创建到放置目标中。
图标处理程序 在显示文件图标之前调用。 它使你能够逐个将文件的默认图标替换为自定义图标。
属性表处理程序 在显示对象的 Properties 属性表之前调用。 它使你能够添加或替换页面。
缩略图图像处理程序 提供表示项的图像。
Infotip 处理程序 当用户将鼠标指针悬停在 对象上时提供弹出文本。
元数据处理程序 提供对存储在文件中的元数据 (属性) 读取和写入访问权限。 这可用于扩展“详细信息”视图、信息提示、属性页和分组功能。

 

其他操作不与特定文件类型关联,但在一些 Shell 操作之前调用。

Handler 说明
栏处理程序 在显示文件夹的“详细信息”视图之前,由 Windows 资源管理器调用。 它使你能够将自定义列添加到“详细信息”视图。
复制挂钩处理程序 当文件夹或打印机对象即将移动、复制、删除或重命名时调用。 它使你能够批准或否决操作。
拖放处理程序 使用鼠标右键拖动文件时调用。 它使你能够修改显示的快捷菜单。
图标覆盖处理程序 在显示文件图标之前调用。 它使你可以为文件的图标指定覆盖层。
搜索处理程序 调用 以启动搜索引擎。 它使你能够实现可从 “开始” 菜单或 Windows 资源管理器访问的自定义搜索引擎。

 

上面列出的部分介绍了如何实现特定扩展处理程序的详细信息。 有关所有 Shell 扩展处理程序通用的实现问题的讨论,请参阅以下主题: