移除遮挡的应用共享的制作方法

文档序号:7612448阅读:247来源:国知局
专利名称:移除遮挡的应用共享的制作方法
技术领域
本发明一般地涉及远程呈现会话,更具体地涉及应用共享。
背景技术
虽然计算机曾经一度是孤立的并且与其他计算机具有最小的或很少的交互,但是现在计算机通过局域网(LAN)、广域网(WAN)、拨号连接等等与各种各样的其他计算机进行交互。随着因特网的广泛增长,计算机之间的连接已经变得更加重要并且已经开发了许多新的应用程序和技术。大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变了许多人工作、交互、通信、以及玩乐的方式。网络通信的一种日益增加的流行形式一般被称为远程呈现系统,其能使用诸如远程桌面协议(RDP)、独立计算体系结构(ICA)、以及其他协议来与远程客户机共享桌面和其他应用。这样的计算系统通常将来自客户机的键盘按压和鼠标点击或选择传送到服务器, 通过网络连接(例如,因特网)将屏幕更新转播回其他方向。由此,当实际上仅仅向客户机设备发送如在服务器侧上出现的应用的屏幕截图时,用户具有好像他们的机器正在本地地执行应用的体验。这些远程呈现会话技术中有被称为应用共享或窗口共享的一类技术。这些技术允许第一计算机处的第一用户与第二计算机处的第二用户共享一个或多个窗口。在许多情况中,第一用户不想要与第二用户共享其整个桌面,而仅共享这些特定共享的窗口(下文中称为“共享窗口”)。此外,当非共享窗口部分阻挡或遮挡共享窗口时也可能有问题。就第二用户而言该非共享窗口可引起混乱,第二用户不能看到共享窗口的全部而可能看到不完整的一些窗口。以往的用于共享窗口的技术基于单独地从呈现的计算机桌面提取窗口,然后根据计算机桌面确定其什么部分对应于共享窗口或应用,接下来覆盖非共享区域(用不透明图案)以使得桌面该部分的内容不可见。即,这些技术从桌面的内容开始,从桌面中隐去非共享区域。这些技术不允许显示共享窗口中在桌面上被遮挡的部分(至少部分被另一窗口或其它图形对象覆盖)或向受者显示共享和非共享窗口两者的替换表示(诸如非共享窗口存在,且这是共享窗口的一部分被遮挡的原因)。

发明内容
因此,提供移除遮挡的窗口共享的技术将是一种改进。本发明的技术在可能时从共享的窗口中移除遮挡,且在这样的遮挡不可被移除时,向共享窗口的观看者提供这些遮挡存在的视觉指示。在一实施例中,生成合成位图——尺寸为其中要共享至少一个窗口的计算机桌面的空白位图。合成位图包括共享遮挡区域——合成位图的这些部位对应于被遮挡的共享窗口中不能被确定的各部分(窗口的该部位的图形表示未存储在可访问存储器区域中)—— 以及共享非遮挡区域——合成位图的这些部分对应于共享窗口中可被确定的部分。然后通过一次一个窗口地将这些共享窗口的全部或一部分复制到桌面来构建该合成位图以构成被发送给客户机的共享窗口。遍历桌面的窗口来确定这些窗口的ζ次序(每一窗口相对于每一其它窗口的深度;两个窗口何时占据相同的坐标、哪一窗口将遮挡另一窗口)。然后,从最后面的窗口(即具有最大ζ深度的窗口)开始,检查该窗口来确定桌面上该窗口占据的位置(包括窗口的任何被遮挡部分)、该窗口是否是共享的以及该窗口是否与另一窗口相交。基于这些判断,会发生以下情况如果该窗口是共享的并且是分层的(当窗口被指定为分层的,则整个窗口被存储在与存储桌面的存储器区域分开的存储器区域中)。它从存储其的窗口缓冲区(与存储桌面的存储器分开)被复制到合成图。如果窗口是共享的但不是分层的,则从存储桌面的存储器将其复制到合成位图。如果窗口不是共享的,且其与共享的被遮挡区域相交,则将一伪窗口添加到合成位图。该伪窗口例如可以是具有该非共享窗口的尺寸但没有该窗口的内容的窗口(因为该窗口将不被共享)。如果窗口不是共享的,且其与未被遮挡的共享区域相交,则将对该相交的指示添加到合成位图。例如,该部位可与位图的其余部分不同地蒙上阴影,以向观看者传达该部位在第一用户的桌面上被覆盖的信息。如果窗口不是共享的,且不与被遮挡的共享区域或未被遮挡的共享区域相交,则可忽略该窗口。在对每一窗口完成这些操作之后,合成位图可被编码并发送到第二计算机以便显
示共享窗口。尽管此处所述的主要实施例讨论位图,但本领域的技术人员可以理解,这些技术可应用于各种不同格式的图像。本发明技术的优点涉及窗口同步。当窗口在桌面上诸如经由来自用户的鼠标输入而移动时,所存储的窗口位置将变得与窗口的图形显示稍微有所不同步。即,系统可能已经确定窗口的位置与它在桌面上实际显示的位置稍有不同。所以,使用以往的技术,如果窗口快速移动并变得不同步,则对客户机发送的是桌面的错误部位——桌面上曾包含窗口但现在仅包含窗口的一部分的部位。桌面的这一错误部位还可包括未被共享的窗口。与此相反, 如果本发明的技术出现不同步问题,它可导致窗口在错误的位置向客户机显示而非显示非共享窗口的一部分。本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是被配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。


参考附图来进一步描述用于移除遮挡的窗口共享的系统、方法和计算机可读存储介质,附图中
图1示出了可在其中体现了在此描述的技术的示例性通用计算环境。图2描绘了其中可实现本发明的各方面的示例服务器。图3A描绘了其中未实现本发明的技术的被遮蔽的共享窗口。图;3B描绘了其中实现本发明的技术的图3A的被遮蔽的共享窗口。图4A描绘了包括多个窗口的计算机桌面,其中要共享多个窗口的子集。图4B描绘了使用本发明的技术的图4A的计算机桌面的共享窗口。图5描绘了移除遮挡的窗口共享的示例操作过程。
具体实施例方式图1是在其中可实现在此描述的技术的通用计算设备的框图。计算系统环境120 只是合适的计算环境的一个示例,并且不旨在对所公开的主题的使用范围或功能提出任何限制。也不应该将计算环境120解释为对示例性操作环境120中示出的任一组件或其组合有任何依赖性或要求。在某些实施方式中,所描绘的各种计算元素可包括被配置成实例化本公开的各具体方面的电路。例如,本公开中使用的术语电路可包括被配置成执行固件或开关的功能的专用硬件组件。在其他示例实施方式中,术语电路可包括由实施可用于执行功能的逻辑的软件指令配置的通用处理单元、存储器等。在电路包括硬件与软件组合的示例实施方式中,实现者可编写实施逻辑的源代码且该源代码可被编译成可由通用处理单元处理的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎没有差别的地步,因而选择硬件或是软件来实现具体功能是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。因此,对于硬件实现还是软件实现的选择是设计选择并留给实现者。计算机141通常包括各种计算机可读介质。计算机可读介质可以是可由计算机 141访问的任何可用介质,并且包括易失性与非易失性介质、可移动与不可移动介质两者。 系统存储器122包括易失性和/或非易失性存储器形式的计算机可读存储介质,如只读存储器(ROM) 123和随机存取存储器(RAM) 160。基本输入/输出系统IM(BIC)Q包括如在启动时帮助在计算机141内的元件之间传输信息的基本例程,它通常储存在ROM 123中。RAM 160通常包含处理单元159可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出操作系统125、应用程序126、其他程序模块127和程序数据128。计算机141还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器 138,从可移动、非易失性磁盘IM中读取或向其写入的磁盘驱动器139,以及从诸如⑶ROM 或其他光学介质等可移动、非易失性光盘153中读取或向其写入的光盘驱动器140。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动 138通常由诸如接口 134等不可移动存储器接口连接至系统总线121,而磁盘驱动139和光盘驱动140通常由诸如接口 135等可移动存储器接口连接至系统总线121。以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算机141提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱
6动器138被示为存储操作系统158、应用程序157、其他程序模块156和程序数据155。注意,这些组件可以与操作系统125、应用程序126、其他程序模块127和程序数据1 相同, 也可以与它们不同。操作系统158、应用程序157、其他程序模块156和程序数据155在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘151和定点设备152(通常被称为鼠标、跟踪球或触摸垫),向计算机141输入命令和信息。其他输入设备(未示出)可以包括麦克风、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其他输入设备通常由耦合至系统总线的用户输入接口 136连接至处理单元 159,但也可以由其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB),来连接。监视器142或其他类型的显示设备也经由接口,诸如视频接口 132,连接至系统总线 121。除监视器以外,计算机也可以包括其它外围输出设备,诸如扬声器144和打印机143, 它们可以通过输出外围接口 133连接。计算机141可使用至一个或多个远程计算机,如远程计算机146的逻辑连接在网络化环境中操作。远程计算机146可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机141所描述的元件,尽管在图1中仅示出了存储器存储设备147。图1中所示的逻辑连接包括局域网(LAN) 145和广域网(WAN) 149,但也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机141通过网络接口或适配器137连接至LAN 145。当在WAN联网环境中使用时,计算机141通常包括调制解调器150或用于通过诸如因特网等WAN 149建立通信的其他装置。可以是内置或外置的调制解调器150可被连接到系统总线121。在网络化环境中,关于计算机141所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而非限制,图1示出远程应用程序148驻留在存储器设备 147上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。现在参照图2,其一般描绘其中可实现本公开的各方面的示例环境。本领域技术人员可理解,示出图2所描绘的示例元素是为了提供用于描述本公开的操作框架。因此,在一些实施例中,每个环境的物理布局可取决于不同的实现方案而有所不同。因此,该示例操作框架将仅被视为说明性的且不以任何方式限制权利要求的范围。本领域技术人员还可理解,以下讨论是介绍性的,且图2描绘的元素在由图5描绘的操作过程的讨论中更详细地描述。一般地,图2描绘了可被配置成包括本公开的各方面的服务器环境的高级概览。 参考附图,描绘了可包括被配置成实现包括窗口共享会话在内的远程呈现会话连接的电路的服务器204。在所描绘的示例中,服务器204可被配置成生成用于连接客户机的一个或多个会话,诸如会话1到N(其中N是大于2的整数)。简言之,在本公开的示例实施例中,会话一般可包括由配置成与服务器204的内核214交互的多个子系统(例如,软件代码)实现的操作环境。例如,会话可包括实例化诸如桌面窗口之类的用户界面的进程、跟踪该窗口内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等。会话可由服务器204在逐个用户的基础上生成,例如在服务器204通过网络连接接收来自客户机201的连接请求时由服务器204生成。一般而言,连接请求首先可由传输逻辑210处理,传输逻辑210例如可由服务器204的电路实现。在一些实施例中,传输逻辑210可包括网络适配器、可被配置成接收连接消息并将其转发给引擎212的固件和软件。如图2所示, 在一些实施例中,传输逻辑210可包括每个会话的协议栈实例。一般而言,每个协议栈实例可被配置成将用户界面输出路由到客户机,以及将从客户机接收到的用户输入路由到与其会话相关联的会话核心M4。继续图2的一般性描述,在本发明的一些示例实施例中,引擎212可被配置成处理对会话的请求;确定每个会话的功能;通过为会话分配一组物理资源来生成会话;以及实例化会话的协议栈实例。在一些实施例中,引擎212可由能实现上述操作过程中的一部分的专门电路组件来实现。例如,一些示例实施例中,该电路在可包括存储器以及配置成执行实现引擎212的代码的处理器。如图2所描绘地,在一些情况下,引擎212可接收连接请求并确定例如许可证可用,并且可为该请求生成会话。在服务器204是包括远程桌面能力的远程计算机的情形中,引擎212可被配置成响应于连接请求生成会话而不检查许可证。如图2所示,会话管理器216可被配置成接收来自引擎212的消息,并且响应于该消息,会话管理器216可将会话标识符添加到表中;向该会话标识符指派存储器;以及在指派给该会话标识符的存储器中生成系统环境变量和子系统进程的实例。如图2所示,会话管理器216可实例化诸如运行时子系统240之类的环境子系统, 该子系统可包括诸如会话核心244之类的内核模式部分。例如,在一实施例中,环境子系统被配置成将一些服务子集展示给应用程序并向操作系统214的内核提供接入点。在示例实施例中,运行时子系统240可控制进程和线程的执行,并且会话核心244可向内核214的执行程序发送请求以向线程分配存储器并调度执行它们的时间。在一实施例中,会话核心244 可包括图形显示界面246 (⑶I)、安全子系统250和输入子系统252。在这些实施例中,输入子系统252可被配置成经由与该会话相关联的协议栈实例接收来自客户机201的用户输入并将该输入传送给合适会话的会话核心对4。在一些实施例中,用户输入可包括指示绝对和 /或相对鼠标移动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆移动信号等的信号。例如图标上的鼠标双击的用户输入可被会话核心244接收,并且输入子系统252可被配置成确定图标位于与该双击相关联的坐标处。输入子系统252随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统240发送通知。除了接收来自客户机201的输入之外,可从应用和/或桌面接收绘制命令并由GDI 246来处理。⑶I 246 —般可包括能生成图形对象绘制命令的进程。在该示例实施例中, GDI 246可被配置成将其输出传递给远程显示子系统254,在那里,针对附连到该会话的显示驱动器,命令被格式化。在某些示例实施例中,一个或多个物理显示器可被附连到服务器 204,例如在远程桌面情形中。在这些示例实施例中,远程显示子系统邪4可被配置成对由远程计算机系统的显示驱动器呈现的绘制命令制作镜像,并经由与该会话相关联的栈实例将镜像信息传送给客户机201。在服务器204是终端服务器的另一示例实施例中,远程显示子系统2M可被配置成包括可不与物理上附连到服务器204的显示器相关联的虚拟显示驱动器,例如服务器204可无头地运行。在该实施例中,远程显示子系统2M可被配置成接收针对一个或多个虚拟显示器的绘制命令并将它们经由与该会话相关联的栈实例传送给客户机201。在本公开的实施例中,远程显示子系统邪4可被配置成确定每个显示驱动器的显示分辨率,例如确定与虚拟显示器相关联的虚拟显示驱动器的显示分辨率或与物理显示器相关联的显示驱动器的显示分辨率;以及经由相关联的协议栈实例将分组路由到客户机 201。在一些示例实施例中,会话管理器216可附加地实例化与该会话的会话标识符相关联的可被配置成处理该会话的登入和登出的登录进程的实例。在这些示例实施例中,指示与登录进程相关联的图形用户界面的绘制命令可被传送给客户机201,在那里,客户机 201的用户可向登录屏幕输入帐户标识符(例如用户名/ 口令组合)、智能卡标识符、和/ 或生物测定信息。该信息可被传送给服务器204并被路由至引擎212以及会话核心244的安全子系统250。例如,在某些示例实施例中,引擎212可被配置成确定用户帐户是否与许可证相关联;并且安全子系统250可被配置成生成该会话的安全令牌。图3A描绘了其中未实现本发明的技术的被遮蔽的共享窗口。共享窗口会话中的客户机可接收合成图像302,该图像包括共享窗口 304、共享窗口 306以及对应于非共享窗口 308的区域。共享窗口 304遮挡了共享窗口 306。所以,即使共享窗口 306的一部分因共享窗口 304的存在而不可见,其上显示这些共享窗口的客户计算机的用户也可理解共享窗口 306的这一部分为何未被呈现,因为他或她能看到共享窗口 304覆盖这一部分。共享窗口 304的一部分和共享窗口 306的其它部分因对应于非共享窗口 308的区域而不可见。在该共享窗口会话中的服务器上,对应于非共享窗口 308的区域包含非共享窗口。然而,在客户机上,如此处所显示,该窗口不被显示,而改为显示空白空间。这可使客户机的用户混淆,因为看上去好像共享窗口 304和共享窗口 306被不正确地显示且其部分缺失。图:3B描绘了其中实现本发明的技术的图3A的被遮蔽的共享窗口。这可例如经由图2所示的系统实现。共享窗口会话中的客户机可接收合成图像302a,该图像包括共享窗口 30 和共享窗口 306a。类似于图3A,共享窗口 30 遮挡了共享窗口 306a。所以,即使共享窗口 306a的一部分因共享窗口 30 的存在而不可见,其上显示这些共享窗口的客户计算机的用户也可理解共享窗口 306a的这一部分为何未被呈现,因为他或她能看到共享窗口 30 覆盖这一部分。与图3A相反,共享窗口 30 和共享窗口 306a均未被非共享窗口遮挡(在图3A 中,共享窗口 304和共享窗口 306被非共享窗口 308遮挡)。这可例如通过应用如参考图5 所述的技术来实现。图4A描绘了包括多个窗口的计算机桌面,其中要共享多个窗口的子集。这可例如经由图2所示的系统实现。计算机桌面402包括多个窗口——共享窗口 404、共享窗口 406、 共享窗口 408、非共享窗口 410以及非共享窗口 412。如同图3A和3B,可注意到每一窗口与至少一个其它窗口相交——例如,共享窗口 404遮挡共享窗口 408,且其本身被共享窗口 406以及非共享窗口 410遮挡。图4B描绘了如客户机所接收的使用本发明的技术的图4A的计算机桌面的共享窗口。这可例如经由图2所示的系统实现。合成图像40 包括共享窗口 404a、共享窗口 406a、共享窗口 408a以及伪窗口 410a。显示共享窗口 406a的全部,包括图4A中窗口 406 中被非共享窗口 412遮挡的那些部分。这是因为窗口 406被遮挡的部位能够使用如参考图 5描述的技术来确定。伪窗口 410a在桌面40 中占据图4A中非共享窗口 410在桌面402中占据的空间。在一实施例中,图4A中共享窗口 404的部位不能被确定(参考图5更详细描述),因此在图4B中,显示伪窗口 410来传达这一信息。在一实施例中,可确定窗口 408的内容,但是已经作出了用与窗口 410相同的尺寸呈现伪窗口 410a的选择,因此它遮挡窗口 408的一部分。在一实施例中,伪窗口的大小不同于其对应于的窗口,使得可在此对其执行遮挡移除的窗口(诸如窗口 408)不被遮挡。图5描绘了用于计算机桌面的多个窗口的带遮挡移除的窗口共享的示例操作过程。图5的技术可被实现来取图4A的计算机桌面并从中共享图4B的共享窗口。这可例如经由图2所示的系统实现。窗口是共享的,其中在窗口共享会话中,它被指定被发送给客户机。窗口是分层的,其中它被如此指定,且因此整个窗口被存储在与存储桌面的存储器区域分开的存储器区域中(且该窗口在桌面上可能被遮挡,因此不能从桌面确定整个窗口)。当窗口是共享的但不是分层的,且另一窗口遮挡其部分,则可能不能从存储器检索该窗口中被遮挡的部位, 或者因为从存储器检索窗口会产生不令人满意的结果,诸如要求不可接受的大量计算资源来完成。在这些情况下,非共享窗口可能会遮挡共享窗口的部位,且被遮挡的部位不能被确定。在一实施例中,桌面中的窗口可具有以下特征(1)它既是共享的又是分层的; (2)它是共享的但不是分层的;C3)它不是共享的且遮挡共享窗口的部位,且被遮挡的部位不能被确定(诸如如果窗口不是分层窗口); (4)它不是共享的,且它遮挡共享窗口的部位, 且被遮挡的部位能够被确定;以及( 它不是共享的,且它不遮挡共享窗口的任何部位。在一实施例中,生成合成图像——其上绘制要共享的窗口的空白画布,然后对窗口过两遍以将共享的窗口如其在桌面上所排列的方式绘制到合成图像上。在对窗口过第一遍时,对每一窗口检查三件事。第一,检查每一窗口以确定其ζ次序(窗口在桌面上的深度;当两个窗口在桌面上占据相同位置时,具有较小ζ深度的窗口将遮挡具有较大ζ深度的窗口)。其次,检查每一窗口以确定它是否是共享的,且如果是,则确定它是否有部分被遮挡。如在对窗口过的这一遍中所确定地,合成图像的各区域被指定为共享并被遮挡或共享但未被遮挡。第三且最后,检查每一窗口来确定合成图像中如果要在该合成图像中呈现窗口则窗口将被呈现的位置。由于合成窗口具有与桌面相同的尺寸,因此该位置可通过按照桌面的左上角的坐标来使窗口偏移来确定。每一窗口的这一位置可被称为窗口的目标坐标。合成图像中共享且被遮挡区域是其中要添加共享窗口但窗口的部位不能被确定的区域。合成图像的共享但未被遮挡区域是其中要添加共享窗口且窗口的部位可被确定的区域,窗口的部位可被确定或者因为其未被桌面上的另一窗口遮挡或者因为其虽然被桌面上的另一区域遮挡但共享窗口的该区域因存储在与存储桌面的存储器区域分开的某些存储器区域中而可被确定。在过第一遍之后,对每一窗口过第二遍,从具有最大ζ深度的窗口开始,并按照减少的ζ深度的顺序对窗口进行。根据其如上所述的特征处理每一窗口。如果窗口既是共享的且又是分层的,则将窗口从存储窗口的存储器区域(与存储桌面的存储器区域分开;这可被称为窗口缓冲区,它可构成系统存储器的一部分)复制到合成图像的目标坐标。由该窗口占据的区域被添加到共享未被遮挡区域。如果窗口是共享的但不是分层的,则将存储桌面的存储器区域中所呈现(且由此可见)的窗口的部位复制到合成图像中该窗口的目标坐标处。如果窗口在桌面上被部分遮挡,将不呈现其全部,因此不将其全部复制到合成图像。如果窗口不是共享的,且它与共享、被遮挡区域相交,则可将该遮挡的指示添加到合成图像中此窗口的目标坐标处。这一指示可包括伪窗口——与此窗口具有相同尺寸但不具有此窗口的内容(可以是空白的)的窗口。从被遮挡的共享窗口区域410a中移除对应于此窗口的区域。如果窗口不是共享的,且它与未被遮挡的共享区域相交,则可向合成图像在同共享的未被遮挡区域与此窗口占据的区域之间的相交相对应的区域中添加对此的指示。这一指示可包括透明阴影的形式。这可向客户机处的用户传达共享窗口的某一部位被非共享窗口遮挡的信息。在另一实施例中,不添加任何指示。如果窗口不是共享的,且它不与被遮挡或共享的未被遮挡的区域相交,则不向合成图像添加任何东西。在过第二遍之后,合成图像现在包括共享的未被遮挡的窗口(其各部位可能被其它共享窗口遮挡)以及对未被解决的遮挡的指示,诸如通过伪窗口。然后对合成图像编码 (例如,压缩)并将其发送到客户机以便在客户机的显示设备上显示。可以理解,存在实现类似结果但不精确地包括对窗口的两遍的技术。例如,确定窗口 ζ次序、以及确定合成图像的共享未被遮挡和共享被遮挡区域的操作可在分开的遍中执行。参考图5所述的这些技术在以下参考操作502-516更详细描述。尽管图5的操作讨论了四个窗口,但可以理解,本发明的技术可应用于处于被共享和/或被遮挡的任何状态下以及按任何ζ次序的任何数量个窗口。操作502描绘了确定多个窗口的ζ次序,其中第一窗口具有多个窗口中最大的ζ 距离。窗口可被认为在桌面上具有ζ次序——具有较大ζ距离的窗口将被具有较小ζ距离的窗口遮挡。在以下操作中,可通过以ζ次序遍历窗口,从具有最大ζ距离的窗口开始,并以具有最小ζ距离的窗口结束来处理窗口。在一实施例中,窗口的ζ距离可被存储在其元数据中,或由诸如操作系统等系统中管理这些窗口的某一管理部分存储。在这样的实施例中,每一窗口的ζ距离可通过检查其被存储的位置来确定。操作504描绘确定多个计算机窗口中第一窗口在桌面上的位置。如同与操作502 一样,该信息可被存储在窗口的元数据中,或可由系统中管理这些窗口的某一管理部分存储。在一实施例中,操作504包括基于第一窗口相对于计算机桌面的共享窗口位置来确定第一窗口的位置。如上所述,这可利用第一窗口的目标坐标来完成。操作506描绘确定第一窗口是共享的且是分层的。可以通过检查服务器用户设置的用来表示该窗口要被共享的窗口的标志来确定窗口是共享的。可通过检查与窗口相关联的元数据来查看“分层标志”,诸如MICR0S0FTWIND0WS⑧中的WS_EX_LAYERED (WS_EX_分层) 标志来确定窗口是分层的,或设置类似的指示符。
操作508描绘了基于第一窗口的位置将第一窗口复制到合成图像。为了按照共享窗口在服务器上的相同排列来向客户机显示共享窗口,共享窗口的排列必须已知。在合成图像包括与共享窗口的桌面相同的尺寸的情形中,则这例如可通过使用共享窗口对于桌面的相对位置来完成。例如,如果共享窗口的左上角位于桌面的左上角向右70像素、向下60 像素处,则可通过复制第一窗口使得第一窗口的左上角位于合成图像的左上角向右70像素、向下60像素处来在合成图像中维护第一窗口的相对位置。在一实施例中,合成图像包括位像。可使用各种其它图像格式,诸如联合图象专家组(JPEG)或图形交换格式(GIF)。在一实施例中,操作508包括在将窗口复制到合成图像之前禁止多个计算机窗口的每一窗口的桌面合成。某些操作系统中的应用程序,诸如MICROSOFT WINDOWS VISTA 及其桌面窗口管理器(DWM)不向桌面的存储器区域直接绘制窗口。相反,这些窗口被绘制到视频存储器中的屏幕外存储器区域中,然后被呈现到桌面图像中。在包括这样的桌面合成特征的一些实现中,当共享窗口被绘制到这些屏幕外存储器区域时,在没有窗口的边界框的情况下绘制窗口,且当窗口稍后被会绘制到桌面的存储器区域时围绕窗口绘制该边界。 在这种情况中,从这些屏幕外存储器区域中检索共享窗口将导致检索部分共享窗口,因为该窗口将缺少其框边界。这一问题可通过禁用这样的桌面合成特征来减轻。在一实施例中,操作508包括在将任何共享窗口复制到合成图像之前为多个计算机窗口中所共享的每一窗口设置分层标志。在某些操作系统中,分层和未分层的窗口被不同地处理。如果窗口不是分层的,则它仅被绘制到桌面的存储器区域,而根本不绘制窗口中被另一窗口遮挡的那些部位。如果窗口是分层的,则将整个窗口绘制到屏幕外存储器区域, 在那里存储该窗口,然后将窗口中未被遮挡的部位(可以是整个窗口)绘制到桌面的存储器区域。由此,通过在支持为每一共享窗口设置分层标志的环境中为每一共享窗口设置分层标志,可使得共享窗口中被遮挡的那些部位在存储器中可用以便传送给客户机,尽管它们在服务器桌面上不可见。在一实施例中,操作508包括将第一窗口从窗口缓冲区复制到合成图像。窗口缓冲区可包括如参考操作506所述的屏幕外存储器区域。在其中分层窗口被存储在屏幕外存储器区域中的实施例中,该窗口可被复制到合成图像,使得整个窗口被复制到合成图像,即使窗口的某一部分在桌面上被遮挡。操作510描绘了确定多个计算机窗口中的第二窗口在桌面上的位置;确定第二窗口是共享的但不是分层的;以及基于第二窗口的位置将第二窗口从计算机桌面复制到合成图像。在使用MICROSOFT WINDOWS 操作系统的实施例中,这例如可通过对GetWindowDCO (取窗口 DC0)函数的调用来实现。在第二窗口是共享的时候,将其复制到合成图像以便传送到客户机。在其不是分层的时候(诸如第二窗口的分层标志未被置位),则第二窗口可能在存储器中仅被存储在桌面的存储器区域中。在这样的情况中,可从桌面的存储器区域检索它并从中将其复制到合成图像。操作512描绘了确定多个计算机窗口的第三窗口在桌面上的位置;确定第三窗口不是共享且与合成位图的被遮挡的共享区域相交;以及基于第三窗口的位置向合成位图添加对第三窗口的指示。
这可以包括第一窗口是共享窗口且第三窗口是遮挡第一窗口的非共享窗口且第一窗口的被遮挡部位不能确定的情况。这可在第一窗口仅被绘制到桌面的存储器区域中时发生,诸如因为未对第一窗口设置分层标志。在某些情况下,窗口的分层标志不能被设置。 例如,窗口的一部位可由多个进程所有,且执行本发明的技术的实体不具有修改窗口的充分特权。在这样的情况中,此实体设置分层标志的尝试可能会失败。在一实施例中,对第三窗口的指示包括伪窗口,伪窗口具有与第三窗口相同的尺寸以及与第三窗口的位置相对于第一窗口的位置相同的相对于第一窗口的位置。在另一实施例中,伪窗口具有与第三窗口不同的尺寸,诸如如上参考图4B所述(其中伪窗口也将覆盖可对其执行遮挡移除的共享窗口,在此实施例中,可设置伪窗口的尺寸使其不会遮挡这另一共享窗口)。由于不能确定第一窗口的一部位,因此在没有关于发生了什么指示的情况下,第一窗口对客户机用户而言看上去将是不完整的。在一实施例中,对遮挡的指示包括伪窗口。 伪窗口可包括具有与第三窗口相同的尺寸但不具有第二窗口的内容(由于第二窗口不是共享的)的窗口。例如,伪窗口可具有第三窗口的边界框,但该边界框内将其绘制为全黑 410a。操作514描绘了确定多个计算机窗口中的第四窗口在桌面上的位置;确定第四窗口不是共享的,且该第四窗口与合成位图的共享区域相交,且第四窗口不与合成位图的被遮挡的共享区域相交;以及将对第四窗口与合成位图的共享区域相交的指示添加到合成位图。这可包括其中第四窗口遮挡第一窗口的一部位,但整个第一窗口被存储在屏幕外存储器区域中并从中检索——而非存储在桌面的存储器区域中并从中检索的情况。在这样的情况中,尽管第四窗口引起的遮挡不会限制可发送给客户机的第一窗口的量,但仍优选地向客户机发送对该服务器侧遮挡的指示。例如,这可允许客户机计算机的用户了解服务器计算机的用户在服务器用户的桌面上不能看到第一窗口中被第四窗口遮挡的该部位。这例如可通过向合成位图绘制在第一窗口被第四窗口遮挡的部位之上的有阴影的透明区域来实现。操作516描绘了向客户机发送合成图像。这可诸如通过根据远程呈现会话协议并在诸如INTERNET 之类的通信网络上向客户机发送图像来完成。在实施例中,操作516包括在将合成图像发送给客户机之前对其编码。各种远程呈现会话实现在将合成图像发送给客户机之前对其编码以降低带宽要求。例如,当合成图像包括位像时,可将其编码为JPEG图像以减少其大小,且因此减少在通信网络上发送它所需的带宽。结论尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此, 本发明应当不限于任何单个方面,而应按照所附权利要求书的广度与范围来解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。
权利要求
1.一种用于共享计算机桌面的多个计算机窗口中的计算机窗口的方法,包括 确定所述多个计算机窗口中的第一窗口在桌面上的位置(504);确定所述第一窗口是共享的且是分层的(506);基于所述第一窗口的位置,将所述第一窗口从窗口缓冲区复制到合成图像,所述窗口缓冲区与所述计算机桌面分开地存储所述第一窗口(508);以及向客户机发送所述合成图像(516)。
2.如权利要求1所述的方法,其特征在于,还包括 在将合成图像发送给客户机之前对所述合成图像编码。
3.如权利要求1所述的方法,其特征在于,还包括 在将窗口复制到所述合成图像之前禁用桌面合成。
4.如权利要求1所述的方法,其特征在于,还包括在将任何共享窗口复制到所述合成图像之前,为所述多个计算机窗口中所共享的每一窗口设置分层标志。
5.如权利要求1所述的方法,其特征在于,还包括 确定所述多个窗口的ζ次序;以及其中所述第一窗口具有所述多个窗口中最大的ζ距离。
6.如权利要求1所述的方法,其特征在于,所述合成图像的尺寸等于所述桌面的尺寸。
7.如权利要求1所述的方法,其特征在于,还包括 确定所述多个计算机窗口中的第二窗口在桌面上的位置; 确定所述第二窗口是共享的但不是分层的;以及基于所述第二窗口的位置将所述第二窗口从计算机桌面复制到所述合成图像。
8.如权利要求1所述的方法,其特征在于,还包括 确定所述多个计算机窗口中的第三窗口在桌面上的位置;确定所述第三窗口不是共享的且与合成图像的被遮挡共享区域相交;以及基于所述第三窗口的位置将对所述第三窗口的指示添加到所述合成图像。
9.如权利要求1所述的方法,其特征在于,还包括 确定所述多个计算机窗口中的第四窗口在桌面上的位置;确定所述第四窗口不是共享的、所述第四窗口与所述合成图像的共享区域相交、且所述第四窗口不与所述合成图像的被遮挡共享区域相交;以及将对所述第四窗口与所述合成图像的共享区域相交的指示添加到合成图像。
10.如权利要求1所述的方法,其特征在于,确定所述多个计算机窗口中的所述第一窗口在桌面上的位置包括基于所述第一窗口相对于所述计算机桌面的共享窗口位置来确定所述第一窗口的位置。
11.一种用于共享计算机桌面上的多个计算机窗口中的计算机窗口的系统,包括 处理器;通信地耦合到所述处理器的存储器(22),承载计算机可读指令,当在所述处理器上执行所述计算机可读指令时,使得所述处理器执行以下操作,包括 确定所述多个计算机窗口中的第一窗口在桌面上的位置(504);确定所述第一窗口是共享的且是分层的(506); 基于所述第一窗口的位置将所述第一窗口复制到合成图像(510);以及向客户机发送所述合成图像(516)。
12.如权利要求11所述的系统,其特征在于,所述存储器还承载在所述处理器上执行时使得所述处理器执行以下操作的指令,所述操作包括确定所述多个计算机窗口中的第二窗口在桌面上的位置; 确定所述第二窗口是共享的但不是分层的;以及基于所述第二窗口的位置将所述第二窗口从计算机桌面复制到所述合成图像。
13.如权利要求11所述的系统,其特征在于,所述存储器还承载在所述处理器上执行时使得所述处理器执行以下操作的指令,所述操作包括确定所述多个计算机窗口中的第三窗口在桌面上的位置; 确定所述第三窗口不是共享的且与所述合成图像的被遮挡共享区域相交;以及基于所述第三窗口的位置将对所述第三窗口的指示添加到合成图像。
14.如权利要求11所述的系统,其特征在于,对所述第三窗口的指示包括伪窗口,所述伪窗口具有与第三窗口相同的尺寸以及与所述第三窗口的位置相对于所述第一窗口的位置相同的相对于所述第一窗口的位置。
15.如权利要求11所述的系统,其特征在于,所述图像包括位像。
全文摘要
公开了用于移除遮挡的窗口和应用共享的技术。在一实施例中,该技术从空白的合成图像开始,将对其添加共享窗口。对从中共享至少一个窗口的桌面的每一窗口,从最大z深度到最小z深度遍历窗口,基于窗口是否是共享的和是否被遮挡来处理窗口。共享窗口被复制到合成图像。当共享窗口的一部分被遮挡且不能被检索时,对该遮挡的指示被添加到合成图像。当各窗口已被处理之后,对合成图像编码并将其发送到其将显示的客户机计算机以产生计算机之间的窗口共享。
文档编号H04L29/08GK102196034SQ201110065889
公开日2011年9月21日 申请日期2011年3月9日 优先权日2010年3月9日
发明者A·A·陈, S·R·尼如杜, W·R·舒米德尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1