65.9K
CodeProject 正在变化。 阅读更多。
Home

清理处理程序

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2002年6月10日

CPOL

2分钟阅读

viewsIcon

85999

downloadIcon

1726

一个用于删除临时文件(例如 Visual C++ 中间文件)的 Shell 扩展。

Sample Image - cleanup.jpg

引言

Windows 引入了一个新概念,即允许用户向 Shell 添加新的处理程序,例如上下文菜单处理程序、图标处理程序以及其他应用程序的处理程序,例如清理管理器。

通常,所有处理程序都实现某个接口(一个或多个),并通过向注册表添加一些键来注册组件。

实现

此应用程序是一个简单的 COM 组件,它实现了 IEmptyVolumeCache2 接口及其 6 个方法。

//
//
Class CExtHandler : public IEmptyVolumeCache2 {
	
     //IUnknown interface 
    ...

    //IEmptyVolumeCache interface 
    STDMETHODIMP Initialize(
             HKEY hkRegKey,
             LPCWSTR pcwszVolume,
             LPWSTR *ppwszDisplayName,
             LPWSTR *ppwszDescription,
             DWORD *pdwFlags);

    STDMETHODIMP GetSpaceUsed( 
             DWORDLONG *pdwlSpaceUsed,
             IEmptyVolumeCacheCallBack *picb);
     
     STDMETHODIMP Purge( 				// Called when it's time to delete.
             DWORDLONG dwlSpaceToFree,
             IEmptyVolumeCacheCallBack *picb);
        
    STDMETHODIMP ShowProperties(HWND hwnd);
        
    STDMETHODIMP Deactivate(DWORD *pdwFlags);

    //IEmptyVolumeCache2 interface 
    STDMETHODIMP InitializeEx (HKEY hKey, LPCWSTR pcwszVolume, LPCWSTR pcwszKeyName,
                               LPWSTR *ppwszDisplayName, LPWSTR *ppwszDescription, 
                               LPWSTR *ppwszBtnText, DWORD *pdwFlags);

工作原理

  • 首先,您需要注册服务器(通过 regsrv32.exe,或通过 reg.bat 间接注册),然后您将看到
    一个对话框,您可以在其中适当地填写字段,或者让这些字段保持默认值,如果您希望清理
    助手删除 Visual C++ 的中间文件。
  • 扩展注册后,可以通过启动 CLEANMGR.EXE,或在资源管理器中驱动器的“属性”对话框中单击“磁盘清理”按钮来访问它。可以通过在资源管理器中右键单击驱动器并从上下文菜单中选择“属性”,或在资源管理器中单击驱动器并选择“文件”然后“属性”来访问“属性”对话框。
  • 当您不再需要它时,只需取消注册服务器并删除 DLL 文件即可。

结论

当我第一次注册我的组件并运行清理管理器 (cleanmgr.exe) 时,从而启动我的全新清理助手时,我惊讶于 Visual C++ 为其需求生成了中间文件的大小(大约 200 Mb)。

虽然此助手旨在删除 Visual C++ 生成的文件,但它也可以用于其他应用程序的临时文件或其他目的。

它仅在 Windows XP 上进行了测试,请告诉我它是否在您的机器上工作。如果您发现此应用程序有帮助,请通过 blackhorus@caramail.com 与我联系。

© . All rights reserved.