如何捕获IE的屏幕,大家讨论

wqvbka123 2010-01-19 02:27:53
加精
本人打算根据http://www.codeproject.com/KB/IP/htmlimagecapture.aspx 的方法改造成捕抓IE窗口的屏幕,然后保存图片,现在已经可以根据窗口句柄得到 IHTMLDocument2 然后通过它获获得 IHTMLElementRender 总是失败。 返回结果是E_NOINTERFACE

代码如下:
HRESULT hr = pElement->QueryInterface(IID_IHTMLElementRender, (void **) &pRender);
//hr此时总为 E_NOINTERFACE
if (pRender == (IHTMLElementRender *) NULL)
return FALSE;
...全文
4649 134 打赏 收藏 转发到动态 举报
写回复
用AI写文章
134 条回复
切换为时间正序
请发表友善的回复…
发表回复
efabc 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mic_lee2000 的回复:]
下面的代码肯定能用,也一定好用:
// 创建WebBrowser屏幕快照
HBITMAP CWebBrowser::CreateSnapShot()
{
IHTMLDocument2* pDoc = this->get_Document();
if(NULL == pDoc)
return NULL;

CComPtr <IHTMLDocument2> spDoc(pDoc);
pDoc->Release();
if(NULL == spDoc)
return NULL;

    HRESULT hr;

CComPtr <IViewObject> spViewObject = NULL;
hr = spDoc->QueryInterface(IID_IViewObject,(void **)&spViewObject);
if(FAILED(hr) || NULL == spViewObject)
return NULL;

// get WebBrowser device context
HDC wndDC = ::GetWindowDC(this->m_hWnd);
HDC dc = ::CreateCompatibleDC(wndDC);

RECT rect;
GetWindowRect(&rect);
HBITMAP hBitmap = ::CreateCompatibleBitmap(wndDC,rect.right - rect.left,rect.bottom - rect.top);
if(NULL == hBitmap)
return NULL;

Gdiplus::Bitmap* bmp = Gdiplus::Bitmap::FromHBITMAP(hBitmap,NULL);
HGDIOBJ hobj = ::SelectObject(dc,(HGDIOBJ)hBitmap);  // Select the Snapshot bitmap object;hobj

try
{
::Gdiplus::Graphics* g = ::Gdiplus::Graphics::FromHDC(dc);
g->Clear(Gdiplus::Color(255,255,255));
delete g;
g = NULL;

RECTL rectl;
rectl.top = 0;
rectl.left = 0;
rectl.right = rect.right - rect.left;
rectl.bottom = rect.bottom - rect.top;

DVASPECTINFO info;
info.cb = sizeof(info);
info.dwFlags = DVASPECTINFOFLAG_CANOPTIMIZE;
// draw screen snapshot.
hr = spViewObject->Draw(DVASPECT_CONTENT,-1,
&info,NULL,NULL,dc,&rectl,&rectl,NULL,0);
}
catch(...)
{
  ATLTRACE2(atlTraceCOM,2,_T("create a webbrowser thumb failed...."));
}

::SelectObject(dc,hobj);
::DeleteDC(dc);

return hBitmap;
}
[/Quote]


这个代码,怎么实现保存图片. ?
t86591648 2010-02-02
  • 打赏
  • 举报
回复
MARK
xiaolong0211 2010-01-27
  • 打赏
  • 举报
回复
看看!~~
kind_yu 2010-01-27
  • 打赏
  • 举报
回复
飘过。。。。。喵喵
lt5225262 2010-01-27
  • 打赏
  • 举报
回复
建议将该贴加精
b3366450 2010-01-27
  • 打赏
  • 举报
回复
学习一下!!!!!!!!!!
my6491319 2010-01-27
  • 打赏
  • 举报
回复
学习
CXL_1989 2010-01-26
  • 打赏
  • 举报
回复
听说每天回帖即可获得10分可用分。
pop6young 2010-01-26
  • 打赏
  • 举报
回复
看不懂,顶把
zxl0126 2010-01-26
  • 打赏
  • 举报
回复
学习学习
frankliu_hx 2010-01-26
  • 打赏
  • 举报
回复
如何使用vb控制谷歌浏览器呢,请大家帮忙
frankliu_hx 2010-01-26
  • 打赏
  • 举报
回复
我也有同样的问题
gable800 2010-01-26
  • 打赏
  • 举报
回复
学习中
byboy8 2010-01-26
  • 打赏
  • 举报
回复
学习学习
j260749883 2010-01-26
  • 打赏
  • 举报
回复
顶起
litchi0709 2010-01-26
  • 打赏
  • 举报
回复
学习学习了额
xy818 2010-01-26
  • 打赏
  • 举报
回复

skyaspnet 2010-01-26
  • 打赏
  • 举报
回复
学习
xyk_1986 2010-01-25
  • 打赏
  • 举报
回复
高手啊。。帮顶下。。
zhuoyue 2010-01-25
  • 打赏
  • 举报
回复
mark
加载更多回复(109)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧