• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 66次 | 进入软件测试论坛讨论

领测软件测试网

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

早先COM集中营曾有篇文章介绍过,源代码

其中基本代码如下:

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


 


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网