VC.NET扩展Windows磁盘清理工具的功能
2007-04-09 21:34:07 来源:WEB开发网核心提示: 图1 清理工具的主界面实现方法我们开发一个新的清理工具插件,扫描并清理*.TMP文件,VC.NET扩展Windows磁盘清理工具的功能(3),COM的编程有多种方法,我们选择了ATL库,检查错误返回值是不可少的,为了不同版本Windows兼容,关于ATL库的运用,我们在Visual Stu
图1 清理工具的主界面
实现方法
我们开发一个新的清理工具插件,扫描并清理*.TMP文件。COM的编程有多种方法,我们选择了ATL库。关于ATL库的运用。
我们在Visual Studio .Net 2003中生成新的ATL的DLL Server项目,并使用Add Class加入新的ATL Simple Object控件类CCleanSimpleHandler。在定义中,我们让CCleanSimpleHandler从IEmptyVolumeCache2继承。并且,我们添加了下列变量:
// 储存扫描出文件的大小
DWORDLONG m_dwlFileSize;
// 储存根目录
WCHAR m_strRootDir[MAX_PATH];
// 储存扫描出文件列表
std::vector<WCHAR *> m_lstFilesToDel;
然后,我们一一实现IEmptyVolumeCache及IEmptyVolumeCache2接口的函数。在下面的代码列表中,没有包括严格的检查错误返回值。这是为了简短代码的长度,提高可读性。在实际应用中,检查错误返回值是不可少的。为了不同版本Windows兼容,我们在InitializeEx中调用Initialize。
HRESULT CCleanSimpleHandler::InitializeEx (HKEY hKey, LPCWSTR pcwszVolume, LPCWSTR pcwszKeyName, LPWSTR *ppwszDisplayName, LPWSTR *ppwszDescription, LPWSTR *ppwszBtnText, DWORD *pdwFlags)
{
HRESULT hr = Initialize (hKey, pcwszVolume, ppwszDisplayName, ppwszDescription, pdwFlags);
*ppwszBtnText = (LPWSTR) CoTaskMemAlloc (64 * sizeof (WCHAR));
StrCpyW(*ppwszBtnText, L"View files");
return hr;
}
HRESULT CCleanSimpleHandler::Initialize (HKEY hKey, LPCWSTR pcwszVolume, LPWSTR *ppwszDisplayName, LPWSTR *ppwszDescription, DWORD *pdwFlags)
{
StrCpyW(m_strRootDir, pcwszVolume);
*ppwszDisplayName = (LPWSTR) CoTaskMemAlloc(256 * sizeof (WCHAR));
StrCpyW(*ppwszDisplayName, L"*.TMP files");
*ppwszDescription = (LPWSTR) CoTaskMemAlloc (256 * sizeof (WCHAR));
StrCpyW(*ppwszDescription, L"Temporary files - *.TMP");
*pdwFlags = EVCF_HASSETTINGS | EVCF_ENABLEBYDEFAULT;
m_dwlFileSize = 0;
return S_OK;
}
更多精彩
赞助商链接