社区
HTML/XML
帖子详情
关于IViewObject2接口的问题
zipzipzipzip
2006-11-21 09:55:50
我使用下面的代码,想得到IViewObject2的接口,但是失败了,hr = E_NOINTERFACE...
那位高手能告诉我为什么,应该如何正确得到?
hr = m_pBrowser->QueryInterface(IID_IViewObject2,
(void**)&pViewObject);
...全文
395
11
打赏
收藏
关于IViewObject2接口的问题
我使用下面的代码,想得到IViewObject2的接口,但是失败了,hr = E_NOINTERFACE... 那位高手能告诉我为什么,应该如何正确得到? hr = m_pBrowser->QueryInterface(IID_IViewObject2, (void**)&pViewObject);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zipzipzipzip
2006-11-21
打赏
举报
回复
代码也是从网上找到的:
IHTMLDocument3* pDocument3 = NULL;
IHTMLDocument2* pDocument = NULL;
IHTMLElement2* pElement2 = NULL;
IHTMLElement* pElement = NULL;
IViewObject2* pViewObject = NULL;
IDispatch* pDispatch = NULL;
IDispatch* pWebBrowserDisp = NULL;
HRESULT hr;
long bodyHeight;
long bodyWidth;
long rootHeight;
long rootWidth;
long height;
long width;
hr = m_pBrowser->get_Document(&pDispatch);
if (FAILED(hr))
return true;
hr = pDispatch->QueryInterface(IID_IHTMLDocument2,
(void**)&pDocument);
if (FAILED(hr))
return true;
hr = pDocument->get_body(&pElement);
if (FAILED(hr))
return true;
hr = pElement->QueryInterface(IID_IHTMLElement2, (void**)&pElement2);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollHeight(&bodyHeight);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollWidth(&bodyWidth);
if (FAILED(hr))
return true;
hr = pDispatch->QueryInterface(IID_IHTMLDocument3,
(void**)&pDocument3);
if (FAILED(hr))
return true;
hr = pDocument3->get_documentElement(&pElement);
if (FAILED(hr))
return true;
hr = pElement->QueryInterface(IID_IHTMLElement2, (void**)&pElement2);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollHeight(&rootHeight);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollWidth(&rootWidth);
if (FAILED(hr))
return true;
width = bodyWidth;
height = rootHeight > bodyHeight ? rootHeight : bodyHeight;
hr = pDispatch->QueryInterface(IID_IViewObject2, (void **)&pViewObject);
if (FAILED(hr))
return true;
HDC hdcMain = GetDC( m_hWnd );
HDC hdcMem = CreateCompatibleDC(hdcMain);
HBITMAP hBitmap = CreateCompatibleBitmap(hdcMain, width, height);
SelectObject(hdcMem, hBitmap);
RECTL rcBounds = { 0, 0, width, height };
hr = pViewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, hdcMain,
hdcMem, &rcBounds, NULL, NULL, 0);
if (SUCCEEDED(hr))
{
CImage image;
image.Create(width, height, 24);
CImageDC imageDC(image);
::BitBlt(imageDC, 0, 0, width, height, hdcMem, 0, 0, SRCCOPY);
image.Save(m_strDestFilename);
}
pViewObject->Release();
lion_wing
2006-11-21
打赏
举报
回复
你后面的代码贴出来看看
zipzipzipzip
2006-11-21
打赏
举报
回复
试了,还是老样子,页面已经出来了,可还是不能画出来
lion_wing
2006-11-21
打赏
举报
回复
try it like this:
IWebBrowser2* m_pBrowser;
CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, ( void** ) &m_pBrowser );
pBrowser->put_Visible(VARIANT_TRUE);
CComVariant d = "about:blank";
CComVariant t = 2;
CComVariant v = "";
CComVariant p = "";
CComVariant h = "";
pBrowser->Navigate2(&d,&t,&v,&p,&h);
IDispatch *pIDispatch = NULL;
m_pBrowser->get_Document(&pIDispatch);
pIDispatch->QueryInterface(IID_IViewObject2, (void **)&pIViewObject);
zipzipzipzip
2006-11-21
打赏
举报
回复
用了楼上的兄台的方法的确可以取到,但是@err得到错误 14000:申请的节不存在于激活上下文。
之后hr = pViewObject->Draw(DVASPECT_CONTENT, 1, NULL, NULL, hdcMain, hdcMem, &rcBounds, NULL, NULL, 0); 也失败了,hr= 0x800703f0 试图引用不存在的令牌。
不知道是什么原因,郁闷了。。。
lion_wing
2006-11-21
打赏
举报
回复
IWebBrowser2* m_pBrowser;
CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, ( void** ) &m_pBrowser );
IDispatch *pIDispatch = NULL;
m_pBrowser->get_Document(&pIDispatch);
pIDispatch->QueryInterface(IID_IViewObject2, (void **)&pIViewObject);
蒋晟
2006-11-21
打赏
举报
回复
Internet Explorer does not support this interface.
zipzipzipzip
2006-11-21
打赏
举报
回复
不使用MFC和ATL
zipzipzipzip
2006-11-21
打赏
举报
回复
IWebBrowser2* m_pBrowser;
CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, ( void** ) &m_pBrowser );
蒋晟
2006-11-21
打赏
举报
回复
is m_pBrowser an ActiveX control?
zipzipzipzip
2006-11-21
打赏
举报
回复
顶一下
网页生成图片Delphi源码
网页生成图片的Delphi源码,使用
IView
Object
接口
C# 网页照相机,网页抓屏工具源代码
C# 网页照相机,网页抓图程序,VS2008环境下开发,作者:随飞。从 .Net 2.0 的 System.Windows.Forms.Dll 库提取,ActiveX 组件快照类,AcitveX 必须实现
IView
Object
接口
,更多信息请参阅源代码。
C#实现将网页保存成图片的网页拍照功能
本文实例主要实现了网页照相机程序的功能。C#实现将网页保存成图片格式,简单实现网页拍照,主要是基于ActiveX 组件的网页快照类,AcitveX 必须实现
IView
Object
接口
。因此读者完全可扩展此类将其用于你的C#软件项目中。在此特别感谢作者:随飞提供的代码。 主要功能代码如下: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes;
通过
IView
Object
接口
,取浏览器的图象,实现SNAP
今天又见到snap实现的文章,看来对此感兴趣的人挺多的.实现这个功能确实很'眩',我也来做一个把玩一下.我的做法不是 Control.DrawToBitmap ,而是直接QueryInterface 浏览器Com对象的
IView
Object
接口
,用它实现的Draw方法,画到图象上.首先定义
IView
Object
的
接口
声名,如下: IVew
Object
接口
声明usingSystem;usin...
网页生成图片代码
IView
Object
接口
实现
源文件下载地址 http://download.csdn.net/source/1499743
HTML/XML
3,055
社区成员
8,066
社区内容
发帖
与我相关
我的任务
HTML/XML
VC/MFC HTML/XML
复制链接
扫一扫
分享
社区描述
VC/MFC HTML/XML
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章