Pregunta

He creado un BHO en VC ++ referiendo el siguiente enlace

http://msdn.microsoft.com/en-us/library/bb250489%28v=vs.85%29.aspx

Ahora necesito agregar la etiqueta de entrada mientras se completa la carga de la página, lo intenté con el siguiente código

void STDMETHODCALLTYPE CTestBHO::OnDocumentComplete(IDispatch *pDisp, VARIANT *pvarURL)
{

    if (SUCCEEDED(hr))
    {
    responseCode=200;
    setResponseCode(pDisp);
    }
}

void CRealBrowserBHO::setResponseCode(IDispatch *pDisp)
{
HRESULT hr = S_OK;
CComPtr<IDispatch> spDispDoc;
hr = m_spWebBrowser->get_Document(&spDispDoc);
if (SUCCEEDED(hr))
    {
        BSTR inputElement=L"<input type=\"text\" name=\"ResponseCode\" value=\"200\">";
        IHTMLElement *pTRElmt = NULL;
        CComQIPtr<IHTMLDocument2> spHTMLDoc = spDispDoc;
        HRESULT hr1=spHTMLDoc->get_body(&pTRElmt);
        if (spHTMLDoc != NULL)
        {
            HRESULT hr=pTRElmt->insertAdjacentHTML(L"beforeEnd",inputElement);
        }
    }
}

Pero la etiqueta no se insertó en mi página web.

Lo que sale mal, por favor, señale lo que me perdí aquí

Gracias Ramachandran.

¿Fue útil?

Solución

Código que debería funcionar:

void CRealBrowserBHO::setResponseCode(IDispatch *pDisp)
{
    HRESULT hr;
    CComPtr<IDispatch> spDispDoc;
    hr = m_spWebBrowser->get_Document(&spDispDoc);
    if (SUCCEEDED(hr) && spDispDoc)
    {
        CComPtr<IHTMLDocument2> spHTMLDoc;
        hr = spDispDoc.QueryInterface<IHTMLDocument2>( &spHTMLDoc );
        if (SUCCEEDED(hr) && spHTMLDoc) 
        {
            CComPtr<IHTMLElement> spBodyElmt;
            hr = spHTMLDoc->get_body(&spBodyElmt);
            if (SUCCEEDED(hr) && spBodyElmt)
            {
                CComBSTR inputElement( L"<input type='text' name='ResponseCode' value='200'/>" );
                hr = spBodyElmt->insertAdjacentHTML( CComBSTR( L"beforeEnd" ), inputElement);
            }
        }
    }
}

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top