有关MirrorDriver截屏问题

yangguoyyd 2011-09-13 08:58:42
HDC hdc = CreateDC("DISPLAY", _T("Microsoft Mirror Driver"), NULL, NULL);

HDC memDC = ::CreateCompatibleDC(hdc);
HBITMAP hBitmap = ::CreateCompatibleBitmap(hdc, pThis->m_cxClient, pThis->m_cyClient);
HBITMAP hOldBitmap = (HBITMAP)::SelectObject(memDC,hBitmap);
::BitBlt(memDC, 0, 0, pThis->m_cxClient, pThis->m_cyClient, hdc, 0, 0, SRCCOPY);

hBitmap = (HBITMAP)::SelectObject(memDC, hOldBitmap);

::DeleteObject(hOldBitmap);
::ReleaseDC(::GetDesktopWindow(), hdc);
::DeleteDC(memDC);

装了Mirror Driver驱动之后,用上述代码截屏得到一个HBITMAP,这个好像就是真个屏幕,但是不知道怎么得到变化的部分,希望高手指点一下,谢了
...全文
594 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
edgelee 2014-03-05
  • 打赏
  • 举报
回复
Mirror Driver 是微软自带的吗?还是有 MirrorDriver 自己的SDK
4lan 2011-09-16
  • 打赏
  • 举报
回复
不得不说,你用mirror 仍然使用bitblt。。。。这是典型的大炮打蚊子
mirror高速在 直接输出图像像素。像对显卡操作一样操作显示设备。但是比操作显卡快nnnn倍。
在内核层面截获了图像像素。

mirror driver是一个通称,而不是一个具体的驱动。
有的mirror驱动仅仅输出图像像素,然后只能bitblt之类的用dc来操作。这是非常慢的(相对)。

如果在驱动层面,可以写个mirror驱动,利用截获到的像素数据,进行一些处理,就非常快速了。

dfmirage 这个mirror驱动不错,可以输出实时的像素指针,可以获取图像变化的rect。都提供了api的。
官方网站有 帮助文档。api都在里面。自己调用就行
rageliu 2011-09-14
  • 打赏
  • 举报
回复
驱动不熟的说.
问下lz,mirror是会禁用硬件加速的,是吗

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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