LPWSTR pszVer = L"v2.0.50727";
LPWSTR pszFlavor = L"svr"; // svr, wks
ICorRuntimeHost *pHost =NULL;
mscorlib::_AppDomain *pDefaultDomain = NULL;
IUnknown *pAppDomainPunk = NULL;
STDMETHODIMP CXIPVCAddin::AppStartUp( VARIANT_BOOL* pnComponentInitialized)
{
HRESULT hr =::CorBindToRuntimeEx(pszVer, pszFlavor,
STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN ,
CLSID_CorRuntimeHost, IID_ICorRuntimeHost, (void **)&pHost);
pHost->Start();
hr = pHost->GetDefaultDomain(&pAppDomainPunk);
hr = pAppDomainPunk->QueryInterface(__uuidof(mscorlib::_AppDomain),
(void**) &pDefaultDomain);
JQDXIPEventHandler::IXIPEventHandler *pObj=NULL;
mscorlib::_ObjectHandle *pObjHandle = NULL;
_bstr_t a("JQDXIPEventHandler");
_bstr_t t("JQD.XIPEventHandler");
hr=pDefaultDomain->CreateInstance(a,t,&pObjHandle);
VARIANT v;
VariantInit(&v);
hr = pObjHandle->Unwrap(&v);
hr = v.pdispVal->QueryInterface(__uuidof(JQDXIPEventHandler::XIPEventHandler),
(void**) &pObj);
hr=pObj->OnEvent();
MessageBox(NULL,"AppStartUp with CLR loaded, MFC/ATL","IXIPAddIn Sample",MB_OK);
*pnComponentInitialized=VARIANT_TRUE;
return S_OK;
}
STDMETHODIMP CXIPVCAddin::AppShutDown (VARIANT_BOOL* pnComponentDisconnected)
{
pHost->Stop();
pAppDomainPunk->Release();
pDefaultDomain->Release();
pHost->Release();
//MessageBox(NULL,"AppShutDownB with CLR Cleaned","IXIPAddIn Sample",MB_OK);
*pnComponentDisconnected=VARIANT_TRUE;
return S_OK;
}
STDMETHODIMP CXIPVCAddin::OnEvent (BSTR bstrEventName, IDispatch* pObject, VARIANT vArg)
{
MessageBox(NULL,"OnEvent","IXIPAddIn Sample",MB_OK);
return S_OK;
}
Saturday, June 21, 2008
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment