void IEToolbar::createToolbarWindow() { toolbarWindow_.create(siteWindow_); // Load and assign images for toolbar's buttons. setupToolbarImages(); setupToolbarHotImages(); // Create all toolbar elements. createToolbarItems(); // Store toolbar reference for RuntimeContext::storeToolbar(*this); // subscribe for https responces tracking CComPtr<IInternetSession> session; CoInternetGetSession(0, &session, 0); SessionMetaFactory::CreateInstance(CLSID_HttpSProtocol, &httpsFactory_, siteWindow_.m_hWnd); session->RegisterNameSpace(httpsFactory_, CLSID_NULL, L"https", 0, 0, 0); // subscribe for http responces tracking SessionMetaFactory::CreateInstance(CLSID_HttpProtocol, &httpFactory_, siteWindow_.m_hWnd); session->RegisterNameSpace(httpFactory_, CLSID_NULL, L"http", 0, 0, 0); // Switch toolbar to appropriate state. if (UserDataObserver::getInstance().isLoggedIn()) { loggedIn(); } else { loggedOut(); } }
HRESULT CProtocolHandlerRegistrar::RegisterTemporaryHandler( LPCWSTR lpszScheme, LPCWSTR lpszHost, RT tResourceID) { CritSectLock lock(m_CriticalSection); BOOL registered = FALSE; CComObject<CF> *pHandlerFactory = NULL; CComPtr<IClassFactory> pClassFactory; // lookup class factory for lpszScheme if (!m_ClassFactories.Lookup(lpszScheme, pClassFactory)) { // don't have yet, create class factory object IF_FAILED_RET(CComObject<CF> ::CreateInstance(&pHandlerFactory)); pClassFactory = pHandlerFactory; // init classfactory object IF_FAILED_RET(pHandlerFactory->Init( lpszScheme)); } else { // have class factory registered = TRUE; pHandlerFactory = (CComObject<CF> *)pClassFactory.p; } // add the host IF_FAILED_RET(pHandlerFactory->AddHost( lpszHost, tResourceID)); // register protocol handler if (!registered) { // get IInternetSession CComPtr<IInternetSession> pInternetSession; IF_FAILED_RET(CoInternetGetSession(0, &pInternetSession, 0)); IF_FAILED_RET(pInternetSession->RegisterNameSpace( pClassFactory, CTemporaryProtocolFolderHandler::CLSID, lpszScheme, 0, NULL, 0)); // store classfactory object m_ClassFactories[lpszScheme] = pClassFactory; } return S_OK; }
void sunapp_register_classes() { HRESULT hr; hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); if (FAILED(hr)) alert("CoInitialize failed"); IInternetSession* iis; hr = CoInternetGetSession(0, &iis, 0); if (FAILED(hr)) alert("CoInternetGetSession failed"); else { iis->RegisterNameSpace(&factory, CLSID_SuneidoAPP, L"suneido", 0, 0, 0); iis->Release(); } }
//-------------------------------------------------------------------------- // registerProtocolInternal HRESULT Application::registerProtocolInternal(Scheme aScheme) { CComPtr<IInternetSession> internetSession; HRESULT hr = CoInternetGetSession(0, &internetSession, 0); if (FAILED(hr)) { return hr; } switch(aScheme) { case SCHEME_HTTP: hr = MetaFactoryProtocol::CreateInstance( SchemeTraits<SCHEME_HTTP>::getCLSID(), &mClassFactoryHTTP); if (SUCCEEDED(hr)) { hr = internetSession->RegisterNameSpace( mClassFactoryHTTP, CLSID_NULL, SchemeTraits<SCHEME_HTTP>::getSchemeName(), 0, 0, 0); } break; case SCHEME_HTTP_S: hr = MetaFactoryProtocol::CreateInstance( SchemeTraits<SCHEME_HTTP_S>::getCLSID(), &mClassFactoryHTTPS); if (SUCCEEDED(hr)) { hr = internetSession->RegisterNameSpace( mClassFactoryHTTPS, CLSID_NULL, SchemeTraits<SCHEME_HTTP_S>::getSchemeName(), 0, 0, 0); } break; default: return E_INVALIDARG; } if (FAILED(hr)) { return hr; } return S_OK; }
//-------------------------------------------------------------------------- // unregisterProtocolInternal HRESULT Application::unregisterProtocolInternal(Scheme aScheme) { if (PAPP != mHandlerType) { return E_UNEXPECTED; } CComPtr<IInternetSession> internetSession; HRESULT hr = CoInternetGetSession(0, &internetSession, 0); if (FAILED(hr)) { return hr; } switch(aScheme) { case SCHEME_HTTP: internetSession->UnregisterNameSpace(mClassFactoryHTTP, SchemeTraits<SCHEME_HTTP>::getSchemeName()); mClassFactoryHTTP.Release(); return S_OK; case SCHEME_HTTP_S: internetSession->UnregisterNameSpace(mClassFactoryHTTPS, SchemeTraits<SCHEME_HTTP_S>::getSchemeName()); mClassFactoryHTTPS.Release(); return S_OK; } return E_INVALIDARG; }
HRESULT CProtocolHandlerRegistrar::UnregisterTemporaryHandler( LPCWSTR lpszScheme, LPCWSTR lpszHost) { CritSectLock lock(m_CriticalSection); // lookup classfactory object for lpszHost CComPtr<IClassFactory> pClassFactory; if (!m_ClassFactories.Lookup(lpszScheme, pClassFactory)) { // not found return S_FALSE; } // unregister host CComObject<CF> * pHandlerFactory = (CComObject<CF> *)pClassFactory.p; size_t registeredHosts = pHandlerFactory->RemoveHost(lpszHost); if (registeredHosts > 0) { // the handler has still registered hosts return S_OK; } // there are no more registered hosts, so remove the registration // get IInternetSession CComPtr<IInternetSession> pInternetSession; IF_FAILED_RET(CoInternetGetSession(0, &pInternetSession, 0)); // unregister pInternetSession->UnregisterNameSpace(pClassFactory, lpszScheme); // and remove from map m_ClassFactories.RemoveKey(lpszScheme); return S_OK; }