1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
// EmptyRecycleBin.h : Declaration of the CEmptyRecycleBin
#ifndef __EMPTYRECYCLEBIN_H_
#define __EMPTYRECYCLEBIN_H_
#include "resource.h" // main symbols
#include "Shlobj.h"
#include "../Common/CmptData.h"
#include <contexthelp.h>
HRESULT InvokeMenuCommand(IContextMenu* pcm, HMENU hMenu, UINT nMenuItem, HWND hWndParent, bool bClosePrompt = false);
HRESULT InvokeMenuId(IContextMenu* pcm, int nIDCmd, HWND hWndParent);
int GetMenuIdFromString(HMENU hMenu, string sMenuItem);
int GetMenuIdFromString(HMENU hMenu, UINT nStrID);
DWORD WINAPI ClosePromptWindow( LPVOID pParam );
HWND GetTopLevel(HWND hwndChild);
#define ER_REG_RECYCLE _T("Empty Recycle Bin")
#define ER_REG_NORTON _T("Empty Norton Protected")
/////////////////////////////////////////////////////////////////////////////
// CEmptyRecycleBin
class ATL_NO_VTABLE CEmptyRecycleBin :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CEmptyRecycleBin, &CLSID_EmptyRecycleBin>,
public ISupportErrorInfo,
public IDispatchImpl<ISecureShutdownWin, &IID_ISecureShutdownWin, &LIBID_NightSecCmpts>,
public IPropertyPageImpl<CEmptyRecycleBin>,
public CDialogImplEx,
public CContextHelp<CEmptyRecycleBin>
{
public:
CEmptyRecycleBin() : CDialogImplEx(IDD)
{
m_dwTitleID = IDS_TITLERecycle;
m_dwHelpFileID = IDS_NSHELPFILE;
m_dwDocStringID = IDS_DOCSTRINGRecycle;
}
~CEmptyRecycleBin()
{ ATLTRACE(_T("Destroying EmptyRecycleBin\n")); }
DECLARE_REGISTRY_RESOURCEID(IDR_EMPTYRECYCLEBIN)
BEGIN_COM_MAP(CEmptyRecycleBin)
COM_INTERFACE_ENTRY(ISecureShutdownWin)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY_IMPL(IPropertyPage)
END_COM_MAP()
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// ISecureShutdownWin
public:
STDMETHOD(get_Info)(/*[in]*/ NightSecInfo nsItem, /*[out, retval]*/ VARIANT* pvVal);
STDMETHOD(DoShutdown)(/*[in]*/ long hParent, /*[in]*/ long lMode);
STDMETHOD(SetData)(/*[in]*/ IUnknown* pUnk);
// Data
protected:
CPropertyBag m_Data;
///////////////////////////////////////////////////////////////////
// Property Sheet Stuff
public:
enum {IDD = IDD_EMPTYRECYCLE};
BEGIN_MSG_MAP(CEmptyRecycleBin)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
CHAIN_MSG_MAP(IPropertyPageImpl<CEmptyRecycleBin>)
CHAIN_MSG_MAP(CContextHelp<CEmptyRecycleBin>)
END_MSG_MAP()
BEGIN_HELP_MAP(NS_HELP_FILE)
HELP_ID(IDC_EMPTYRECYCLE, 4020)
HELP_ID(IDC_EMPTYNORTON, 4019)
END_HELP_MAP
// Property Sheet Messages
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
STDMETHOD(Apply)(void)
{
ATLTRACE(_T("CEmptyRecycleBun::Apply\n"));
HRESULT hr;
HRESULT hrRet = S_OK;
// Save AutoFix State
hr = m_Data.WriteInt(ER_REG_RECYCLE, IsDlgButtonChecked(IDC_EMPTYRECYCLE));
if(FAILED(hr)) hrRet = hr;
// Save Cluster State
hr = m_Data.WriteInt(ER_REG_NORTON, IsDlgButtonChecked(IDC_EMPTYNORTON));
if(FAILED(hr)) hrRet = hr;
m_bDirty = FALSE;
return hrRet;
}
};
#endif //__EMPTYRECYCLEBIN_H_
|