我在VC ++中创建了一个BHO,参考链接
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);
}
}
}
但标签没有插入我的网页。
出了什么问题,请指出我错过了什么
谢谢, Ramachandran的。
答案 0 :(得分:3)
应该有效的代码:
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);
}
}
}
}
}