果洛皆料电子有限公司

VC.NET擴(kuò)展Windows磁盤(pán)清理工具的功能

  • 發(fā)布于:2020-02-13
  • 263 人圍觀
Windows磁盤(pán)清理工具二次開(kāi)發(fā)的擴(kuò)展接口,對(duì)其COM接口加以分解,并運(yùn)用ATL庫(kù)具體實(shí)現(xiàn)了清理“*.tmp”臨時(shí)文件的功能。

關(guān)鍵詞 磁盤(pán)清理工具、ATL庫(kù)、COM接口。

引言

Windows磁盤(pán)清理工具(Disk CleanUp)是一個(gè)實(shí)用快捷并擁有簡(jiǎn)單易用界面的系統(tǒng)清理軟件,更值得系統(tǒng)開(kāi)發(fā)管理人員注意的是,此系統(tǒng)清理軟件是建立在以COM技術(shù)為基礎(chǔ)發(fā)展的,支持第三方插件,并且可以根據(jù)需要自制定義功能二次開(kāi)發(fā)的平臺(tái)。在這里,我們對(duì)于Windows磁盤(pán)清理工具的開(kāi)發(fā)接口做深入地研究,在此基礎(chǔ)上舉例示范添加一個(gè)查找“*.tmp”臨時(shí)文件的功能。

技術(shù)討論

微軟的COM技術(shù)廣泛地運(yùn)用在Windows的模塊化設(shè)計(jì)中,致使支持二次開(kāi)發(fā)。關(guān)于COM技術(shù)基礎(chǔ)與應(yīng)用,可參考。在此,我們只為Windows磁盤(pán)清理工具,簡(jiǎn)稱清理工具的擴(kuò)展接口加以分解。清理工具首次出現(xiàn)在Windows 98操作系統(tǒng)中,并在后來(lái)推出的Windows版本中予以改進(jìn),添加了新的功能。比如說(shuō),在NTFS的文件系統(tǒng)下,自動(dòng)壓縮不經(jīng)常訪問(wèn)的文件。這些新功能通過(guò)COM模塊實(shí)現(xiàn),在清理工具中作為插件調(diào)用。早期的版本是通過(guò)IEmptyVolumeCache接口調(diào)用,在Windows 2000以后的版本中,還加入了IEmptyVolumeCache2接口,加入了較小的更新。

IEmptyVolumeCache接口由五個(gè)函數(shù)組成,根據(jù)呼叫的順序,分別是:

以下為引用的內(nèi)容:

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;

清理工具在正常執(zhí)行時(shí),首先調(diào)用Initialize初始化插件,隨后執(zhí)行GetSpaceUsed來(lái)掃描可清除的文件大小。掃描完畢后,清理工具的主界面就出現(xiàn)了如圖1所示,在此,我們加入了清理TMP文件的功能可以瀏覽不同的清理文件種類。列表中的每一個(gè)文件種類均由一個(gè)COM插件實(shí)現(xiàn)。除了閱覽可清理文件大小以外,用戶在可以點(diǎn)擊一個(gè)可自定義的按鈕,調(diào)用插件的ShowProperties功能,以顯示更詳細(xì)的資料。如用戶選擇OK,清理工具就調(diào)用Purge函數(shù),清理掃描出來(lái)的文件。最后,Deactivate函數(shù)被調(diào)用,終止插件的應(yīng)用。

萬(wàn)企互聯(lián)
標(biāo)簽: