4

我有这段代码,但它不起作用:

template <const GUID* pFbCLSID, const char* pMT, class ICurObjInt,
    const IID* piid, const GUID* plibid>
STDMETHODIMP CFBControl<pFbCLSID, pMT,ICurObjInt,piid,plibid>::SetClientSite(
    IOleClientSite *pClientSite )
{
    HRESULT hr = IOleObjectImpl<CFBControlX>::SetClientSite (pClientSite);
    if (!pClientSite || !pluginMain) {
        shutdown();
        return hr;
    }

    m_serviceProvider = pClientSite;
    if (!m_serviceProvider)
        return E_FAIL;
    // HERE QueryService() return E_NOINTERFACE
    m_serviceProvider->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2,
        reinterpret_cast<void**>(&m_webBrowser));
    m_serviceProvider.Release();
}

QueryService()返回E_NOINTERFACE。它是 IE 的 firebreath (www.firebreath.org) 插件,它是动态加载的。当DWebBrowserEvents2::OnDocumentComplete2()在我的 BHO 中引发事件时,我正在插入插件的 JS 对象并调用上面的代码。

在我的 BHO 中,当我订阅事件时,我有相同的代码,它工作正常。

4

0 回答 0