⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warsvrsnapin.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "stdafx.h"#include "WarServerSnapin.h"#include "WarSvrSnapin.h"#include "WarMmcNodeServices.h"#include "WarMmcNodeFtpServers.h"/////////////////////////////////////////////////////////////////////////////// CWarSvrSnapinComponentDatastatic const GUID CWarSvrSnapinGUID_NODETYPE = { 0x41806df3, 0x1de3, 0x441f, { 0xb4, 0x2c, 0x8c, 0x0, 0x43, 0x9a, 0xaf, 0x16 } };const GUID*  CWarSvrStaticNode::m_NODETYPE = &CWarSvrSnapinGUID_NODETYPE;const OLECHAR* CWarSvrStaticNode::m_SZNODETYPE = OLESTR("41806DF3-1DE3-441F-B42C-8C00439AAF16");const OLECHAR* CWarSvrStaticNode::m_SZDISPLAY_NAME = OLESTR("Servers");const CLSID* CWarSvrStaticNode::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;static const GUID WarMmcNodeServicesGUID_NODETYPE = { /* d42d6418-bdec-4ee9-b1e1-7ff9466f7e3e */    0xd42d6418,    0xbdec,    0x4ee9,    {0xb1, 0xe1, 0x7f, 0xf9, 0x46, 0x6f, 0x7e, 0x3e}  };const GUID*  WarMmcNodeServices::m_NODETYPE = &WarMmcNodeServicesGUID_NODETYPE;const OLECHAR* WarMmcNodeServices::m_SZNODETYPE = OLESTR("d42d6418-bdec-4ee9-b1e1-7ff9466f7e3e");const OLECHAR* WarMmcNodeServices::m_SZDISPLAY_NAME = OLESTR("Services");const CLSID* WarMmcNodeServices::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;static const GUID WarMmcNodeAuthModulesGUID_NODETYPE = { /* 999bbe94-7114-43f1-bd29-b0a97de16a9e */    0x999bbe94,    0x7114,    0x43f1,    {0xbd, 0x29, 0xb0, 0xa9, 0x7d, 0xe1, 0x6a, 0x9e}  };const GUID*  WarMmcNodeAuthModules::m_NODETYPE = &WarMmcNodeAuthModulesGUID_NODETYPE;const OLECHAR* WarMmcNodeAuthModules::m_SZNODETYPE = OLESTR("999bbe94-7114-43f1-bd29-b0a97de16a9e");const OLECHAR* WarMmcNodeAuthModules::m_SZDISPLAY_NAME = OLESTR("Auth Modules");const CLSID* WarMmcNodeAuthModules::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;static const GUID WarMmcNodeFtpServersGUID_NODETYPE = { /* a89d7de0-ba40-4227-a72f-a8e245b58af7 */    0xa89d7de0,    0xba40,    0x4227,    {0xa7, 0x2f, 0xa8, 0xe2, 0x45, 0xb5, 0x8a, 0xf7}};const GUID*  WarMmcNodeFtpServers::m_NODETYPE = &WarMmcNodeFtpServersGUID_NODETYPE;const OLECHAR* WarMmcNodeFtpServers::m_SZNODETYPE = OLESTR("a89d7de0-ba40-4227-a72f-a8e245b58af7");const OLECHAR* WarMmcNodeFtpServers::m_SZDISPLAY_NAME = OLESTR("FTP server");const CLSID* WarMmcNodeFtpServers::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;static const GUID WarMmcNodeAuthNtGUID_NODETYPE ={ /* 576e475b-15b2-4df8-88ee-b73eb2c8c554 */    0x576e475b,    0x15b2,    0x4df8,    {0x88, 0xee, 0xb7, 0x3e, 0xb2, 0xc8, 0xc5, 0x54}  };const GUID*  WarMmcNodeAuthNt::m_NODETYPE = &WarMmcNodeAuthNtGUID_NODETYPE;const OLECHAR* WarMmcNodeAuthNt::m_SZNODETYPE = OLESTR("576e475b-15b2-4df8-88ee-b73eb2c8c554");const OLECHAR* WarMmcNodeAuthNt::m_SZDISPLAY_NAME = OLESTR("Windows NT");const CLSID* WarMmcNodeAuthNt::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;static const GUID WarMmcNodeNtUserGUID_NODETYPE ={ /* 1397BD0D-1185-432a-A9C6-9AD45B2563E0 */    0x1397bd0d,     0x1185,     0x432a,     { 0xa9, 0xc6, 0x9a, 0xd4, 0x5b, 0x25, 0x63, 0xe0 }};const GUID*  WarMmcNodeNtUser::m_NODETYPE = &WarMmcNodeAuthNtGUID_NODETYPE;const OLECHAR* WarMmcNodeNtUser::m_SZNODETYPE = OLESTR("1397BD0D-1185-432a-A9C6-9AD45B2563E0");const OLECHAR* WarMmcNodeNtUser::m_SZDISPLAY_NAME = OLESTR("Windows NT User");const CLSID* WarMmcNodeNtUser::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;// {52CD2923-E934-4361-87B3-B23987A01C44}static const GUID WarMmcNodeSharesGUID_NODETYPE = { 0x52cd2923, 0xe934, 0x4361, { 0x87, 0xb3, 0xb2, 0x39, 0x87, 0xa0, 0x1c, 0x44 } };const GUID*  WarMmcNodeShares::m_NODETYPE = &WarMmcNodeAuthNtGUID_NODETYPE;const OLECHAR* WarMmcNodeShares::m_SZNODETYPE = OLESTR("52CD2923-E934-4361-87B3-B23987A01C44");const OLECHAR* WarMmcNodeShares::m_SZDISPLAY_NAME = OLESTR("File Shares");const CLSID* WarMmcNodeShares::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;// {3A3EF031-A3D9-4335-9932-73085828463C}static const GUID WarMmcNodeFileShareGUID_NODETYPE = { 0x3a3ef031, 0xa3d9, 0x4335, { 0x99, 0x32, 0x73, 0x8, 0x58, 0x28, 0x46, 0x3c } };const GUID*  WarMmcNodeFileShare::m_NODETYPE = &WarMmcNodeAuthNtGUID_NODETYPE;const OLECHAR* WarMmcNodeFileShare::m_SZNODETYPE = OLESTR("3A3EF031-A3D9-4335-9932-73085828463C");const OLECHAR* WarMmcNodeFileShare::m_SZDISPLAY_NAME = OLESTR("File Share");const CLSID* WarMmcNodeFileShare::m_SNAPIN_CLASSID = &CLSID_WarSvrSnapin;HRESULT CWarSvrStaticNode::GetScopePaneInfo(SCOPEDATAITEM *pScopeDataItem){	if (pScopeDataItem->mask & SDI_STR)		pScopeDataItem->displayname = m_bstrDisplayName;	if (pScopeDataItem->mask & SDI_IMAGE)		pScopeDataItem->nImage = m_scopeDataItem.nImage;	if (pScopeDataItem->mask & SDI_OPENIMAGE)		pScopeDataItem->nOpenImage = m_scopeDataItem.nOpenImage;	if (pScopeDataItem->mask & SDI_PARAM)		pScopeDataItem->lParam = m_scopeDataItem.lParam;	if (pScopeDataItem->mask & SDI_STATE )		pScopeDataItem->nState = m_scopeDataItem.nState;	// TODO : Add code for SDI_CHILDREN 	return S_OK;}HRESULT CWarSvrStaticNode::GetResultPaneInfo(RESULTDATAITEM *pResultDataItem){	if (pResultDataItem->bScopeItem)	{		if (pResultDataItem->mask & RDI_STR)		{			pResultDataItem->str = GetResultPaneColInfo(pResultDataItem->nCol);		}		if (pResultDataItem->mask & RDI_IMAGE)		{			pResultDataItem->nImage = m_scopeDataItem.nImage;		}		if (pResultDataItem->mask & RDI_PARAM)		{			pResultDataItem->lParam = m_scopeDataItem.lParam;		}		return S_OK;	}	if (pResultDataItem->mask & RDI_STR)	{		pResultDataItem->str = GetResultPaneColInfo(pResultDataItem->nCol);	}	if (pResultDataItem->mask & RDI_IMAGE)	{		pResultDataItem->nImage = m_resultDataItem.nImage;	}	if (pResultDataItem->mask & RDI_PARAM)	{		pResultDataItem->lParam = m_resultDataItem.lParam;	}	if (pResultDataItem->mask & RDI_INDEX)	{		pResultDataItem->nIndex = m_resultDataItem.nIndex;	}	return S_OK;}HRESULT CWarSvrStaticNode::Notify( MMC_NOTIFY_TYPE event,    long arg,    long param,	IComponentData* pComponentData,	IComponent* pComponent,	DATA_OBJECT_TYPES type){	// Add code to handle the different notifications.	// Handle MMCN_SHOW and MMCN_EXPAND to enumerate children items.	// In response to MMCN_SHOW you have to enumerate both the scope	// and result pane items.	// For MMCN_EXPAND you only need to enumerate the scope items	// Use IConsoleNameSpace::InsertItem to insert scope pane items	// Use IResultData::InsertItem to insert result pane item.	HRESULT hr = E_NOTIMPL;		_ASSERTE(pComponentData != NULL || pComponent != NULL);	CComPtr<IConsole> spConsole;	CComQIPtr<IHeaderCtrl, &IID_IHeaderCtrl> spHeader;	if (pComponentData != NULL)		spConsole = ((CWarSvrSnapin*)pComponentData)->m_spConsole;	else	{		spConsole = ((CWarSvrSnapinComponent*)pComponent)->m_spConsole;		spHeader = spConsole;	}	switch (event)	{	case MMCN_SHOW:		{			CComQIPtr<IResultData, &IID_IResultData> spResultData(spConsole);			// TODO : Enumerate the result pane items			hr = S_OK;			break;		}	case MMCN_EXPAND:		{			CComQIPtr<IConsoleNameSpace, &IID_IConsoleNameSpace> spConsoleNameSpace(spConsole);			            // Enumerate installed services                        WarWin32Registry::keyname_list_t svr_list;            try            {                mRegRoot.EnumKey(svr_list);                for(WarWin32Registry::keyname_list_t::const_iterator                     P = svr_list.begin()                    ; P != svr_list.end()                    ; P++)                {                    WarWin32Registry reg_node;                    reg_node.Open(HKEY_LOCAL_MACHINE,                        mRegRoot.GetPath(P->c_str()), KEY_ALL_ACCESS);                    if (reg_node.GetStrValue(WAR_WINNT_REG_CLASSID, _T(""))                        == war_regstr_t(WarMmcNodeServices::m_SZNODETYPE))                    {                        SCOPEDATAITEM sdi;                        memset(&sdi, 0, sizeof(sdi));                        sdi.mask = SDI_STR | SDI_PARAM | SDI_IMAGE                             | SDI_OPENIMAGE | SDI_PARENT;                        sdi.displayname = MMC_CALLBACK;                        sdi.relativeID = param;                        sdi.lParam = (LPARAM)new WarMmcNodeServices(                            reg_node.GetPath(NULL));                        hr = spConsoleNameSpace->InsertItem(&sdi);                    }                }            }            catch(WarException)            {                hr = S_FALSE;			    break;            }			hr = S_OK;			break;		}	case MMCN_ADD_IMAGES:		{			// Add Images			IImageList* pImageList = (IImageList*) arg;			hr = E_FAIL;			// Load bitmaps associated with the scope pane			// and add them to the image list			// Loads the default bitmaps generated by the wizard			// Change as required			HBITMAP hBitmap16 = LoadBitmap(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_WARSVRSNAPIN_16));			if (hBitmap16 != NULL)			{				HBITMAP hBitmap32 = LoadBitmap(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_WARSVRSNAPIN_32));				if (hBitmap32 != NULL)				{					hr = pImageList->ImageListSetStrip((long*)hBitmap16, 					(long*)hBitmap32, 0, RGB(0, 128, 128));					if (FAILED(hr))						ATLTRACE(_T("IImageList::ImageListSetStrip failed\n"));				}			}			break;		}	}	return hr;}LPOLESTR CWarSvrStaticNode::GetResultPaneColInfo(int nCol){	if (nCol == 0)		return m_bstrDisplayName;	// TODO : Return the text for other columns	return OLESTR("Override GetResultPaneColInfo");}HRESULT CWarSvrSnapin::Initialize(LPUNKNOWN pUnknown){	HRESULT hr = IComponentDataImpl<CWarSvrSnapin, CWarSvrSnapinComponent >::Initialize(pUnknown);	if (FAILED(hr))		return hr;	CComPtr<IImageList> spImageList;	if (m_spConsole->QueryScopeImageList(&spImageList) != S_OK)	{		ATLTRACE(_T("IConsole::QueryScopeImageList failed\n"));		return E_UNEXPECTED;	}	// Load bitmaps associated with the scope pane	// and add them to the image list	// Loads the default bitmaps generated by the wizard	// Change as required	HBITMAP hBitmap16 = LoadBitmap(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_WARICONS_16));	if (hBitmap16 == NULL)		return S_OK;	HBITMAP hBitmap32 = LoadBitmap(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_WARICONS_32));	if (hBitmap32 == NULL)		return S_OK;	if (spImageList->ImageListSetStrip((long*)hBitmap16, 		(long*)hBitmap32, 0, RGB(0, 128, 128)) != S_OK)	{		ATLTRACE(_T("IImageList::ImageListSetStrip failed\n"));		return E_UNEXPECTED;	}	return S_OK;}HRESULT CWarSvrSnapin::LoadImages(IImageList* pImageList){    HRESULT hr = E_FAIL;    HBITMAP m_hSmallBmp = LoadBitmap(        _Module.GetResourceInstance(),        MAKEINTRESOURCE(IDB_WARICONS_16));    if (m_hSmallBmp != NULL)    {        HBITMAP m_hLargeBmp = LoadBitmap(            _Module.GetResourceInstance(),            MAKEINTRESOURCE(IDB_WARICONS_32));                if (m_hLargeBmp != NULL)        {            hr = pImageList->ImageListSetStrip((long*) m_hSmallBmp,                 (long*) m_hLargeBmp,0, RGB(0, 128, 128));            if (FAILED(hr))                ATLTRACE(_T("IImageList::ImageListSetStrip failed\n"));        }        DeleteObject(m_hLargeBmp);    }    DeleteObject(m_hSmallBmp);    return hr;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -