介绍了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

转载于:https://www.cnblogs.com/netweb/archive/2008/11/05/1327225.html

VC.NET扩展Windows磁盘清理工具的功能相关推荐

  1. windows清理_推荐一款Windows磁盘清理工具

    你是不是也有这样的疑惑,为何我电脑清除垃圾文件,却还是有些文件删不掉,而且是大文件那种,又不知道它放在哪里.想去找,只能一个一个文件夹去打开,用文件搜索,搜索半天,却找不出来,甚至会卡机. 怎么办?莫 ...

  2. Windows Server 2008 没有磁盘清理工具的情况下使用系统提供的磁盘清理工具

    服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,清理C盘的方法有很多,分享一下如何在Windows Server 2008 没有磁盘清理工具的情况下使用系统提供的磁盘清理工 ...

  3. 服务器系统盘清理工具,Windows添加磁盘清理工具的方法

    Windows Server 2008 R2中并没有预装自带的磁盘清理工具,需要手动配置一下才能使用磁盘清理工具,很多时候系统更新之后会产生很多垃圾文件,使用第三方软件清理又不放心,因此这里分享一下如 ...

  4. windows server 2008 r2如何找到自带的磁盘清理工具

    服务器不知道什么原因,一直在变大,直到没有空间,准备通过系统自带的磁盘清理工具清理一下的时候发现找不到,在网上找到了这个文章,亲测有效,需要的可以试试 该文章以下内容转载自:如何在Windows Se ...

  5. windows服务器清临时文件,自动执行磁盘清理工具 - Windows Server | Microsoft Docs

    自动执行磁盘清理工具Windows 09/08/2020 本文内容 本文介绍如何使用命令行开关 (cleanmgr.exe) 磁盘清理工具. cleanmgr.exe 用于清除计算机硬盘中不必要的文件 ...

  6. 如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具...

    2019独角兽企业重金招聘Python工程师标准>>> 今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只 ...

  7. Win11 没有磁盘清理工具,如何清理磁盘旧的windows.old文件

    win11 磁盘右键没有了"磁盘清理工具" 如果想清理文件,可以打开设置(Win+I)系统-存储-清理建议 您也可以打开"存储感知",系统会在需要时帮你自动清理 ...

  8. CMD快捷指令之打开磁盘清理工具

    CMD快捷指令在Windows用户时提高了很大的效率,只是其中的一个用法之一. 1.按按键win+R(个人用的是英文系统哟(^U^)ノ~YO) 2.在输入框中输入cmd. 然后确定. 3. 在C:\U ...

  9. Windows磁盘管理工具Diskpart之二 管理动态磁盘

    Windows磁盘管理工具Diskpart之二 管理动态磁盘 2010-10-25 环境:   Window server 2003 SP2英文版   Vmware 7.1.1 目的:   熟悉对动态 ...

最新文章

  1. 零基础怎么学习UI设计?有哪些简单的学习方法?
  2. 掌握shell应用,Linux任你行走
  3. 010_Redis的发布和订阅
  4. phpMyAdmin下载、安装和使用入门
  5. 翻译:SQL Server中的索引内部结构:到SQL Server索引级别10的阶梯。
  6. NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]
  7. 多相机坐标转换_使用KITTI数据集实现坐标转换
  8. 聊聊redo log是什么?
  9. angular发布代码有缓存_[译文]RxJS缓存进阶
  10. element 怎么把数据写到日历表上_当mongo数据量过亿时该如何删除重复的数据
  11. 你想要的宏基因组-微生物组知识全在这(2022.2)
  12. 南京邮电大学高级语言程序设计实验二(选择与循环结构编程)
  13. 腾讯云如何搭建PHP环境?
  14. 应届生如何快速提高职业竞争力
  15. 微软牵手大疆打造先进无人机技术
  16. LMS学习管理系统综述
  17. onvif 客服端鉴权
  18. web 页面的提交方式
  19. 使用webgl(three.js)搭建一个3D建筑,3D消防模拟——第三课
  20. 男人:从未了解的十五件事

热门文章

  1. springDatasolr 排序
  2. jquery调用click事件的三种方式
  3. Linux系统编程@文件操作(一)
  4. Silverlight4实现三维企业网站
  5. 谈谈设计不足(under-engineering)与过度设计(over-engineering)
  6. Android面试题目之(13) ListView的设计原理
  7. Android 实现歌词变红效果
  8. android 文件下载 超简单
  9. C++常用数据结构入门
  10. Android 10.0系统启动之init进程-[Android取经之路]