// {853FE2B1-B769-11d0-9C4E-00C04FB6C6FA} DEFINE_GUID(CLSID_CryptMenu, 0x853fe2b1, 0xb769, 0x11d0, 0x9c, 0x4e, 0x0, 0xc0, 0x4f, 0xb6, 0xc6, 0xfa); class CCryptMenuClassFactory : public IClassFactory { protected: DWORD m_ObjRefCount; public: CCryptMenuClassFactory(); ~CCryptMenuClassFactory(); //IUnknown methods STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(DWORD) AddRef(); STDMETHODIMP_(DWORD) Release(); //IClassFactory methods STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *); STDMETHODIMP LockServer(BOOL); }; class CCryptMenuExt : public IShellExtInit, public IContextMenu { public: CCryptMenuExt(); ~CCryptMenuExt(); //IUnknown methods STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(DWORD) AddRef(); STDMETHODIMP_(DWORD) Release(); //IShellExtInit methods STDMETHODIMP Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY); //IContextMenu methods STDMETHODIMP QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO); STDMETHODIMP GetCommandString(UINT_PTR, UINT, LPUINT, LPSTR, UINT); protected: void ResetSelectedFileList(); HRESULT GetNextSelectedFile(LPTSTR *, __int64 *); DWORD m_ObjRefCount; LPDATAOBJECT m_pDataObj; int m_nToEncrypt; int m_nToDecrypt; __int64 m_cbToEncrypt; __int64 m_cbToDecrypt; int m_nFile; int m_nFiles; DWORD m_cbFile; LPTSTR m_szFile; bool m_fShutDown; };