Windows 2000 UI 新特点之四:其他类型的外壳扩展

毒草莓泡泡

毒草莓泡泡

2016-01-29 11:51

Windows 2000 UI 新特点之四:其他类型的外壳扩展,Windows 2000 UI 新特点之四:其他类型的外壳扩展

Windows 2000 UI 新特点之四:其他类型的外壳扩展

原文参见:MSDN Magazine March 2000


编译/赵湘宁

第一部分 Windows 2000 UI 新特点之一:信息条提示(Infotip)
第二部分 Windows 2000 UI 新特点之二:自定义文件夹栏目
第三部分 Windows 2000 UI 新特点之三:搜索管理器

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/) 摘要:本文是关于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接口来与"磁盘清理"管理器通讯。
     编写清理扩展必须要创建一个暴露IEmptyVolumeCache2接口的COM对象。Windows 98 和Windows 2000中的清理扩展有一些细微的差别。在Windows 98中必须提供IEmptyVolumeCache接口,而在Windows 2000中还必须提供IEmptyVolumeCache2接口。IEmptyVolumeCache2接口是IEmptyVolumeCache接口的超集并加入了InitializeEx方法。
    下面是本文提供的一个很基本的清理扩展实现:

Cleanup Extension// IEmptyVolumeCache2Impl.h#include <AtlCom.h#include <emptyvc.hclass 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,      
展开更多 50%)
分享

猜你喜欢

Windows 2000 UI 新特点之四:其他类型的外壳扩展

C语言教程 C语言函数
Windows 2000 UI 新特点之四:其他类型的外壳扩展

Windows 2000 UI 新特点之一:信息条提示(Infotip)

C语言教程 C语言函数
Windows 2000 UI 新特点之一:信息条提示(Infotip)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Windows 2000 UI 新特点之三:搜索管理器

C语言教程 C语言函数
Windows 2000 UI 新特点之三:搜索管理器

Windows 2000 UI 新特点之二:自定义文件夹栏目

C语言教程 C语言函数
Windows 2000 UI 新特点之二:自定义文件夹栏目

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

来说说准妈妈的新特点

电脑网络
来说说准妈妈的新特点

MySQL5新特点(视图)

编程语言 网络编程
MySQL5新特点(视图)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

PSV《真三国无双7 猛将传》秘武获得方法解析

PSV《真三国无双7 猛将传》秘武获得方法解析

HTML语言剖析(十四)特殊字符

HTML语言剖析(十四)特殊字符
下拉加载更多内容 ↓