|
//////////////////////////////////////////////////////////////////////
//
// This utility written and copyright by Michael Dunn (mdunn at inreach
// dot com). You may freely use and redistribute this source code and
// binary as long as this notice is retained.
//
// Contact me if you have any questions, comments, or bug reports. Get
// the latest updates at http://home.inreach.com/mdunn/code/
//
//////////////////////////////////////////////////////////////////////
//
// Revision history:
// Feb 28, 2000: Version 1.0: First release.
//
// June 5, 2000: Version 1.1: Fixed (un)registration so the DLL works
// on NT/2000.
//
// Oct 28, 2001: Version 1.1.1: Added 4 default wildcards, *.ncb, *.aps,
// *.bsc, *.sbr.
//
//////////////////////////////////////////////////////////////////////
//
// DirCleanShlExt.h : Declaration of the CDirCleanShlExt
#ifndef __DIRCLEANSHLEXT_H_
#define __DIRCLEANSHLEXT_H_
#include "resource.h" // main symbols
#include "CShellFileOp.h"
#include <comdef.h>
/////////////////////////////////////////////////////////////////////////////
// CDirCleanShlExt
class CDirCleanShlExt :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CDirCleanShlExt, &CLSID_DirCleanShlExt>,
public IDispatchImpl<IDirCleanShlExt, &IID_IDirCleanShlExt, &LIBID_DIRCLEANLib>,
public IShellExtInit,
public IContextMenu
{
public:
CDirCleanShlExt();
~CDirCleanShlExt();
protected:
CStringList m_lsDirs; // list of directories provided by the shell
CStringList m_lsPatternsToDelete; // list of wildcards to search for
BOOL m_bNT; // are we on NT?
BOOL m_bFoundFilesToDelete; // did we find any files to delete?
HBITMAP m_hbmp; // bitmap to show in the menu
void DoOptionsDlg ( CWnd* pParentWnd ); // show the options dlg
BOOL m_bRecycleFiles; // should files go to the Recycle Bin?
void AddDirsToFileOp ( CShellFileOp* pOp, CString sDir );
HRESULT CleanFiles ( BOOL bRecycle, CWnd* pParentWnd );
public:
// IShellExtInit
STDMETHOD(Initialize)(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
// IContextMenu
STDMETHOD(GetCommandString)(UINT, UINT, UINT*, LPSTR, UINT);
STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO);
STDMETHOD(QueryContextMenu)(HMENU, UINT, UINT, UINT, UINT);
DECLARE_REGISTRY_RESOURCEID(IDR_DIRCLEANSHLEXT)
DECLARE_NOT_AGGREGATABLE(CDirCleanShlExt)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CDirCleanShlExt)
COM_INTERFACE_ENTRY(IDirCleanShlExt)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IShellExtInit)
COM_INTERFACE_ENTRY(IContextMenu)
END_COM_MAP()
// IDirCleanShlExt
public:
};
#endif //__DIRCLEANSHLEXT_H_
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Michael lives in sunny Mountain View, California. He started programming with an Apple
//e in 4th grade, graduated from
UCLA with a math degree in 1994, and immediately landed a job as a QA engineer at Symantec, working on the Norton AntiVirus team. He pretty much taught himself Windows and MFC programming, and in 1999 he designed and coded a new interface for Norton AntiVirus 2000.
Mike has been a a developer at
Napster and at his own lil' startup, Zabersoft, a development company he co-founded with offices in Los Angeles and Odense, Denmark. Mike is now a senior engineer at
VMware.
He also enjoys his hobbies of playing pinball, bike riding, photography, and Domion on Friday nights (current favorite combo: Village + double Pirate Ship). He would get his own snooker table too if they weren't so darn big! He is also sad that he's forgotten the languages he's studied: French, Mandarin Chinese, and Japanese.
Mike was a
VC MVP from 2005 to 2009.