www.pudn.com > clamwin-0.85.1-src.zip > ShellExt.h


//----------------------------------------------------------------------------- 
// Name:        ShellExt.h 
// Product:     ClamWin Antivirus 
// 
// Author:      alch [alch at users dot sourceforge dot net] 
// 
// Created:     2004/19/03 
// Copyright:   Copyright alch (c) 2004 
// Licence:      
//   This program is free software; you can redistribute it and/or modify 
//   it under the terms of the GNU General Public License as published by 
//   the Free Software Foundation; either version 2 of the License, or 
//   (at your option) any later version. 
//  
//   This program is distributed in the hope that it will be useful, 
//   but WITHOUT ANY WARRANTY; without even the implied warranty of 
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
//   GNU General Public License for more details. 
//  
//   You should have received a copy of the GNU General Public License 
//   along with this program; if not, write to the Free Software 
//   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
 
//----------------------------------------------------------------------------- 
  
// 
// The class ID of this Shell extension class. 
// 
// class id:  65713842-C410-4f44-8383-BFE01A398C90 
// 
//                                   
 
#ifndef _SHELLEXT_H 
#define _SHELLEXT_H 
 
#define CF_HDROP        15 
 
// {65713842-C410-4f44-8383-BFE01A398C90} 
DEFINE_GUID(CLSID_ShellExtension,  
				0x65713842, 0xc410, 0x4f44, 0x83, 0x83, 0xbf, 0xe0, 0x1a, 0x39, 0x8c, 0x90); 
 
class CShellExtClassFactory : public IClassFactory 
{ 
protected: 
	ULONG	m_cRef;					// Object reference count 
	 
public: 
	CShellExtClassFactory(); 
	~CShellExtClassFactory(); 
	 
	//IUnknown members 
	STDMETHODIMP			QueryInterface(REFIID, LPVOID FAR *); 
	STDMETHODIMP_(ULONG)	AddRef(); 
	STDMETHODIMP_(ULONG)	Release(); 
	 
	//IClassFactory members 
	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *); 
	STDMETHODIMP		LockServer(BOOL); 
	 
}; 
typedef CShellExtClassFactory *LPCSHELLEXTCLASSFACTORY; 
 
// this is the actual OLE Shell context menu handler 
class CShellExt : public IContextMenu, 
IShellExtInit  
{ 
protected: 
	ULONG			m_cRef;					// Object reference count 
	LPDATAOBJECT	m_pDataObj; 
	 
public: 
	CShellExt(); 
	~CShellExt(); 
	 
	//IUnknown members 
	STDMETHODIMP			QueryInterface(REFIID, LPVOID FAR *); 
	STDMETHODIMP_(ULONG)	AddRef(); 
	STDMETHODIMP_(ULONG)	Release(); 
	 
	//IShell members 
	STDMETHODIMP			QueryContextMenu(HMENU hMenu, UINT indexMenu,  UINT idCmdFirst, UINT idCmdLast, UINT uFlags); 
	STDMETHODIMP			InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi); 
	STDMETHODIMP			GetCommandString(UINT idCmd, UINT uFlags, UINT FAR *reserved, LPSTR pszName, UINT cchMax); 
	//IShellExtInit methods 
	STDMETHODIMP		    Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID); 
private: 
    BOOL Scan(HWND hwnd); 
	PTCHAR m_szPath; 
}; 
typedef CShellExt *LPCSHELLEXT; 
 
#endif // _SHELLEXT_H