كيفية إدراج علامة الإدخال في صفحة الويب باستخدام BHO VC ++؟

StackOverflow https://stackoverflow.com/questions/19852678

سؤال

لقد قمت بإنشاء BHO في VC ++ تشير إلى الرابط أدناه

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

الآن أحتاج إلى إضافة علامة إدخال أثناء اكتمال تحميل الصفحة ، لقد حاولت برمز أدناه

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);
        }
    }
}

لكن العلامة لم يتم إدراجها على صفحة الويب الخاصة بي.

ما الخطأ ، من فضلك أوجهني إلى ما فاتني هنا

شكرا ، راماشاندران.

هل كانت مفيدة؟

المحلول

الرمز الذي يجب أن يعمل:

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);
            }
        }
    }
}

}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top