Windows7平台下机房屏幕广播软件设计

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:teachme
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:利用Windows7提供的桌面共享API,提出一个屏幕广播的解决方案。通过软件在机房的测试结果表明,屏幕广播的效果很好,可以满足教学的需要。
  关键词:Windows7;桌面共享API;屏幕广播
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)16-3789-02
  Abstract: By using desktop sharing API provided by Windows7, propose a solution for screen broadcast, software test results in lab show that, the effect of screen broadcast is good, it can meet the needs of teaching.
  Key words: Windows7; Desktop Sharing API; Screen Broadcast
  1 概述
  机房教学中很多时候都需要把教师电脑的屏幕内容共享至学生机,主要解决了投影仪教学中,后排学生看不清教学内容的问题,这对于一些需要实操演示的课程(如编程课程)具有重要意义。如果通过某种编程语言,调用传统的Windows底层的API接口来实现一个高效稳定的屏幕广播程序,需要解决的问题很多,包括:屏幕图像的获取、压缩,图像数据的分块及组合,数据网络传输效率等,所以开发的难度较大。从Windows Vista操作系统开始,微软的终端服务提供基于RDP(Remote Desktop Protocol)的远程桌面共享API。利用这些API中几个主要对象的方法,可以方便实现桌面共享,应用共享,以及远程控制等。该文以VS2008作为开发工具并结合该API,设计并实现了一个运行在Windows7下的机房屏幕广播软件。
  2 桌面共享API重要对象及方法
  屏幕广播所涉及到的API都是由RdpEncom.dll发布的,它是Win7系统自带的一个动态链接库文件。要想实现屏幕广播,有两个重要的对象需要创建,分别是IRDPSRAPISharingSession及IRDPSRAPIViewer。前者是COM对象,它实现了屏幕的共享。后者是一个ActiveX控件,它可以嵌入到运行于学生机的窗口程序中,实现屏幕广播的接收。屏幕广播的执行流程如下,首先由IRDPSRAPISharingSession创建一个RDPSession实例,然后订阅桌面共享API相关的一些事件及定义事件处理方法,如OnAttendeeConnected,OnAttendeeConnected,OnControlLevelChangeRequest等,分别表示有客户端连接,断开及控制级别改变请求的事件。在RDPSession执行Open方法之后,屏幕共享开启,此时还需要创建一个邀请(Invitation),邀请里面包括了连接串,组名,密码等信息。客户端只有获取这个邀请之后,才能连接到进行屏幕共享的主控端,进而接收到屏幕广播。邀请的产生可以通过IRDPSRAPIInvitationManager接口的CreateInvitation方法产生,该方法的参数如下所示。
  HRESULT CreateInvitation(
  [in] BSTR bstrAuthString,
  [in] BSTR bstrGroupName,
  [in] BSTR bstrPassword,
  [in] long AttendeeLimit,
  [out] IRDPSRAPIInvitation **ppInvitation
  );
  其中bstrAuthString表示授权串,对于每个屏幕广播会话都是唯一的。bstrGroupName实现客户端的分组,bstrPassword表示会话的密码(可以为空),AttendeeLimit表示接收端的最大个数。ppInvitationg指向另一个邀请串,一般不会用到。下面是一个邀请产生实例,使用的编程语言是C#。
  IRDPSRAPIInvitation pInvitation= m_pRdpSession.Invitations.CreateInvitation("myauthstring", "Group1", "", 50);
  这个实例产生了一个授权串为myauthstring,组名为Group1,密码为空,最大客户端为50的邀请。客户端获得这个邀请后,再调用IRDPSRAPIViewer的Connect方法,即可连接到屏幕广播主控端,从而接收到屏幕广播。
  3 屏幕广播软件的实现
  根据前面的分析,屏幕广播软件的实现应该包括教师端及学生端。教师端负责屏幕广播的控制,学生端则接收来自教师端的屏幕广播。为了确保不同机房同时使用时不产生干扰,可以为每个学生机设置一个频道号,学生机只接收与自己频道号一致的教师端广播。屏幕广播采用UDP广播的方式进行,教师端启用屏幕广播后,首先生成一个邀请串,然后把自己的频道号与邀请串联结成一个字符串,最后通过UDP广播发送。学生机获得这个UDP数据包后,提取里面的字符串内容,分解出频道号及邀请串,然后与自己的频道号进行比较,只有在频道号一致的情况下,才通过邀请串连接到教师机,接收屏幕广播。下面是教师端的主要代码:
  m_pRdpSession = new RDPSession();
  m_pRdpSession.OnAttendeeConnected =
  new_IRDPSessionEvents_OnAttendeeConnectedEventHandler(OnAttendeeConnected);   m_pRdpSession.OnAttendeeDisconnected =
  new_IRDPSessionEvents_OnAttendeeDisconnectedEventHandler(OnAttendeeDisconnected);
  m_pRdpSession.OnControlLevelChangeRequest =
  new_IRDPSessionEvents_OnControlLevelChangeRequestEventHandler(OnControlLevelChangeRequest);
  m_pRdpSession.Open();
  IRDPSRAPIInvitation pInvitation = m_pRdpSession.Invitations.CreateInvitation("WinPresenter","PresentationGroup", "", 5);
  string invitationString = pInvitation.ConnectionString;
  if(ChannelNo<=9)
  strChannelNo="0" ChannelNo.ToString();
  else
  strChannelNo=ChannelNo.ToString();
  string strDataPacket = strChannelNo invitationString;
  udp_sender = new UdpClient();
  Byte[] buffer = System.Text.Encoding.ASCII.GetBytes(strDataPacket);
  udp_sender.Send(buffer, buffer.Length, iep);
  对于客户端,除了用UDPClient接收并处理来自教师端的邀请串,然后就是调用IRDPSRAPIViewer的Connect方法连接至教师端,例如下面语句实现了连接到教师端的功能:
  pRDPViewer.Connect(invitestr, "viewer1", "");
  其中pRDPViewer是控件的名字。在使用VS2008创建工程时,注意要添加对RdpEncom.dll引用。
  4 小结
  本文利用微软提供的桌面共享API,提出了一个运行在Windows7平台下的屏幕广播解决方案,通过软件在机房中的使用测试,屏幕广播的效果不错,广播延时很小,图像质量也可以接受。而整个开发过程却相当简单及高效,这为我们提供了开发屏幕广播软件的新思路。
  参考文献:
  [1] 陈绍钧.屏幕广播技术在演示教学系统中的应用[J].实验室科学,2008(8):144-146.
  [2] 张军翔,刘兴红.屏幕广播教学系统在计算机类课程实验教学中的应用研究[J].湖北师范学院:自然科学版,2013,33(4):100-104.
其他文献
个人被强制赋课了加入社会保险的义务,企业等用人单位也被强制赋课了缴纳一定比例的社会保险费的义务。强制保险,恰恰是权利保障的绝好途径。
森林能奉献木材和坚果;草场可以围猎放牧;沙漠里储藏着丰富的石油……在实用主义者看来,除了芦花水鸟给了文人骚客吟咏的情趣外,湿地实在是一无用处的。就连武侠小说里,泥沼里也常
摘要:近年来,位置隐私保护技术成为学术界研究的热点。文章提出一种基于预测位置的位置隐私保护方案。该方案当用户运行速度较高时采用预测位置作为用户查询的位置信息,以解决高速运动时由于查询时间引起的查询结果与需求结果不符的问题。实验表明,预测位置模型适用于用户运动速度不同的情况,抗攻击能力更强,服务质量更好。  关键词:预测位置;位置隐私;基于位置的服务;k-匿名;移动用户  中图分类号:TP301 文
<正> 白血病是原发于造血组织的恶性疾病,属扩散性癌症,因此其他组织可被白血病细胞浸润破坏。临床上可见到造血组织以外的浸润并发症,如中枢神经系统、生殖泌尿系统、肺与胸
瑞典一家名为People of Lava的厂商推出了基于Android的全高清智能电视——Scandinavia。将Android系统引入到电视机中.可以更好的推动智能家电的发展。特别是Android系统中内
据商务部数据.2009年上半年.欧盟对中国出口总额为374亿欧元.同比下降5.3%:从中闫进口1027亿欧元.同比下降8.5%:由于同比降幅小于欧盟出口、进口总额同比降幅。对华出口占欧盟出口总额
只有深度的阅读、有思想意义的人文阅读才会使我们不忘却历史的记忆,使我们的心灵永远充满诗意,使我们的思考中丰沛着智慧和哲理,永远坚守我们的文化感受性、道德同情心和对
行业的进步,主要依靠的是企业。企业积级参与国家标准、国际标准的制定,拿到的是市场竞争的发球权。
Gartner目前预测,2009年全球PC出货量将同比下滑2%,好于此前预测的同比下滑6%;2010年出货量将同比增长12.6%,主要由于移支PC销售获得动力,以及台式PC销售恢复增长。但与此同时,预计PC定