You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
4.0 KiB
168 lines
4.0 KiB
#include "stdafx.h"
|
|
#include <iadmw.h>
|
|
#include <inetcom.h>
|
|
#include <logtype.h>
|
|
#include <ilogobj.hxx>
|
|
#include "logui.h"
|
|
#include "uincsa.h"
|
|
#include "LogGenPg.h"
|
|
#include "logtools.h"
|
|
|
|
#define OLE_NAME _T("NCSA_Logging_UI")
|
|
|
|
static const DWORD BASED_CODE _dwOleMisc = OLEMISC_INSIDEOUT | OLEMISC_CANTLINKINSIDE;
|
|
extern HINSTANCE g_hInstance;
|
|
|
|
CFacNcsaLogUI::CFacNcsaLogUI() :
|
|
COleObjectFactory(CLSID_NCSALOGUI, RUNTIME_CLASS(CNcsaCreator), TRUE, OLE_NAME)
|
|
{
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
static const LPCTSTR rglpszServerRegister[] =
|
|
{
|
|
_T("%2\\CLSID\0") _T("%1"),
|
|
_T("%2\\NotInsertable\0") _T(""),
|
|
_T("CLSID\\%1\0") _T("%5"),
|
|
_T("CLSID\\%1\\Verb\\0\0") _T("&Edit,0,2"),
|
|
_T("CLSID\\%1\\NotInsertable\0") _T(""),
|
|
_T("CLSID\\%1\\AuxUserType\\2\0") _T("%4"),
|
|
_T("CLSID\\%1\\AuxUserType\\3\0") _T("%6"),
|
|
_T("CLSID\\%1\\MiscStatus\0") _T("32"),
|
|
NULL,
|
|
};
|
|
|
|
static const LPCTSTR rglpszServerOverwriteDLL[] =
|
|
{
|
|
_T("%2\\CLSID\0") _T("%1"),
|
|
_T("CLSID\\%1\\ProgID\0") _T("%2"),
|
|
_T("CLSID\\%1\\InProcServer32\0") _T("%3"),
|
|
_T("CLSID\\%1\\DefaultIcon\0") _T("%3,%7"),
|
|
NULL
|
|
};
|
|
|
|
BOOL CFacNcsaLogUI::UpdateRegistry( BOOL bRegister )
|
|
{
|
|
if (bRegister)
|
|
if ( AfxOleRegisterServerClass(
|
|
CLSID_NCSALOGUI,
|
|
OLE_NAME,
|
|
_T("LogUI ncsa"),
|
|
_T("LogUI ncsa"),
|
|
OAT_SERVER,
|
|
(LPCTSTR *)rglpszServerRegister,
|
|
(LPCTSTR *)rglpszServerOverwriteDLL
|
|
) )
|
|
{
|
|
return FSetObjectApartmentModel( CLSID_NCSALOGUI );
|
|
}
|
|
else
|
|
return AfxOleUnregisterClass(m_clsid, OLE_NAME);
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
IMPLEMENT_DYNCREATE(CNcsaCreator, CCmdTarget)
|
|
LPUNKNOWN CNcsaCreator::GetInterfaceHook(const void* piid)
|
|
{
|
|
return new CImpNcsaLogUI;
|
|
}
|
|
|
|
CImpNcsaLogUI::CImpNcsaLogUI():
|
|
m_dwRefCount(0)
|
|
{
|
|
AfxOleLockApp();
|
|
}
|
|
|
|
CImpNcsaLogUI::~CImpNcsaLogUI()
|
|
{
|
|
AfxOleUnlockApp();
|
|
}
|
|
|
|
HRESULT CImpNcsaLogUI::OnProperties(
|
|
OLECHAR * pocMachineName,
|
|
OLECHAR * pocMetabasePath
|
|
)
|
|
{
|
|
return OnPropertiesEx(pocMachineName, pocMetabasePath, NULL, NULL);
|
|
}
|
|
|
|
HRESULT CImpNcsaLogUI::OnPropertiesEx(
|
|
OLECHAR * pocMachineName,
|
|
OLECHAR * pocMetabasePath,
|
|
OLECHAR * pocUserName,
|
|
OLECHAR * pocPassword
|
|
)
|
|
{
|
|
AFX_MANAGE_STATE(_afxModuleAddrThis);
|
|
|
|
// specify the resources to use
|
|
HINSTANCE hOldRes = AfxGetResourceHandle();
|
|
AfxSetResourceHandle( g_hInstance );
|
|
|
|
// prepare the help
|
|
((CLoguiApp*)AfxGetApp())->PrepHelp( pocMetabasePath );
|
|
|
|
CLogGeneral pageLogGeneral;
|
|
CPropertySheet propsheet(IDS_SHEET_NCSA_TITLE);
|
|
|
|
try
|
|
{
|
|
pageLogGeneral.m_szMeta = pocMetabasePath;
|
|
pageLogGeneral.m_szServer = pocMachineName;
|
|
pageLogGeneral.m_szUserName = pocUserName;
|
|
pageLogGeneral.m_szPassword = pocPassword;
|
|
pageLogGeneral.szPrefix.LoadString(IDS_LOG_NCSA_PREFIX);
|
|
pageLogGeneral.szSizePrefix.LoadString(IDS_LOG_SIZE_NCSA_PREFIX);
|
|
pageLogGeneral.m_fLocalMachine = FIsLocalMachine( pocMachineName );
|
|
|
|
propsheet.AddPage( &pageLogGeneral );
|
|
propsheet.m_psh.dwFlags |= PSH_HASHELP;
|
|
pageLogGeneral.m_psp.dwFlags |= PSP_HASHELP;
|
|
|
|
propsheet.DoModal();
|
|
}
|
|
catch ( CException * pException )
|
|
{
|
|
pException->Delete();
|
|
}
|
|
|
|
AfxSetResourceHandle( hOldRes );
|
|
|
|
return NO_ERROR;
|
|
}
|
|
|
|
HRESULT CImpNcsaLogUI::QueryInterface(REFIID riid, void **ppObject)
|
|
{
|
|
if ( riid==IID_IUnknown
|
|
|| riid==IID_LOGGINGUI
|
|
|| riid==IID_LOGGINGUI2
|
|
|| riid==CLSID_NCSALOGUI
|
|
)
|
|
{
|
|
*ppObject = (ILogUIPlugin*) this;
|
|
}
|
|
else
|
|
{
|
|
return E_NOINTERFACE;
|
|
}
|
|
AddRef();
|
|
return NO_ERROR;
|
|
}
|
|
|
|
ULONG CImpNcsaLogUI::AddRef()
|
|
{
|
|
DWORD dwRefCount;
|
|
dwRefCount = InterlockedIncrement((long *)&m_dwRefCount);
|
|
return dwRefCount;
|
|
}
|
|
|
|
ULONG CImpNcsaLogUI::Release()
|
|
{
|
|
DWORD dwRefCount;
|
|
dwRefCount = InterlockedDecrement((long *)&m_dwRefCount);
|
|
if (dwRefCount == 0) {
|
|
delete this;
|
|
}
|
|
return dwRefCount;
|
|
}
|