当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > VC.NET扩展Windows磁盘清理工具的功能

ASP.NET
Asp.net利用JQuery弹出层加载数据代码
asp.net dataview做无限极分类的又一用法
asp.net ckeditor编辑器的使用方法
告别ADO.NET实现应用系统无缝切换的烦恼(总结篇)
asp.net 实现动态显示当前时间(不用javascript不考虑开销)
.net动态显示当前时间(客户端javascript)
asp.net 结合YUI 3.0小示例
asp.net 取消缓存相关问题说明
asp.net 计划任务管理程序实现,多线程任务加载
ASP.NET 跨页面传值方法
asp.net中url地址传送中文参数时的两种解决方案
Asp.net 菜单控件简洁版
asp.net jQuery Ajax用户登录功能的实现
asp.net SharpZipLib的压缩与解压问题
asp.net url重写后页面回传问题
asp.net与Discuz!NT整合集成实例教程
Discuz!NT 3与asp.net 整合的实例教程
测试控制台使用方法
.net 动态标题实现方法
asp.net *.ashx类型的文件使用说明

ASP.NET 中的 VC.NET扩展Windows磁盘清理工具的功能


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 111 ::
收藏到网摘: n/a

摘 要 介绍了Windows磁盘清理工具二次开发的扩展接口,对其COM接口加以分解,并运用ATL库具体实现了清理“*.tmp”临时文件的功能。

关键词 磁盘清理工具、ATL库、COM接口。

引言

Windows磁盘清理工具(Disk CleanUp)是一个实用快捷并拥有简单易用界面的系统清理软件,更值得系统开发管理人员注意的是,此系统清理软件是建立在以COM技术为基础发展的,支持第三方插件,并且可以根据需要自制定义功能二次开发的平台。在这里,我们对于Windows磁盘清理工具的开发接口做深入地研究,在此基础上举例示范添加一个查找“*.tmp”临时文件的功能。

技术讨论

微软的COM技术广泛地运用在Windows的模块化设计中,致使支持二次开发。关于COM技术基础与应用,可参考。在此,我们只为Windows磁盘清理工具,简称清理工具的扩展接口加以分解。清理工具首次出现在Windows 98操作系统中,并在后来推出的Windows版本中予以改进,添加了新的功能。比如说,在NTFS的文件系统下,自动压缩不经常访问的文件。这些新功能通过COM模块实现,在清理工具中作为插件调用。早期的版本是通过IEmptyVolumeCache接口调用,在Windows 2000以后的版本中,还加入了IEmptyVolumeCache2接口,加入了较小的更新。

IEmptyVolumeCache接口由五个函数组成,根据呼叫的顺序,分别是:

以下为引用的内容:

virtual /* [local] */ HRESULT STDMETHODCALLTYPE initialize( 
/* [in] */ HKEY hkRegKey,
/* [in] */ LPCWSTR pcwszVolume,
/* [out] */ LPWSTR *ppwszDisplayName,
/* [out] */ LPWSTR *ppwszDescription,
/* [out] */ DWORD *pdwFlags) = 0;

virtual HRESULT STDMETHODCALLTYPE getspaceused(
/* [out] */ DWORDLONG *pdwlSpaceUsed,
/* [in] */ IEmptyVolumeCacheCallBack *picb) = 0;

virtual HRESULT STDMETHODCALLTYPE showproperties(
/* [in] */ HWND hwnd) = 0;

virtual HRESULT STDMETHODCALLTYPE purge(
/* [in] */ DWORDLONG dwlSpaceToFree,
/* [in] */ IEmptyVolumeCacheCallBack *picb) = 0;

virtual HRESULT STDMETHODCALLTYPE deactivate(
/* [out] */ DWORD *pdwFlags) = 0;

清理工具在正常执行时,首先调用Initialize初始化插件,随后执行GetSpaceUsed来扫描可清除的文件大小。扫描完毕后,清理工具的主界面就出现了如图1所示,在此,我们加入了清理TMP文件的功能可以浏览不同的清理文件种类。列表中的每一个文件种类均由一个COM插件实现。除了阅览可清理文件大小以外,用户在可以点击一个可自定义的按钮,调用插件的ShowProperties功能,以显示更详细的资料。如用户选择OK,清理工具就调用Purge函数,清理扫描出来的文件。最后,Deactivate函数被调用,终止插件的应用。

运用于Windows 2000以后的清理工具的插件也应该支持IEmptyVolumeCache的接口。IEmptyVolumeCache只由一个函数组成:

以下为引用的内容:

virtual /* [local] */ HRESULT STDMETHODCALLTYPE initializeex( 

/* [in] */ HKEY hkRegKey,
/* [in] */ LPCWSTR pcwszVolume,
/* [in] */ LPCWSTR pcwszKeyName,
/* [out] */ LPWSTR *ppwszDisplayName,
/* [out] */ LPWSTR *ppwszDescription,
/* [out] */ LPWSTR *ppwszBtnText,
/* [out] */ DWORD *pdwFlags) = 0;

InitializeEx增加了更严格的本地化语言要求,加强了国际化的支持,并且允许自定义按钮的显示文字。pdwFlags变量用于在工具与插件间传递信息,支持下列旗标:

以下为引用的内容:

EVCF_OUTOFDISKSPACE
EVCF_SETTINGSMODE
EVCF_DONTSHOWIFZERO
EVCF_ENABLEBYDEFAULT
EVCF_ENABLEBYDEFAULT_AUTO
EVCF_HASSETTINGS
EVCF_REMOVEFROMLIST