VC.NET扩展Windows磁盘清理工具的功能
关键词 磁盘清理工具、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 |
转载于:https://www.cnblogs.com/netweb/archive/2008/11/05/1327225.html
VC.NET扩展Windows磁盘清理工具的功能相关推荐
- windows清理_推荐一款Windows磁盘清理工具
你是不是也有这样的疑惑,为何我电脑清除垃圾文件,却还是有些文件删不掉,而且是大文件那种,又不知道它放在哪里.想去找,只能一个一个文件夹去打开,用文件搜索,搜索半天,却找不出来,甚至会卡机. 怎么办?莫 ...
- Windows Server 2008 没有磁盘清理工具的情况下使用系统提供的磁盘清理工具
服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,清理C盘的方法有很多,分享一下如何在Windows Server 2008 没有磁盘清理工具的情况下使用系统提供的磁盘清理工 ...
- 服务器系统盘清理工具,Windows添加磁盘清理工具的方法
Windows Server 2008 R2中并没有预装自带的磁盘清理工具,需要手动配置一下才能使用磁盘清理工具,很多时候系统更新之后会产生很多垃圾文件,使用第三方软件清理又不放心,因此这里分享一下如 ...
- windows server 2008 r2如何找到自带的磁盘清理工具
服务器不知道什么原因,一直在变大,直到没有空间,准备通过系统自带的磁盘清理工具清理一下的时候发现找不到,在网上找到了这个文章,亲测有效,需要的可以试试 该文章以下内容转载自:如何在Windows Se ...
- windows服务器清临时文件,自动执行磁盘清理工具 - Windows Server | Microsoft Docs
自动执行磁盘清理工具Windows 09/08/2020 本文内容 本文介绍如何使用命令行开关 (cleanmgr.exe) 磁盘清理工具. cleanmgr.exe 用于清除计算机硬盘中不必要的文件 ...
- 如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具...
2019独角兽企业重金招聘Python工程师标准>>> 今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只 ...
- Win11 没有磁盘清理工具,如何清理磁盘旧的windows.old文件
win11 磁盘右键没有了"磁盘清理工具" 如果想清理文件,可以打开设置(Win+I)系统-存储-清理建议 您也可以打开"存储感知",系统会在需要时帮你自动清理 ...
- CMD快捷指令之打开磁盘清理工具
CMD快捷指令在Windows用户时提高了很大的效率,只是其中的一个用法之一. 1.按按键win+R(个人用的是英文系统哟(^U^)ノ~YO) 2.在输入框中输入cmd. 然后确定. 3. 在C:\U ...
- Windows磁盘管理工具Diskpart之二 管理动态磁盘
Windows磁盘管理工具Diskpart之二 管理动态磁盘 2010-10-25 环境: Window server 2003 SP2英文版 Vmware 7.1.1 目的: 熟悉对动态 ...
最新文章
- 零基础怎么学习UI设计?有哪些简单的学习方法?
- 掌握shell应用,Linux任你行走
- 010_Redis的发布和订阅
- phpMyAdmin下载、安装和使用入门
- 翻译:SQL Server中的索引内部结构:到SQL Server索引级别10的阶梯。
- NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]
- 多相机坐标转换_使用KITTI数据集实现坐标转换
- 聊聊redo log是什么?
- angular发布代码有缓存_[译文]RxJS缓存进阶
- element 怎么把数据写到日历表上_当mongo数据量过亿时该如何删除重复的数据
- 你想要的宏基因组-微生物组知识全在这(2022.2)
- 南京邮电大学高级语言程序设计实验二(选择与循环结构编程)
- 腾讯云如何搭建PHP环境?
- 应届生如何快速提高职业竞争力
- 微软牵手大疆打造先进无人机技术
- LMS学习管理系统综述
- onvif 客服端鉴权
- web 页面的提交方式
- 使用webgl(three.js)搭建一个3D建筑,3D消防模拟——第三课
- 男人:从未了解的十五件事