| Windows 2000 UI 新特点之四:其他类型的外壳扩展 原文参见:MSDN Magazine March 2000 第一部分 Windows 2000 UI 新特点之一:信息条提示(Infotip) 下载源代码 摘要:本文是关于Windows 2000 UI 新特点系列文章的第四篇,探讨几个其它的外壳扩展类型,如外壳执行、图标覆盖、磁盘清理管理程序、使用属性页的文件夹定制、以及上下文菜单。 Windows 2000 还有三个新的外壳扩展:外壳执行管理器(shell execution handler)、图标覆盖管理器(icon overlay handler)和清理管理器(cleanup handler)。 所谓“外壳执行”,是提供 IShellExecuteHook 接口的一个模块,这个接口导致自己的代码在某个命令行被外壳经由资源管理器或"运行"对话框处理之前被调用。IShellExecuteHook 接口与WH_SHELL没有什么关系,因为您的代码的执行先于目标程序的启动,而且都是在外壳的地址空间内工作。 Windows 2000是第一个全面支持图标覆盖的Windows 版本。有关的接口有两个:IShellIconOverlay 和 IShellIconOverlayIdentifier。前者是为显示覆盖的名字空间扩展保留的。后者是允许您定义自制图像用于文件夹图标覆盖的主要接口。 图标覆盖是某种条件下外壳自动在图标左下角绘制的代表文件夹项目的一个小图像。典型的例子是快捷方式图标坐下角的小箭头,以及共享文件夹图标左下角的小手图标。这些用户看到的图标是结合在一起的两个重叠图标。这种机制在Windows 2000中被开放,已不是什么秘密。 当绘制一个文件夹图标时,资源管理器试图从代表特定文件夹类型的名字空间获得一个IShellIconOverlay指针。如果这个接口存在,名字空间便有机会使用定制的项目。Windows 2000 的平台SDK文档中没有关于IShellIconOverlay 和IShellIconOverlayIdentifier接口的信息,但这两个接口实际上自从Windows 9x 和Windows NT 4.0的桌面更新引入一来就已经存在了。如果您在Windows 9x 和Windows NT 4.0 或更早的 OS 版本上编写代码,请参考 Q192055 文档包含的一些有用的技巧。 Windows 98发布之初,微软制作了一个叫"磁盘清理(Disk Cleanup)"的实用程序挂在操作系统中(参见图十)。这个工具的目的是通过删除、压缩或备份无用的文件来释放磁盘空间。为此,"磁盘清理"的实用程序清除几个标准的文件夹中的内容,如:垃圾箱、下载的程序文件、临时的Internet 文件。 图十 磁盘清理程序 通过写一个磁盘清理扩展,可以将新的入口增加到图十显示的对话框中以便管理特定的自制应用程序文件集。"磁盘清理"有一个模块化的结构并由一些系统级的处理器构成,您可以编写并注册自己的清理扩展。每一个扩展实现几个COM接口来与"磁盘清理"管理器通讯。 Cleanup Extension// IEmptyVolumeCache2Impl.h#include <AtlCom.h>#include <emptyvc.h>class ATL_NO_VTABLE IEmptyVolumeCache2Impl : public IEmptyVolumeCache2{public: // IUnknown STDMETHOD(QueryInterface)(REFIID riid, void** ppvObject) = 0; _ATL_DEBUG_ADDREF_RELEASE_IMPL(IEmptyVolumeCache2Impl) // IEmptyVolumeCache::Initialize STDMETHOD(Initialize)(HKEY hkRegKey, LPCWSTR pcwszVolume,
|
0
顶一下

摘要:本文是关于Windows 2000 UI 新特点系列文章的第四篇,探讨几个其它的外壳扩展类型,如外壳执行、图标覆盖、磁盘清理管理程序、使用属性页的文件夹定制、以及上下文菜单。
发表评论
告诉好友