這裡介紹如何用程序的方法獲得WebBrowser控件中的HTML的源代碼,並可以通過修改源代碼內容來修改頁面內容(注意:不是顯示一個新的頁面)。
首先要加入WebBrowser控件,加入控件的方面我就不說了。獲得源代碼方法有兩種:
一、方法1(嚴格說,這個方法只不過是調用WebBrowser自己的菜單命令"查看源文件而已",並非我們所希望的)
關鍵代碼:
#include "mshtmcid.h"
void CHtmlView::OnMethod1()
{
CWnd* pWnd = NULL;
CWnd* pWndShell = m_browser.GetWindow(GW_CHILD); // get the webbrowser window pointer
if (pWndShell)
{
pWnd = pWndShell->GetWindow(GW_CHILD); //get the child window pointer
}
if (pWnd != NULL)
{
WPARAM wParam = MAKEWPARAM(IDM_VIEWSOURCE, 1); //convert to unsigned 32 bit value and pass it to wparam
pWnd->SendMessage(WM_COMMAND, wParam, (LPARAM)this->m_hWnd); //cool send a message to retreive the source.
}
}
二、方法2
原理在於取得IPersistStreamInit接口指針,然後把網頁寫到IStream流中去。
關鍵代碼:
#include "mshtml.h"
//在SourceView中填寫HtmlView中網頁的源程序
void CMainFrame::OnMethod2()
{
IHTMLDocument2 *pHTMLDocument=NULL;
IPersistStreamInit *pPSI=NULL;
IStream *pStream=NULL;
HGLOBAL hHTMLText;
if (!(pHTMLDocument = (IHTMLDocument2*)m_pHtmlView->m_browser.GetDocument()))
return;
if (FAILED(pHTMLDocument->QueryInterf