www.pudn.com > dllregshex_src.zip > dllregshex.h


// 
// CLSID: 25D84CB0-7345-11d3-A4A1-0080C8ECFED4 
// 
       
#ifndef __NTSrv_ShellExtension_Defined__ 
#define __NTSrv_ShellExtension_Defined__ 
 
	#pragma data_seg(".text") 
	#include  
	#define INITGUID 
	#include  
	#include  
	#include  
	#pragma data_seg() 
 
	// 
	//	Operations. 
	// 
	#define REGDLL_INSTALL		0 
	#define REGDLL_UNINSTALL	1 
 
	// 
	//	Factory 
	// 
	class CDllRegSxClassFactory : public IClassFactory 
	{ 
		protected: 
			ULONG	m_cRef; 
 
		public: 
			CDllRegSxClassFactory(); 
			~CDllRegSxClassFactory(); 
 
		public: 
			STDMETHODIMP			QueryInterface(REFIID, LPVOID FAR *); 
			STDMETHODIMP_(ULONG)	AddRef(); 
			STDMETHODIMP_(ULONG)	Release(); 
 
			STDMETHODIMP			CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *); 
			STDMETHODIMP			LockServer(BOOL); 
	}; 
 
	typedef CDllRegSxClassFactory *LPCSHELLEXTCLASSFACTORY; 
 
	// 
	//	Shell extension. Must implement IContextMenu (2, 3) and IShellExtInit. 
	// 
	class CShellExt :  
		public  
			IContextMenu,  
			IShellExtInit 
	{ 
		protected: 
			ULONG					m_cRef; 
 
			LPDATAOBJECT			m_pDataObj; 
			char					m_szFileUserClickedOn[MAX_PATH]; 
 
		protected: 
			STDMETHODIMP			DoInstall(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam, int iShowCmd); 
			STDMETHODIMP			DoUninstall(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam, int iShowCmd); 
 
			STDMETHODIMP			DoAbout(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam, int iShowCmd); 
 
		public: 
			STDMETHODIMP			_GetFullFileName(/*LPSTR lpszName*/); 
			STDMETHODIMP			_DoRegisterJob(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam,  
										int iShowCmd, const int cintOpCode = REGDLL_INSTALL); 
 
		public: 
			CShellExt(); 
			~CShellExt(); 
 
			//	IUnknown 
			STDMETHODIMP			QueryInterface(REFIID riid, LPVOID FAR *ppv); 
			STDMETHODIMP_(ULONG)	AddRef(); 
			STDMETHODIMP_(ULONG)	Release(); 
 
			//	IContextMenu 
			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 
			STDMETHODIMP		    Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID); 
		}; 
 
	typedef CShellExt *LPCSHELLEXT; 
 
#endif