ITPub博客

首页 > IT基础架构 > 网络安全 > 动态改变网页内容(CHtmlView/CWebBrowser2/IE) (转)

动态改变网页内容(CHtmlView/CWebBrowser2/IE) (转)

原创 网络安全 作者:worldblog 时间:2007-12-09 10:36:51 0 删除 编辑
动态改变网页内容(CHtmlView/CWebBrowser2/IE) (转)[@more@]

很多时候,我们需要动态的修改网页的内容。

早先COM集中营曾有篇文章介绍过,源代码.NET/FileBBS/files/2001_9/T_642_1.zip">:http://263.csdn.net/FileBBS/files/2001_9/T_642_1.zip

其中基本代码如下:

void CMainFrame::OnChangehtml()
{
 
 IHTMLDocument2 *pHTMLDocument=NULL;
 IPersistStreamInit *pPSI=NULL;

 IStream *pStream=NULL;
 HGLOBAL  hHTMLText;

 if (!(pHTMLDocument = (IHTMLDocument2*)m_pHtmlView->m_browser.GetDocument()))//m_pHtmlView是CHtmlView或者webBrowser
 return;
 
 if (FAILED(pHTMLDocument->QueryInterface(&pPSI)))
 {

 return;
 } 

 pHTMLDocument->clear();
 pPSI->InitNew();

 LPCTSTR strText = m_psourceView->LockBuffer();
 Dword dwLength= strlen(strText);
 hHTMLText = GlobalAlloc(GMEM_FIXED, dwLength);
 memset(hHTMLText, 0, dwLength);
 memcpy(hHTMLText, strText, dwLength);
 m_pSourceView->UnlockBuffer();
  CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream);
 ULARGE_INTEGER libNewSize;
 libNewSize.QuadPart = dwLength;
 pStream->SetSize(libNewSize);
  pPSI->Load(pStream);

 pStream->Release();
 pPSI->Release(); 

}

网页内容倒是动态改变了,但你查看一下网页属性会发现,网页变成了:about:blank

很痛苦是吧,变成空白页了,呵呵~~

下面方法利用IHtmlDocument2的方法动态改变网页内容,而不改变网页属性

BOOL CXXXXView::put_bodyHtml(CString cs)
{
 IHTMLDocument2* pHtmlDoc2 = (IHTMLDocument2*)GetHtmlDocument();
 if( pHtmlDoc2)
 {
 HRESULT hr = S_OK;
 IHTMLElement *pBodyElement;
 hr=pHtmlDoc2->get_body( &pBodyElement); 
 if(pBodyElement!=NULL) 
 { 
 BSTR pbBody = cs.AllocSysString();
 hr=pBodyElement->put_innerHTML(pbBody); //类似的还有put_innerTEXT
 pBodyElement->Release(); 
 } 
 pHtmlDoc2->Release(); 
 if( hr==S_FALSE) return FALSE;
 else return TRUE;
 }
 else return FALSE;
 
}

到时候你只需要这样调用:put_BodyHtml("a string");


 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-990430/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    6241
  • 访问量
    2405600