windows 8下基于DXGI的远程桌面共享 desktopduplication

yingzi566 2012-10-30 10:49:28
大侠们:
我现在要实现一个远程桌面共享的功能,在windows 8和windows server 2012环境下。Server端实现捕捉桌面和鼠标,将获取的信息发送到client端,在client端显示出来。
比较好的方法是用desktopduplication api,例子如下
http://code.msdn.microsoft.com/Desktop-Duplication-Sample-da4c696a/sourcecode?fileId=42782&pathId=1005492294
这个例子中 捕捉桌面和显示桌面是在同一台机器。主要用到directX11技术,完全不懂啊(才看了点基础,有了朦朦胧胧的印象。) 所以不能将获取桌面的流程和 显示桌面的流程区分开来,初始化设备和创建设备,adapter,output,devicecontext那些必须在获取桌面和显示桌面之前都进行吗?
紧急求助啊。
...全文
3293 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lshl124 2014-01-18
  • 打赏
  • 举报
回复
引用 9 楼 ADF1230 的回复:
楼主,你有实验这个方法吗,速度快不 ? 很传统的GDI/D3D截屏相比,有速度提升吗?
desktop duplication速度快很多,与传统完全不是一个等级的,
yingzi566 2013-10-30
  • 打赏
  • 举报
回复
引用 9 楼 ADF1230 的回复:
楼主,你有实验这个方法吗,速度快不 ? 很传统的GDI/D3D截屏相比,有速度提升吗?
没有实现
yingzi566 2013-10-30
  • 打赏
  • 举报
回复
to:lshl124 后来没做了,没搞定
Bahdisd 2013-10-10
  • 打赏
  • 举报
回复
这个问题还没遇到,先看看
神-气 2013-10-10
  • 打赏
  • 举报
回复
楼主,你有实验这个方法吗,速度快不 ? 很传统的GDI/D3D截屏相比,有速度提升吗?
lshl124 2013-08-01
  • 打赏
  • 举报
回复
我也在实现楼主的功能,楼主搞定了吗? 我遇到的问题是:客户机怎么获取服务器端的源数据,然后在客户机进行渲染?楼主现在是截图实现这种功能吗?能否分享一下你现在的方案
yingzi566 2012-11-06
  • 打赏
  • 举报
回复
还是没有进展啊
wyx100 2012-11-01
  • 打赏
  • 举报
回复
回复于:2012-10-31 18:27:47都开始WIN8了,自己机器不行啊。
要买台新电脑装WIN8了。
yingzi566 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
都开始WIN8了,自己机器不行啊。
要买台新电脑装WIN8了。
[/Quote]

噢。我有win8,不会directx。
PS:找不到在哪里给分,呃
看不见的裂痕 2012-10-31
  • 打赏
  • 举报
回复
都开始WIN8了,自己机器不行啊。
要买台新电脑装WIN8了。
yingzi566 2012-10-31
  • 打赏
  • 举报
回复
有兴趣研究的童鞋帮帮我啊
yingzi566 2012-10-30
  • 打赏
  • 举报
回复
一、获取的桌面信息,存放在_Out_ FRAME_DATA* Data结构中。
// FRAME_DATA holds information about an acquired frame 
//
typedef struct _FRAME_DATA
{
ID3D11Texture2D* Frame;
DXGI_OUTDUPL_FRAME_INFO FrameInfo;
_Field_size_bytes_((MoveCount * sizeof(DXGI_OUTDUPL_MOVE_RECT)) + (DirtyCount * sizeof(RECT))) BYTE* MetaData;
UINT DirtyCount;
UINT MoveCount;
} FRAME_DATA;

二、通过GetMouse()将_Out_ FRAME_DATA* Data结构中鼠标的信息放到了结构体PTR_INFO
// Holds info about the pointer/cursor 
//
typedef struct _PTR_INFO
{
_Field_size_bytes_(BufferSize) BYTE* PtrShapeBuffer;
DXGI_OUTDUPL_POINTER_SHAPE_INFO ShapeInfo;
POINT Position;
bool Visible;
UINT BufferSize;
UINT WhoUpdatedPositionLast;
LARGE_INTEGER LastTimeStamp;
} PTR_INFO;

三、显示桌面时,通过DrawMouse(_In_ PTR_INFO* PtrInfo)将鼠标信息再描绘出来。

关于鼠标的信息都存放在一个结构体中,还好理解。整个桌面的信息就没有头绪了。

19,466

社区成员

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

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