通过IShellWindows接口找到对应的IE窗口,从而获得IWebBrowser2接口。
代码如下:
CComPtr<IShellWindows> spShellWin;
HRESULT hr = spShellWin.CoCreateInstance(CLSID_ShellWindows);
CComPtr<IDispatch> spDispIE;
hr = spShellWin->Item(CComVariant(i), &spDispIE);
...
//当该窗口是指定的ie窗口时,获得IWebBrowser2
CComQIPtr<IWebBrowser2> spBrowser = spDispIE;如何通过IWebBrowser2接口来将该IE窗口打开的网页内容实现另存为(网页,全部*.htm;*.html)操作。
就是将网页保存为带css样式的html文件Internet ExplorerCSSHTML
代码如下:
CComPtr<IShellWindows> spShellWin;
HRESULT hr = spShellWin.CoCreateInstance(CLSID_ShellWindows);
CComPtr<IDispatch> spDispIE;
hr = spShellWin->Item(CComVariant(i), &spDispIE);
...
//当该窗口是指定的ie窗口时,获得IWebBrowser2
CComQIPtr<IWebBrowser2> spBrowser = spDispIE;如何通过IWebBrowser2接口来将该IE窗口打开的网页内容实现另存为(网页,全部*.htm;*.html)操作。
就是将网页保存为带css样式的html文件Internet ExplorerCSSHTML
IWebBrowser2* m_pWebBrowser2; //浏览器指针
//取得所有内容
HRESULT GetInnerHTML(CString &strContext)
{
if (m_pWebBrowser2)
{
CComPtr<IHTMLDocument2> pHtmlDoc2 = NULL;
HRESULT hr = m_pWebBrowser2->get_Document((IDispatch**)&pHtmlDoc2);
if(SUCCEEDED(hr) && pHtmlDoc2)
{
CComPtr<IHTMLElement> pBody = NULL;
hr = pHtmlDoc2->get_body(&pBody);
if (SUCCEEDED(hr) && pBody)
{
BSTR pbBodyHtml = NULL;
hr = pBody->get_innerHTML(&pbBodyHtml); //类似的还有put_innerTEXT //put_innerHTML
strContext = pbBodyHtml;
if(pbBodyHtml)
{
::SysFreeString( pbBodyHtml );
}
return S_OK;
}
}
}
return S_FALSE;
}
IWebBrowser2* m_pWebBrowser2; //浏览器指针
//取得所有内容
HRESULT GetInnerHTML(CString &strContext)
{
if (m_pWebBrowser2)
{
CComPtr<IHTMLDocument2> pHtmlDoc2 = NULL;
HRESULT hr = m_pWebBrowser2->get_Document((IDispatch**)&pHtmlDoc2);
if(SUCCEEDED(hr) && pHtmlDoc2)
{
CComPtr<IHTMLElement> pBody = NULL;
hr = pHtmlDoc2->get_body(&pBody);
if (SUCCEEDED(hr) && pBody)
{
BSTR pbBodyHtml = NULL;
hr = pBody->get_innerHTML(&pbBodyHtml); //类似的还有put_innerTEXT //put_innerHTML
strContext = pbBodyHtml;
if(pbBodyHtml)
{
::SysFreeString( pbBodyHtml );
}
return S_OK;
}
}
}
return S_FALSE;
}
yfqvip
满衣兄 不过你的方法是获取DOM对象里面的html内容,里面的内容已经没有css样式了。这样的话获得的html内容太大。
请问有没有其他方式实现IE浏览器的另存为(网页,全部*.htm;*.html)的功能?
http://bbs.csdn.net/topics/10450810
http://bbs.csdn.net/topics/10294635
http://bbs.csdn.net/topics/70168367
yfqvip
满衣兄 你的方法只能获取body里面的内容。
请问有没有方法获取整个网页里面的内容。
相当于IE窗口的 查看->源文件 里面的内容。谢谢!