void wxWebViewIE::RegisterHandler(wxSharedPtr<wxWebViewHandler> handler) { wxDynamicLibrary urlMon(wxT("urlmon.dll")); if(urlMon.HasSymbol(wxT("CoInternetGetSession"))) { typedef HRESULT (WINAPI *CoInternetGetSession_t)(DWORD, wxIInternetSession**, DWORD); wxDYNLIB_FUNCTION(CoInternetGetSession_t, CoInternetGetSession, urlMon); ClassFactory* cf = new ClassFactory(handler); wxIInternetSession* session; HRESULT res = (*pfnCoInternetGetSession)(0, &session, 0); if(FAILED(res)) { wxFAIL_MSG("Could not retrive internet session"); } HRESULT hr = session->RegisterNameSpace(cf, CLSID_FileProtocol, handler->GetName().wc_str(), 0, NULL, 0); if(FAILED(hr)) { wxFAIL_MSG("Could not register protocol"); } m_factories.push_back(cf); } else { wxFAIL_MSG("urlmon does not contain CoInternetGetSession"); } }