用表示远程应用的用户界面元素更新停靠栏的方法和系统与流程

文档序号:15666023发布日期:2018-10-16 17:03阅读:404来源:国知局
相关申请本申请要求下列申请的优先权和权益:2009年12月9日提交的、标题为“MethodsandSystemsforGeneratingaCombinedDisplayofTaskbarButtonGroupEntriesGeneratedonaLocalMachineandonaRemoteMachine”、申请号为61/285022的共同待决的美国临时专利申请,2010年10月5日提交的、标题为“MethodsandSystemsforGeneratingaCombinedDisplayofTaskbarButtonGroupEntriesGeneratedonaLocalMachineandonaRemoteMachine”、申请号为12/897863的美国非临时专利申请,和2010年10月5日提交的、标题为“MethodsandSystemsforUpdatingaDockwithaUserInterfaceElementRepresentativeofaRemoteApplication”、申请号为12/897871的美国非临时专利申请,上述申请通过引用被整体包含于此。
技术领域
:本申请涉及用于远程应用执行的方法和系统。本公开尤其涉及响应于接收来自远程应用的应用输出,使用用户界面元素来更新停靠栏的方法和系统。
背景技术
::在将远程生成的桌面环境与本地生成的桌面环境集成显示的一些实施例中,由远程应用实例生成的且在本地桌面环境中显示的数据在停靠栏(dock)中被分组在一起,而不考虑远程应用实例的名称或类型。例如,停靠栏可能仅显示处理远程应用显示协议的客户端应用(例如Citrix独立计算架构(ICA)客户端或Windows远程桌面客户端)的应用图标,而不考虑远程执行的应用的数量和种类。在一些环境中,这带来了不方便和潜在地反直觉的终端用户体验,特别是如果有多种远程应用在运行的情况下(例如,文字处理应用、计算器应用、互联网浏览应用等),因为一个应用图标代表几个不相关应用的窗口。技术实现要素:在一个实施例中,此处描述的方法和系统提供在远程的(“发布的”)应用和它们的本地对应应用之间的以应用为中心的接口或停靠栏集成。在又一个实施例中,这种功能提供了无缝的、同一的用户体验。在又一个实施例中,这种功能允许所寄载的应用以与本地应用出现在停靠栏接口中相同的方式出现在该停靠栏接口中,就像它们正在本地运行一样。在又一个实施例中,这种功能允许区别作为应用的进程或窗口运行的web应用,使得这些web应用作为独立的或不同的应用出现在停靠栏接口中。在一个方面,本公开特别描述了用表示在远程计算机上执行的远程应用的用户界面元素来更新由本地计算机生成和显示的停靠栏的方法。该方法包括由在本地计算机上执行的本地客户端接收由在远程计算机上执行的远程应用生成的应用输出、表示该远程应用的用户界面元素以及窗口配置信息。该方法也包括由本地客户端响应于接收该应用输出,生成用于显示所接收的应用输出的应用输出窗口,所述应用输出窗口是根据所述窗口配置信息生成的。该方法还包括响应于接收该应用输出,在本地机器上执行进程,该进程包括表示该远程应用的用户界面元素。该方法也包括响应于执行该进程,用该进程的用户界面元素来更新本地计算机的停靠栏。该方法也包括由该进程将用户与停靠栏中的该用户界面元素的交互重定向到显示由该远程应用生成的应用输出的应用输出窗口。在一些实施例中,该方法包括由本地客户端响应于用户与停靠栏中该用户界面元素的交互来请求执行所述远程应用。在许多实施例中,该窗口配置信息还包括该远程应用的标识。在另一个实施例中,该窗口配置信息包括标识该远程应用的进程标识符、应用标识符或窗口标识符。在其他实施例中,所述窗口配置信息还包括对在由该远程应用生成的应用输出和额外的应用输出之间的父/子关系的指示。在一个实施例中,该方法包括接收与由远程应用生成的第二窗口关联的额外的应用输出和额外的窗口配置信息,并且生成用于显示该额外的应用输出的第二应用输出窗口。该方法还包括响应于接收该额外的窗口配置信息来执行第二进程,该第二进程包括表示该远程应用的用户界面元素,以及响应于执行第二进程,用第二进程的用户界面元素更新本地计算机的停靠栏。该方法还包括由第二进程将与停靠栏中该用户界面元素的第二用户交互重定向到第二应用输出窗口。在又一个实施例中,该方法包括接收与第二窗口关联的额外的应用输出和额外的窗口配置信息,并且生成用于显示该额外的应用输出的第二应用输出窗口。该方法还包括由本地客户端响应于该额外的窗口配置信息确定不执行用于重定向用户交互的第二进程,并且将与停靠栏中该用户界面元素的第二用户交互重定向到第二应用输出窗口。在另一个实施例中,该方法包括由停靠栏响应于用户与所述用户界面元素的交互来显示所述应用输出窗口和第二应用输出窗口的枚举。在又一个另外的实施例中,该方法包括响应于所述额外的应用输出是由所述远程应用、所述远程应用的第二执行实例或所述远程应用的子进程生成的,确定不执行用于重定向用户交互的第二进程。在又一个实施例中,该方法包括重定向用户交互到本地客户端,本地客户端将该用户交互传输到所述远程应用。在又一个实施例中,该方法包括用户界面元素,该用户界面元素包含远程应用的图标。在又一个方面,本公开特别描述了用表示在远程计算机上执行的远程应用的用户界面元素来更新由本地计算机生成和显示的停靠栏的系统。该系统包括本地机器,该本地机器执行本地客户端、进程和操作系统。本地客户端被配置为接收由在远程计算机上执行的远程应用生成的应用输出、表示所述远程应用的用户界面元素和窗口配置信息,并且响应于接收所述应用输出,生成用于显示所接收的应用输出的应用输出窗口,所述应用输出窗口是根据所述窗口配置信息生成的。所述进程是响应于接收该应用输出而被执行的,而且该进程包括表示远程应用的用户界面元素,并且该进程被配置为将与停靠栏中该用户界面元素的用户交互重定向到显示由所述远程应用生成的应用输出的应用输出窗口。所述操作系统被配置为响应于执行该进程,用该进程的用户界面元素更新停靠栏。在一些实施例中,本地客户端还被配置为响应于与停靠栏中该用户界面元素的用户交互来请求执行该远程应用。在其他实施例中,所述窗口配置信息还包括所述远程应用的标识。在另一个实施例中,所述窗口配置信息包括标识该远程应用的进程标识符、应用标识符或窗口标识符。在另一个实施例中,所述窗口配置信息包括对在由该远程应用生成的应用输出和额外的应用输出之间的父/子关系的指示。在又一个实施例中,本地客户端还被配置为接收与由该远程应用生成的第二窗口关联的额外的应用输出以及额外的窗口配置信息,并且生成用于显示该额外的应用输出的第二应用输出窗口,以及所述操作系统还被配置为用第二进程的用户界面元素更新本地计算机的停靠栏。该系统还包括响应于接收该额外的窗口配置信息而执行的第二进程,所述第二进程包括表示该远程应用的用户界面元素,并且被配置为将与停靠栏中该用户界面元素的第二用户交互重定向到第二应用输出窗口。在又一个实施例中,本地客户端还被配置为接收与第二窗口关联的额外的应用输出和额外的窗口配置信息、生成用于显示该额外的应用输出的第二应用输出窗口,并且响应于该额外的窗口配置信息来确定不执行用于重定向用户交互的第二进程。所述进程还被配置为将与停靠栏中该用户界面元素的第二用户交互重定向到第二应用输出窗口。在另一个实施例中,所述停靠栏还被配置为响应于与所述用户界面元素的用户交互来显示所述应用输出窗口和第二应用输出窗口的枚举。在另一个实施例中,响应于所述额外的应用输出是由所述远程应用、所述远程应用的第二执行实例或所述远程应用的子进程生成的,确定不执行用于重定向用户交互的第二进程。在一个实施例中,所述进程还被配置为重定向用户交互到本地客户端,本地客户端将该用户交互传输到所述远程应用。在又一个实施例中,所述用户界面元素包含所述远程应用的图标。在下面的附图和描述中详细阐述了本发明的各种实施例的细节。附图说明通过参考下述结合附图的描述,本公开的前述和其它目的、方面、特征和优点将会更加明显并更易于理解,其中:图1A是描述包括与远程机器通信的本地机器的网络环境的实施例的框图;图1B-1E是描述适用于此处所描述的方法和系统的计算机的实施例的框图;图2是描述用于在由本地机器生成并显示的任务栏按钮组中显示在本地机器上生成并显示的图形数据的标识和在远程机器上生成且在本地机器上显示的图形数据的标识的系统的一个实施例的框图;图3是描述用于在由本地机器生成并显示的用户界面元素中显示在本地机器上生成并显示的图形数据的标识和在远程机器上生成且在本地机器上显示的图形数据的标识的方法的一个实施例的流程图;图4A是描述将在本地机器上和在远程机器上生成的任务栏按钮组条目进行组合显示的一个实施例的屏幕截图;图4B是描述将在本地机器上和在远程机器上生成的任务栏按钮组条目进行组合显示的一个实施例的屏幕截图;图4C是描述没有对表示在本地机器上和远程机器上生成的条目的图标进行分组的一个实施例的屏幕截图;图4D是描述对表示在本地机器上和远程机器上生成的条目的图标进行分组的一个实施例的屏幕截图;图4E是描述具有表示在远程机器上执行的多个远程应用的用户界面元素的停靠栏的一个实施例的屏幕截图;图4F是描述具有表示在远程机器上执行的每个远程应用的用户界面元素的停靠栏的又一个实施例的屏幕截图;图4G是描述用表示在远程机器上执行的远程应用的用户界面元素更新停靠栏的方法的一个实施例的流程图;图5A是客户机上的显示图像的实施例的框图,该显示图像示出了由于在向客户机传输显示图像之前在服务器上平整显示图像所引起的图形损坏;图5B是示出了没有由于在向客户机传输显示图像之前在服务器上平整显示图像所引起的图形损坏的客户机上的显示图像的实施例的框图;图5C是用于允许用户在缩略图之间进行翻阅以选择要转到前台的程序的3D界面的示例的框图;图6A是用于提供无缝的三维缩略图的系统的实施例的框图;图6B是用于提供无缝的三维缩略图而不考虑远程应用类型的系统的实施例的框图;以及图6C-6D是用于提供无缝的三维缩略图的方法的实施例的流程图。从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中标识相应的元素。在附图中,同样的附图标记通常表示相同的、功能上相似的和/或结构上相似的元素。具体实施方式为了阅读下文各种实施例的描述,下述对于说明书的部分以及它们各自内容的描述是有用的:-A部分描述可用于实施此处描述的实施例的网络环境和计算环境;-B部分描述用于在由本地机器生成并显示的任务栏按钮组中显示在本地机器上生成并显示的图形数据的标识和在远程计算上生成且在本地机器上显示的图形数据的标识的系统和方法的实施例;-C部分描述用表示在远程机器上执行的远程应用的用户界面元素来更新停靠栏的系统和方法的实施例;-D部分描述用于提供无缝的三维缩略图的实施例。A.网络和计算环境现参考图1A,描述了网络环境的实施例。总的来说,网络环境包括经由一个或者多个网络104与一个或者多个远程机器106a-106n(总的还称为服务器106或者远程机器106)通信的一个或者多个本地机器102a-102n(总的还称为本地机器102、客户机102、客户节点102、客户机器102、客户计算机102、客户装置102、端点102或端点节点102)。在一些实施例中,本地机器102既有作为客户节点寻求访问服务器所提供资源的能力,也有作为服务器向其他客户机102a-102n提供对所寄载的资源的访问的能力。虽然图1A示出了在本地机器102和远程机器106之间的网络104,本地机器102和远程机器106可以位于相同的网络104上。网络104可为局域网(LAN)(例如公司内网),城域网(MAN),或者广域网(WAN)(例如因特网或万维网)。在一些实施例中,在本地机器102和远程机器106之间可以有多个网络104。在这些实施例的一个中,网络104’(未示出)可为专用网并且网络104可为公网。在这些实施例的另一个中,网络104’可为专用网并且网络104’可为公网。在又一个实施例中,网络104和104’可都为专用网。而在另一个实施例中,网络104和104’可都为公网。网络104可以是任何类型和/或形式的网络,并且可包括任意下述网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104的拓扑可为总线型、星型或环型网络拓扑。网络104可以具有对于本领域普通技术人员所熟知的、能够支持此处描述的操作的任何这样的网络拓扑。网络可包括利用用于移动装置间通信的任一或一些协议的移动电话网络,这些协议包括:AMPS、TDMA、CDMA、GSM、GPRS或UMTS。在一些实施例中,不同类型的数据可以通过不同协议传输。在其他实施例中,同一类型的数据可通过不同协议传输。在一些实施例中,系统可包括多个逻辑分组的远程机器106。在这些实施例的一个中,服务器的逻辑分组可以被称为服务器群38。在这些实施例的又一个中,远程机器106可为地理上分散的。在其他实施例中,服务器群38可以作为单个实体被管理。仍在其他实施例中,服务器群38包括多个服务器群38。每个服务器群38内的远程机器106可能是异构的---一个或多个远程机器106可根据一种类型的操作系统平台(例如,WINDOWSNT、WINDOWS2003或WINDOWS2008,所有这些都是由华盛顿州Redmond的Microsoft公司出品的)操作,而一个或多个其它远程机器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个服务器群38的远程机器106不必与同一服务器群38中的另一个远程机器106在物理上接近。因此,逻辑上分组为服务器群38的远程机器106组可以是使用广域网(WAN)连接或城域网(MAN)连接来互联的。例如,服务器群38可包括物理上位于不同大陆或大陆、国家、州、城市、校园或房间的不同区域的远程机器106。如果远程机器106使用局域网(LAN)连接或一些直连形式进行连接,则可增加服务器群38中的远程机器106间的数据传送速度。远程机器106可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSLVPN服务器,或防火墙。在一些实施例中,远程机器106提供远程认证拨入用户服务,并且可被称为RADIUS服务器。在其他实施例中,远程机器106可以有作为应用服务器或者作为主应用服务器工作的能力。仍在其他实施例中,远程机器106是刀片服务器。在其他实施例中,远程机器106执行向用户或客户计算机102提供对计算环境访问的虚拟机。在一个实施例中,远程机器106可包括活动目录。远程机器106可以是应用加速设备。对于其中远程机器106是应用加速设备的实施例,远程机器106可提供包括防火墙功能、应用防火墙功能,或负载平衡功能的功能。在一些实施例中,远程机器106包括诸如由位于美国加州SanJose的Citrix应用网络组、位于美国加州MountainView,的SilverPeakSystems公司、位于美国加州SanFrancisco的RiverbedTechnology公司、位于美国华盛顿州Seattle的F5Networks公司或位于美国加州Sunnyvale的JuniperNetworks公司制造的设备系列中的一个的设备。在一些实施例中,远程机器106代表本地机器102的用户执行应用。在其他实施例中,远程机器106执行虚拟机,该虚拟机提供执行会话,在该执行会话中应用代表本地机器102的用户来执行。在这些实施例的一个中,该执行会话是所寄载的桌面会话。在这些实施例的另一个中,该执行会话提供对计算环境的访问,该计算环境包括如下的一个或多个:应用、多个应用、桌面应用、以及在其中可执行一个或多个应用的桌面会话。在一些实施例中,本地机器102与远程机器106通信。在一个实施例中,本地机器102与服务器群38中的远程机器106之一直接通信。在又一个实施例中,本地机器102执行程序邻近应用(aprogramneighborhoodapplication)以与服务器群38内的远程机器106通信。在又一个实施例中,远程机器106提供主节点的功能。在一些实施例中,本地机器102通过网络104与服务器群38中的远程机器106通信。例如通过网络104,本地机器102可以请求执行服务器群38中的远程机器106a-106n所寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供这样的功能,即识别和提供与远程机器106b相关的地址信息所需的功能,所述远程机器106b寄载所请求的应用。在一个实施例中,远程机器106提供web服务器的功能。在又一个实施例中,远程机器106a接收来自本地机器102的请求,将该请求转发到第二远程机器106b,并用远程机器106b对该请求的响应来对本地机器102的请求进行响应。在又一个实施例中,远程机器106a获得对本地机器102可用的应用的列举,以及与寄载由该应用的列举所识别的应用的远程机器106b相关联的地址信息。在又一个实施例中,远程机器106使用web接口提供对本地机器102的请求的响应。在一个实施例中,本地机器102直接与远程机器106通信以访问所识别的应用。在又一个实施例中,本地机器102接收通过执行远程机器106上所识别的应用而产生的输出数据,例如显示数据。在一些实施例中,远程机器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算的应用或远程显示表示应用。在一个实施例中,远程机器106或服务器群38作为应用来执行CitrixSystems有限公司的CITRIXACCESSSUITE的任一部分(例如产品METAFRAME或CITRIXPRESENTATIONSERVER),由CitrixSystems有限公司出品的任何下列产品:CITRIXXENAPP、CITRIXXENDESKTOP、CITRIXACCESSGATEWAY,和/或微软公司出品的MICROSOFTWINDOWS终端服务中的任意一个。在又一个实施例中,该应用是由位于美国佛罗里达州FortLauderdale的CitrixSystems有限公司开发的ICA客户机。仍在又一个实施例中,远程机器106可以运行应用,例如,该应用可以是提供诸如由位于美国华盛顿州Redmond的微软公司制造的MICROSOFTEXCHANGE的电子邮件服务的应用服务器、web或Internet服务器,或桌面共享服务器,或协同服务器。在又一个实施例中,任何应用可以包括任何类型的所寄载的服务或产品,例如位于美国加利福尼亚州SantaBarbara的CitrixOnlineDivision公司提供的GOTOMEETING,位于美国加利福尼亚州SantaClara的WebEx有限公司提供的WEBEX,或者位于美国华盛顿州Redmond的微软公司提供的MicrosoftOfficeLIVEMEETING。本地机器102可以执行、操作或者以其它方式提供应用,应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java小应用程序、或者可以在本地机器102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,该应用可以是代表本地机器102在远程机器106上执行的基于服务器或者基于远程的应用。在其他实施例中,远程机器106可以使用任意瘦-客户端协议、表示层协议或远程显示协议来显示输出到本地机器102,所述协议例如由位于美国佛罗里达州Ft.Lauderdale的CitrixSystems有限公司出品的独立计算架构(ICA)协议;由位于美国华盛顿州Redmond的微软公司出品的远程桌面协议(RDP);X11协议;由AT&T贝尔实验室出品的虚拟网络计算(VNC)协议;由位于美国加里福尼亚州Sunnyvale和位于以色列Raanana的Qumranet有限公司出品的SPICE协议;由加里福尼亚州Milpitas的VESA公司出品的Net2Display协议;由位于加拿大不列颠哥伦比亚省的Burnaby的Teradici公司出品的PC-over-IP协议;由加里福尼亚州SanJose的WyseTechnology有限公司出品的TCX协议;由纽约州纽约市的哥伦比亚大学开发的THINC协议;或由马萨诸塞州Chelmsford的Desktone有限公司开发的Virtual-D协议。该应用可使用任何类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施例中,该应用包括与互联网协议电话(VoIP)通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,该应用包括与实时数据通信相关的任一应用,例如用于流式传输视频和/或音频的应用。本地机器102和远程机器106可以被部署为任意类型和形式的计算装置和/或在其上执行,例如能够与任意类型和形式的网络通信并且执行此处所描述的操作的计算机、网络装置或设备。图1B和1C描述了用于实施本地机器102或远程机器106的实施例的计算装置100的框图。如图1B和1C所示,每个计算装置100包括中央处理单元121和主存储器单元122。如图1B所示,计算装置100可包括存储装置128、安装装置116、网络接口118、I/O控制器123、显示装置124a-124n、键盘126和诸如鼠标的指示装置127。存储装置128可包括但不限于操作系统、软件和客户机代理120。如图1C所示,每个计算装置100也可包括另外的可选部件,例如存储器端口103、桥170、一个或多个输入/输出装置130a-130n(总的使用标号130表示)以及与中央处理单元121通信的高速缓存存储器140。中央处理单元121是响应并处理从主存储器单元122取出的指令的任意逻辑电路。在一些实施例中,中央处理单元121由微处理器单元提供,例如:由位于美国加利福尼亚州MountainView的Intel公司制造的微处理器单元;由位于美国伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由位于美国加利福尼亚州SantaClara的Transmeta公司制造的微处理器单元;RS/6000处理器,由位于美国纽约州WhitePlains的InternationalBusinessMachines公司制造的微处理器单元;或者由位于美国加利福尼亚州Sunnyvale的AdvancedMicroDevices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任意一种,或者能够如此处所述方式运行的任意其它处理器。主存储器单元122可以是能够存储数据并允许微处理器121直接访问任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPMDRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDORAM)、扩展数据输出DRAM(EDODRAM)、突发扩展数据输出DRAM(BEDODRAM)、增强DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、双倍数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接内存总线DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储器芯片的任意一种,或者能够如此处所述方式运行的任意其它可用存储器芯片。在图1B所示的实施例中处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1C中主存储器122可以是DRDRAM。图1C描述在其中主处理器121通过有时被称为后端总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1B所示的实施例中,处理器121通过本地系统总线150与各种I/O装置130进行通信。可以使用各种不同的总线将中央处理单元121连接到任意I/O装置130,包括VESAVL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示器124通信。图1C描述了在其中主处理器121通过HYPERTRANSPORT、RAPIDIO、或INFINIBAND通信技术直接与I/O装置130b通信的计算机100的实施例。图1C也描述了在其中本地总线和直接通信相混合的实施例:处理器121使用本地互连总线与I/O装置130a通信同时直接与I/O装置130b通信。计算装置100中可以有多种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1B所示,I/O装置可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接(未示出)以接纳手持USB存储装置,例如由位于美国加利福尼亚州LosAlamitos的TwintechIndustry有限公司生产的USB闪存驱动系列装置。再次参考图1B,计算装置100可以支持任意适当的安装装置116,例如用于接纳诸如3.5英寸、5.25英寸磁盘或ZIP磁盘的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装软件和程序的任意其它装置。计算装置100还可以包括存储装置,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任意程序的应用软件程序。或者,可以使用安装装置116的任意一种作为存储装置。此外,操作系统和软件可从可引导介质运行,可引导介质例如是可引导CD,诸如KNOPPIX,其为一种用于GNU/Linux的可引导CD,可自knoppix.net作为GNU/Linux一个发行版获得。此外,计算装置100可以包括网络接口118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11、T1、T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、基于SONET的以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某种组合。可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。在一个实施例中,计算装置100可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或由位于美国佛罗里达州Ft.Lauderdale的CitrixSystems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100对接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它装置。在一些实施例中,计算装置100可以包括多个显示装置124a-124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O控制器123可以包括任何类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n对接、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n对接。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100连接的计算装置100a和100b。这些实施例可以包括被设计和构造来使用另一个计算机的显示装置作为计算装置100的第二显示装置124a的任何类型的软件。本领域的普通技术人员应认识和意识到可以将计算装置100配置成拥有多个显示装置124a-124n的各种方式和实施例。在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线、串行SCSI总线。图1B和1C中所描述类型的计算装置100通常地在操作系统的控制下运行,所述操作系统控制任务的调度和对系统资源的访问。计算装置100可运行任何操作系统,诸如任意版本的MICROSOFTWINDOWS操作系统;不同发行版本的Unix和Linux操作系统;用于Macintosh计算机的MACOS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者能够在计算装置上运行且执行此处所描述的操作的任意其它操作系统。典型的操作系统包括但不限于:WINDOWS3.x、WINDOWS95、WINDOWS98、WINDOWS2000、WINDOWSNT3.51、WINDOWSNT4.0、WINDOWS7、WINDOWSCE、WINDOWSXP和WINDOWSVISTA,所有这些均由位于美国华盛顿州Redmond的微软公司出品;由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的MACOS;由位于美国纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于美国犹他州SaltLakeCity的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。计算装置100可以是任意工作站、电话、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话或其他便携电信装置、媒体播放装置、游戏系统、移动计算装置,或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的任意其它类型和/或形式的计算、电信或者媒体装置。例如,计算机装置100可包括由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的IPOD系列装置、由位于日本东京的索尼公司出品的PLAYSTATION2、PLAYSTATION3或PERSONALPLAYSTATIONPORTABLE(PSP)装置,由位于日本京都的Nintendo有限公司出品的NINTENDODS、NINTENDOGAMEBOY、NINTENDOGAMEBOYADVANCED或NINTENDOREVOLUTION装置,或者由位于美国华盛顿州Redmond的微软公司出品的XBOX或XBOX360装置。在一些实施例中,计算装置100可以有不同的处理器、操作系统以及符合该装置的输入装置。例如,在一个实施例中,计算装置100是由Palm有限公司出品的TREO180、270、600、650、680、700p、700w/wx、750、755p、800w、Centro或Pro智能电话。在这些实施例的一些中,TERO智能电话是在PalmOS操作系统的控制下操作并且包括笔输入装置以及五向导航装置。在其他实施例中,计算装置100是移动装置,例如,JAVA使能蜂窝电话或个人数字助理(PDA),诸如i55sr、i58sr、i85s、i88s、i90c、i95c1、i335、i365、i570、I576、i580、i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、i776或im1100,以上这些均由位于美国伊利诺伊州Schaumburg的摩托罗拉公司制造;由位于日本京都的Kyocera公司制造的6035或7135;或者由位于韩国首尔的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算装置100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的SonyEricssonMobileCommunicationsAB公司制造的移动装置。在其他实施例中,计算装置100是黑莓(Blackberry)手持或智能电话,诸如由ResearchInMotion有限公司制造的装置,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520、黑莓PEARL8100、8700系列、8800系列、黑莓Storm、黑莓Bold、黑莓Curve8900、黑莓PearlFlip。在其他实施例中,计算装置100是智能电话、PocketPC、PocketPC电话,或支持MicrosoftWindowsMobileSoftware的其它手持移动装置。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述操作的其它形式的计算或者电信装置。在一些实施例中,计算装置100是数字音频播放器。在这些实施例的一个中,计算装置100是诸如由位于美国加利福尼亚州Cupertino的苹果计算机公司制造的AppleIPOD、IPODTouch、IPODNANO和IPODSHUFFLE系列装置的数字音频播放器。在这些实施例的另一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储装置来工作。在其他实施例中,计算装置100是诸如由位于美国新泽西州RidgefieldPark的SamsungElectronicsAmerica公司制造的DigitalAudioPlayerSelectMP3播放器,或由位于美国伊利诺伊州Schaumburg的Motorola公司制造的Motorolam500或m25的数字音频播放器。在其他实施例中,计算装置100是便携媒体播放器,诸如由CreativeTechnologies有限公司制造的ZenVisionW、ZenVision系列、ZenPortableMediaCenter装置或DigitalMP3系列的MP3播放器。仍在其他实施例中,计算装置100是支持以下文件格式的便携媒体播放器或数字音频播放器,这些文件格式包括但不限于MP3、WAV、M4A/AAC、WMAProtectedAAC、AIFF、Audible有声读物、AppleLossless音频文件格式和.mov、.m4v以及.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式。在一些实施例中,计算装置100包括装置的组合,例如与数字音频播放器或便携媒体播放器相组合的移动电话。在这些实施例的一个中,计算装置100是组合数字音频播放器和移动电话的MotorolaRAZR或MotorolaROKR系列。在这些实施例的又一个中,计算装置100是由位于加利福尼亚州Cupertino的苹果公司制造的iPhone系列智能电话中的装置。在一个实施例中,计算装置102a可从远程机器106请求资源,同时向客户机102b提供远程机器106的功能。在这样的实施例中,就从远程机器106(其可以被称为服务器)接收数据而言,计算装置102a可以被称为客户机,而就第二客户机102b而言,计算装置102a可以被称为服务器。在又一个实施例中,客户机102可代表客户机102上的用户从远程机器106请求资源。如图1D所示,计算装置100可以包括多个处理器,并且可以提供用于对不只一个数据片同时执行多个指令或者同时执行一个指令的功能。在一些实施例中,计算装置100可包括具有一个或多个核的并行处理器。在这些实施例的一个中,计算装置100是共享内存并行装置,具有多个处理器和/或多个处理器核,将所有可用内存作为一个全局地址空间进行访问。在这些实施例的又一个中,计算装置100是分布式存储器并行装置,具有多个处理器,每个处理器仅访问本地存储器。在这些实施例的又一个中,计算装置100既有共享的存储器又有仅由特定处理器或处理器子集访问的存储器。在这些实施例的又一个中,如多核微处理器的计算装置100将两个或多个独立处理器组合在一个封装中,通常在一个集成电路(IC)中。在这些实施例的又一个中,计算装置100包括具有单元宽带引擎(CELLBROADBANDENGINE)架构的芯片,并包括高能处理器单元以及多个协同处理单元,高能处理器单元和多个协同处理单元通过内部高速总线连接在一起,可以将内部高速总线称为单元互连总线。在一些实施例中,处理器提供用于对多个数据片同时执行单个指令(SIMD)的功能。其他实施例中,处理器提供用于对多个数据片同时执行多个指令(MIMD)的功能。又一个实施例中,处理器可以在单个装置中使用SIMD和MIMD核的任意组合。在一些实施例中,计算装置100可包括图形处理单元。图1E所示的这些实施例的一个中,计算装置100包括至少一个中央处理单元121和至少一个图形处理单元。在这些实施例的又一个中,计算装置100包括至少一个并行处理单元和至少一个图形处理单元。在这些实施例的又一个中,计算装置100包括任意类型的多个处理单元,多个处理单元中的一个包括图形处理单元。在一个实施例中,资源可以是程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或对本地计算装置102的用户可用的其他资源。可以经由多种访问方法将资源传送到本地计算装置102,所述访问方法包括但不限于:传统的直接安装在本地计算装置102上,经由应用流式传输的方法传送到本地计算装置102、将经由第三计算装置106b上的资源的执行所产生的并且经由表示层协议向本地计算装置102传输的输出数据传送到本地计算装置102,将通过经由在远程计算装置106上执行的虚拟机执行资源所产生的输出数据传送到本地计算装置102,或者从连接到本地计算装置102的可移动存储装置(例如USB装置)执行并产生输出数据,或经由在本地计算装置102上执行的虚拟机执行并产生输出数据。在一些实施例中,本地计算装置102将通过资源的执行所产生的输出数据传输到另一个客户计算装置102b。在一些实施例中,本地计算装置102的用户连接到远程计算装置106并且在本地计算装置102上查看在远程计算装置106上生成的远程桌面环境的本地版本的显示,其包括多个数据对象。在这些实施例的一个中,通过远程计算装置106(或通过第二远程计算装置106b)将至少一个资源提供给用户并且将其显示在远程桌面环境中。然而,出于选择或者由于策略或技术要求,可能有用户在本地计算装置102上执行的资源。在这些实施例的又一个中,本地计算装置102的用户更喜欢提供对用户可用的所有资源的访问的集成的桌面环境,而不是对于由单独的机器提供的资源的不同的桌面计算环境。例如,用户可能发现在多个图形显示之间的导航是混乱的且难以有效使用。或者,用户可能希望将由一个机器所提供的一个应用生成的数据与由不同的机器提供的另一个资源联合使用。在这些实施例的又一个中,可以通过与集成远程资源的和本地资源的显示的远程桌面环境进行交互来控制对执行资源、窗口移动、应用最小化/最大化、调整窗口大小和终止执行资源的请求。在这些实施例的又一个中,经由集成的桌面环境可访问的应用或其他资源-包括在本地计算装置102上执行的那些资源和在远程计算装置106上执行的那些资源-被显示在单个桌面环境中。在一个实施例中,来自远程计算装置106的数据对象被集成到由本地计算装置102生成的桌面环境中。在又一个实施例中,远程计算装置106维护集成的桌面。在又一个实施例中,本地计算装置102维护集成的桌面。在一些实施例中,单个远程桌面环境204被显示。在这些实施例的一个中,将远程桌面环境204作为全屏桌面显示。在其他实施例中,显示多个远程桌面环境204。在这些实施例的一个中,在一个或多个显示装置124上以非全屏模式显示远程桌面环境的一个或多个。在这些实施例的又一个中,在单独显示装置上以全屏模式显示远程桌面环境。在这些实施例的又一个中,在一个或多个显示装置142上以全屏模式显示远程桌面环境的一个或多个。B.用于在由本地机器生成并显示的任务栏按钮组中显示在该本地机器上生成并显示的图形数据的标识和在远程机器上生成且在本地机器上显示的图形数据的标识的系统和方法现参考图2,框图描述了用于在由本地机器生成并显示的用户界面元素中显示在该本地机器上生成并显示的图形数据的标识和在远程机器上生成且在本地机器上显示的图形数据的标识的系统的一个实施例。简而言之,系统200包括在本地计算装置102上执行的第一代理202、在远程计算装置106上执行的第二代理204、在远程计算装置106上执行的第一进程206和在本地计算装置102上执行的第二进程218。第一代理202从第二代理204接收第一进程206的标识符和由第一进程206生成的第一窗口的标识。第一代理202将第二窗口212与第一进程206的标识符相关联,第二窗口212是由本地机器102上的第一代理202生成的。响应于第二窗口212与第一进程206的标识符的关联,在本地机器102上执行的壳(shell)214在任务栏按钮组230中显示:i)第二窗口212的标识和ii)第三窗口216的标识,第三窗口216是由第二进程218生成的且被显示在本地机器102上。在一些实施例中,在计算装置上执行的进程-例如在远程计算装置106上执行的第一进程206或在本地计算装置102上执行的第二进程218-生成输出数据和窗口属性数据并且与在计算装置上执行的壳通信以根据所述窗口属性数据显示所述输出数据。在一些实施例中,该第一进程206也可以被称为远程应用。在其他实施例中,第一代理202从第二代理204接收图形数据和窗口属性数据并且将指示在包含多个数据对象的桌面环境中显示所接收的图形或窗口属性数据。在这些实施例的一个中,数据对象是在桌面环境中显示的窗口。在这些实施例的又一个中,数据对象是存储属性数据的数据结构,并且可以有或可以没有桌面环境中的关联的可视表示。在这些实施例的又一个中,数据对象是存储与用户界面元素关联的数据结构-可视状态、关联的功能的标识、图形数据的位置、标题栏内容等-并且窗口是该用户界面元素的图形表示。在这些实施例的又一个中,在机器上执行的壳214提供桌面环境中用户界面元素的显示。该壳也可以有多种名称,如选择器(finder)、图形用户界面(GUI)、视窗或X-windows接口或任何其他类似的术语。在这些实施例的又一个中,壳214根据与数据对象关联的属性数据来显示与该数据对象关联的图形数据。在这些实施例的又一个中,第一代理202与壳214通信以指示本地显示远程生成的数据。现参考图2,并更详细地,第一代理202在本地计算装置102上执行。尽管被称为第一代理,在一些实施例中,第一代理202可以被称为本地客户端、本地客户机进程、本地客户机代理或任何其他类似的术语。在一个实施例中,本地计算装置是如上文结合图1A-1E描述的计算装置。在又一个实施例中,本地计算装置是客户机装置102,其连接到服务器106以访问对本地计算装置102的用户可用的一个或多个资源。在又一个实施例中,第一代理202是表示层协议代理的部分。在又一个实施例中,第一代理202与表示层协议代理进行通信。第二代理204在远程计算装置106上执行。与第一代理一样,在一些实施例中,第二代理可以被称为远程代理、远程客户端、远程进程、服务器代理、服务器进程或任何其他类型的术语。在一个实施例中,远程计算装置是如上文结合图1A-1E描述的计算装置。在又一个实施例中,第二代理204是表示层协议代理的部分。在又一个实施例中,第二代理204与表示层协议代理进行通信。在一些实施例中,第一代理202包括接收器,该接收器用于从第二代理204接收与在远程机器106上生成的桌面环境关联的数据。在这些实施例的一个中,例如,第一代理202包括接收器(其可以例如作为动态链接库组件而被提供),该接收器从第二代理204接收窗口创建和窗口进程数据,以用于显示在远程机器106上生成的窗口的本地版本。在一些实施例中,第一代理202可以通过一个或多个连接接收数据,例如输出数据208和窗口属性数据210。在一个实施例中,一个或多个连接可以被多路复用为一个或多个虚通道。这样的多路复用可以使不同的虚通道具有不同的带宽限制或不同的优先级而同时仍是单个传输层连接的部分。这可以减少所需的传输层开销并且提供SSL或VPN隧道能力,同时仍允许在第二代理204和第一代理202之间的每通道压缩、缓冲,以及通信优先级的管理。在一些实施例中,这样的虚通道可以专用于特定内容类型或目的。例如,第一高优先级虚通道可以专用于输出数据208的传输,而第二低优先级虚通道可以专用于任务栏缩略图像的传输,下面将对其更详细地进行讨论。在一些实施例中,虚通道可以被打开或关闭,而不必解除或重新建立虚通道在其上通信的传输层连接。在一个实施例中,壳214是给计算装置的用户提供用户界面的软件。在一个实施例中,可以用第三方壳来补充或替代壳。在MICROSOFTWINDOWS中,默认壳是EXPLORER,其确定桌面的配置(例如、任务栏、通知区域、开始菜单等)。如上文所述,尽管被称为壳,但该壳也可以被称为GUI、选择器、浏览器、窗口界面或任何其他类似术语。在一些实施例中,第一代理202包括用于与壳214通信以修改桌面显示的功能。在这些实施例的一个中,第一代理202包括向生成和维护桌面环境中数据的显示的操作系统中的组件发送指令的发送器。在这些实施例的又一个中,第一代理202包括给第一代理202提供用于存储窗口属性数据或向操作系统发送显示指令的功能的组件;例如第一代理202可包括维护或修改任务栏数据的动态链接库组件。在一些实施例中,该发送器与第一代理202中的接收器通信,所述接收器接收来自第二代理204的窗口属性数据210和输出数据208。在这些实施例的一个中,第一代理202中的接收器从第二代理204接收数据并且将所接收的数据转发到发送器,发送器根据该转发的数据给操作系统发送指令。在其他实施例中,第一代理202包括用于存储从第二代理202接收的数据(例如窗口属性数据)的组件。在一些实施例中,窗口属性数据210或输出数据208可包括表示第一窗口207或第一进程206的图标。在又一个实施例中,窗口属性数据210或输出数据208可包括生成该窗口的应用或进程的图标。在许多实施例中,第一代理202可接收第一进程206或第一窗口207的图标或图标的位图,用于作为窗口属性数据210的本地显示在任务栏226或其他用户界面元素中进行显示。因此,当本地计算装置102的用户与任务栏按钮组交互时,该任务栏按钮组可以显示所接收的图标和/或文本,所述图标和/或文本包括第二窗口212、第一窗口207或第一进程206的标题。简单地提前参考,图4A示出了一个这样的实施例的示例屏幕截图,其示出了远程进程的记事本图标的显示。如图4A中所示,在这些实施例中,任务栏按钮组可以显示远程应用的图标和本地应用的缩略图。回去参考图2,在又一个实施例中,第一代理202可以接收第一窗口的输出数据的静态的屏幕截图或位图,用于在任务栏按钮组中进行显示。在一些实施例中,这样的屏幕截图或位图可以缩小比例。例如,输出数据可包括400x400像素的窗口,但第二代理204可以发送40x40像素的缩略图以用于在任务栏按钮组中进行显示。这可以减少带宽需求。可以周期性地,或响应于用户命令,来发送这样的静态屏幕截图。例如,在一个实施例中,第一代理202可以检测与任务栏按钮组的用户交互,与3D或flip-3D界面的用户交互,或者用户输入alt-tab或类似命令。响应于检测到这样的交互,在一个实施例中,第一代理202可以请求刷新窗口的输出数据208或者请求重绘输出数据208,接收这样的刷新或重绘的输出数据208,并且可以在任务栏按钮组或其他用户界面元素中显示该新接收的输出数据的缩略图。在又一个实施例中,响应于检测到该交互,如上文所讨论,第一代理202可以请求输出数据的新的、重绘的、或刷新的静态缩略图。在一些实施例中,任务栏226可以包括用于显示应用的图标或者缩略图像的功能。在一些实施例中,可以通过任务栏226呈现来自本地窗口的内容的这样的缩略图像,而在其他实施例中,缩略图像可以是由诸如壳214或本地桌面环境220的另一个单元生成的,或者可以从存储器单元中检索缩略图像。类似于这个后一种选择,可以将应用图标作为位图存储在存储器单元中,而任务栏226可以从该存储器单元中检索应用图标以进行显示。相应地,在一个实施例中,任务栏226可以包括用于从存储器单元检索图像或位图并且显示该图像或位图的功能,而不需要知道该图像或位图是图标还是缩略图。所描述的另一种方式,可以将窗口输出的缩略图像看成好像其是应用图标一样进行存储,并且可以指示任务栏226显示该缩略图像,就像它是任何其他应用图标一样。这可以允许在仅具有显示应用图标能力的传统系统上显示缩略图像。利用任务栏的操作系统的某些版本可以使用一个或多个标识符来对任务栏中的按钮进行分组。例如,微软公司出品的Windows7使用为每个窗口设置的AppID来确定如何分组对应于每个窗口的任务栏按钮。在一些实施例中,可以由应用厂商来显式地设置这些AppID。例如,MicrosoftWord的AppID是由微软公司显式地设置的。当操作系统检测到具有对应于MirosoftWord的AppID的两个任务栏按钮时,该操作系统可以将这些按钮分到单个任务栏按钮组中。在其他实施例中,可以隐式地设置AppID。一个这样的方法涉及到创建该窗口的进程的文件系统路径。例如,如果应用处于C:\ProgramFiles\MyCompany\MyApplication.exe,则该系统可以将这个文件系统路径转变成要用作AppID的字符串。如果该应用生成多个窗口,这些窗口每个都会有相同的AppID,并且可以被适当地分组。一些其他版本的操作系统仅将文件系统路径用于任务栏按钮分组。例如,也是微软公司的WindowXP或WindowVista仅使用上文讨论的文件系统路径的后一种方法来确定任务栏按钮分组。这给本地显示来自远程应用的应用输出带来了两方面的困难。第一,最初生成窗口的远程应用可能具有不同的文件系统路径,特别是采用服务器侧虚拟化技术。第二,本地客户端可以生成用于应用输出的窗口,由此操作系统可能将到本地客户端的路径看作适当的文件系统路径。为纠正这点,在一些实施例中,远程应用可以发送包含该应用的文件系统路径的远程窗口配置信息。本地客户端可以通过用预定的本地路径替换这个文件系统路径的一部分来修改该路径。例如,远程应用可能位于D:\ApplicationServer\RemoteApplications\ProgramFiles\MyCompany\MyApplication.exe。一旦收到该路径,本地客户端可以修改该路径以例如用指向到对应的ProgramFiles文件夹的本地系统驱动器和路径的全局唯一标识符替换该路径的第一部分至“ProgramFiles”。因此,这个新的文件系统路径可包括本地路径和远程路径的组合,由此可以被称为混合文件系统路径。简要参考任务栏分组机制,不同的操作系统使用不同的机制来对任务栏按钮进行分组。例如,在许多实施例中,如上文所讨论的,Windows7允许通过与组的关联对任务栏按钮进行任意分组。然而,WindowsXP和Vista以及其他操作系统使用表示任务栏的列表,该列表中用标记为按钮组的条目来隔开表示按钮的条目。例如,如果列表包括“组1、按钮A、组2、按钮B、组3、按钮C、按钮D、按钮E”,则会有3个组,前两个组各自具有一个按钮,而第三个组具有三个按钮。系统可以被默认地配置为隐藏具有一个按钮的任务栏按钮组中的显示,并且隐藏具有多个按钮的组中的按钮。由于未示出这些被隐藏的条目,上文的任务栏按钮组将显示为“按钮A、按钮B、组3”,其中按钮“组3”代表3个活动窗口。在一些实施例中,可以通过编辑这个列表或者改变按钮与组的关联来执行将按钮从一个组移动到另一个组。在一个实施例中,本地客户端可以生成用于应用输出的新窗口。在一些实施例中,该新窗口可以作为对应于该本地客户端的按钮组的一部分而被创建。本地客户端可以使用上文所讨论的任何方法来为新窗口确定任务栏按钮组标识符。在一些实施例中,本地客户端可以搜索任务栏以确定是否存在包含相似标识符的现有按钮组。例如,如果对于记事本应用已存在按钮组,并且该新的窗口具有对应于记事本应用的任务栏按钮组标识符,则本地客户端可以确定已经存在合适的按钮组。然后,本地客户端可以在任务栏列表中将这个按钮条目移动到该按钮组之中。如果本地客户端确定不存在任何合适的按钮组(例如,没有任何对应的应用正在本地运行或者没有为同一远程应用的另一窗口创建按钮组),本地客户端可以基于该任务栏按钮组标识符在任务栏列表中创建新的按钮组,并且将对应于该新窗口的按钮移动到这个新创建的按钮组。现参考图3,流程图描述了用于在由本地机器生成并显示的任务栏中显示在该本地机器上生成并显示的图形数据的标识和在远程机器上生成且在本地机器上显示的图形数据的标识的方法的一个实施例。总的来说,该方法300包括由在本地机器上执行的本地客户端接收由在远程机器上执行的远程应用生成的应用输出,以及接收远程窗口配置。该方法包括由本地客户端生成用于显示所接收的应用输出的应用输出窗口,该应用输出窗口包括本地任务栏分组配置信息。该方法还包括响应于本地任务栏分组配置信息,由本地机器的操作系统、壳、GUI或其他进程来更新任务栏。现参考图3,更具体地,在本地机器上执行的第一代理(被不同地称为第一代理或本地客户端)从在远程机器或计算机上执行的第二代理(被不同地称为第二代理或远程客户机)接收由在该远程机器或计算机上执行的远程应用生成的应用输出以及远程窗口配置信息。这样的远程窗口配置信息可包括关于该窗口的细节和/或关于生成该窗口的进程的信息,所述关于窗口的细节包括句柄、大小、位置、透明度值或其他窗口细节,所述关于生成该窗口的进程的信息包括进程名、到该进程的文件系统路径、进程ID、组ID、进程描述、父进程ID、父-子关系或其他进程信息。在一个实施例中,第二代理204查询在远程机器106上执行的操作系统的组件以检索第一窗口207的标识。在又一个实施例中,例如,第二代理204检索第一窗口207的ApplicationUserModelID(应用程序用户模型ID)(可互换地称为ApplicationUserModelID、AppUserModelID或AppID),并且将该标识符传输到在本地机器102上执行的第一代理202。例如,但不限于,在一个实施例中,第二代理204可以使用例如在MicrosoftWindows的一些版本中所提供的IPropertyStore接口的GetValue()方法的壳接口来检索该窗口的PKEY_AppUserModel_ID属性。在又一个实施例中,第二代理204查询在远程机器106上执行的操作系统的组件以检索生成输出数据208的第一进程206的标识和形成第一窗口207的窗口属性数据210;例如,第二代理204可使用应用编程接口来查询操作系统的动态链接库组件。例如但不限于,在一些实施例中,第二代理204可以使用由操作系统提供的API,例如在ntdll.dll库中某些版本的MicrosoftWindows中所提供的中NtQueryInformationProcessAPI。通过对于参数ProcessInformationClass使用十进制参数值50,第二代理204可以检索结构体{UINTnAppIdLaunchFlags;USHORTnBufferLengthlnBytes;WCHARszAppUserModelID[l];}的结构。在一个实施例中,nAppIdLaunchFlags可包括具有指示szAppUserModelId字符串是否是指进程的显式AppID的标志的位掩码。在一个这样的实施例中,被设置为0x1000的十六进制标志可指示在szAppUserModelId字段中显式地设置了AppID。在这个实施例中,如果没有设置该标志,则szAppUserModelId字段可以被忽略。在又一个实施例中,当检测到创建了新窗口时,第二代理204使用窗口句柄收集各种进程信息。在又一个实施例中,当第一进程206被创建时,第二代理204从在远程机器106上执行的操作系统接收第一进程206的标识。在另一个实施例中,第二代理204在第一进程206被创建时接收第一进程206的标识,即使没有为第一进程206创建新的窗口。在又一个实施例中,第二代理204将包含进程ID的进程数据发送到第一代理202。在一些实施例中,可以显式地建立应用程序用户模型ID。例如,在这些实施例中,应用程序用户模型ID可以是由应用的厂商或开发者输入的字符串以标识公司名、产品名、产品版本或标识该应用或进程的任何其他信息。在其他实施例中,可以隐示地建立应用程序用户模型ID。例如,在这些实施例中,应用程序用户模型ID可包括由操作系统或进程、模块、守护进程或其他逻辑生成的字符串,并且可以包括进程ID(PID)、用户ID(UID)、文件位置或路径、文件描述、启动的时间、存储寄存器号、或对操作系统或其他逻辑可用于识别该应用或进程的任何其他信息。在其他实施例中,如上文所讨论的,应用或进程既可有显式标识符也可有隐式标识符。在另一个实施例中,显式标识符可以优先于隐式标识符。因此,当对这样的应用或进程执行此处所述的方法时,如果显式标识符存在,则可以优先使用显式标识符。在许多实施例中,窗口配置信息可包括单个标识符,并且可包括被设置为预定值以指定该标识符是被显式地设置还是被隐式地设置的标志或位。在一些实施例中,第二代理204传输第一窗口207的标识符和第一进程206的标识符。在其他实施例中,第二代理204仅传输第一窗口207的标识符。在又一个实施例中,第二代理204仅传输第一进程206的标识符。在一个实施例中,第一代理202接收第一窗口207的标识符和第一进程206的标识符中的至少一个。在又一个实施例中,第一代理202中的组件(例如,动态链接库组件)接收第一窗口207的标识符和第一进程206的标识符中的至少一个。在一些实施例中,第一代理202存储所接收的标识符。在这些实施例的一个中,第一代理202在内存中的哈希表中存储所接收的标识符。在一些实施例中,在步骤304,第一代理202可生成第二窗口212(也被称为应用输出窗口),用于在本地机器102上进行显示。在这些实施例的一个中,第一代理202指示在第二窗口212中显示由在远程机器106上执行的第一进程206生成的输出数据208。在这些实施例的一个中,第一代理202指示根据由第一进程206对远程机器106上的第一窗口207指定的窗口属性数据210来形成第二窗口212。在一些实施例中,第一代理202或本地客户端可以将第二窗口与和第一进程的标识符相关联。在其他实施例中,可以生成第二窗口以包含远程窗口配置信息。在一个实施例中,第一代理202将所接收第一窗口207的标识符分配给第二窗口212。例如,但不限于,在一个实施例中,第一代理202可以使用例如在MicrosoftWindows的一些版本中所提供的IPropertyStore接口的SetValue()方法的壳接口来设置窗口的PKEY_AppUserModel_ID属性。在又一个实施例中,第一代理202将所接收第一进程206的标识符分配给第二窗口212。在又一个实施例中,第一代理202将第一窗口207的应用程序用户模型标识符分配给第二窗口212。在又一个实施例中,第一代理分配由在远程机器106上执行的壳生成的应用标识符。在又一个实施例中,第一代理202可以根据所接收的第一进程的标识符为第二窗口212生成新的标识符。在这样的实施例中,第一代理202将所生成的新的标识符分配给第二窗口212。在又一个实施例中,第一代理202用所接收的第一进程206的标识符来代替第二窗口212的窗口属性数据中的现有标识符(例如其可能是第一代理本身的标识符)。在许多实施例中,这些标识符可包括本地任务栏分组配置信息。例如,可以生成具有应用标识符、AppID、进程名、进程文件系统路径或其他标识符的窗口,并且操作系统或任务栏可以响应于该标识符或者响应于该标识符与其他窗口的标识符的相似性来将该窗口与任务栏中的其他窗口分组在一起。在一些实施例中,第一代理202可以确定第一进程206和第二进程218大体上相似。在这些实施例的一个中,第一代理202确定第一进程206的标识符和第二进程218的标识符大体上相似;例如,第一代理202可以比较与第一进程206和第二进程218关联的进程模块数据,或者第一代理202可以将由第二进程218生成的窗口的属性与由第一进程206生成的窗口属性数据进行比较。在其他实施例中,第一代理202根据确定第一进程206与第二进程218大体上相似来指示将第二窗口212的标识符的显示与任务栏按钮组230中的显示进行组合。在另外的实施例中,第一代理202使用所接收的进程可执行文件路径数据来识别要与第二窗口212关联的任务栏按钮组230。在这些实施例的一个中,第一代理202使用所接收的进程可执行文件路径数据来确定应该为第二窗口212生成新的任务栏按钮组230;然后第一代理202可以指示生成并显示该新的任务栏按钮组230。在一个实施例中,第一代理202检索在任务栏中显示的工具栏按钮的标识符的枚举;例如,第一代理202可执行向操作系统查询该列举的调用(例如,但不限于“TB_GETBUTTON”命令)。在另一个实施例中,第一代理202将所列举的工具栏按钮的标识符与第一窗口207的标识符相关联;例如,第一代理202可以创建所接收的第一窗口207的标识符与所枚举的工具栏按钮的标识符之间的映射。在又一个实施例中,第一代理202创建将要在任务栏按钮组230中标识的窗口的索引。在又一个实施例中,第一代理202将第二窗口212的标识符(其可以是第一窗口207的标识符)添加到所创建的索引中。在又一个实施例中,第一代理202确定第三窗口216是由与第一进程206大体上相似的进程生成的,并且响应于该确定,添加第三窗口216的标识符到所创建的索引。在又一个实施例中,第一代理202创建由在所创建的索引中存储的标识符填充的任务栏按钮组。在一个这样的实施例中,该任务栏按钮组可以具有按钮样式的BTNS_DROPDOWN。在另一个这样的实施例中,创建任务栏按钮组可以包括使用诸如TB_MOVEBUTTON的命令来填充该组。在一些实施例中,第一代理202可以响应于进程的显式标识符大体上相似来对任务栏按钮进行分组。例如,每个窗口可以具有由生成该窗口的应用的开发者或厂商设置的显式标识符,这允许操作系统相应地分组这些窗口。使用上文所讨论的技术,由远程系统上的远程应用生成的窗口的标识符可以与由不同的本地应用在本地系统上生成的对应窗口相关联,这允许本地生成的窗口使用远程窗口的标识符,并且还允许本地生成的窗口与相同应用的其他本地窗口分组在一起。例如,在远程系统上执行的浏览器应用可以生成窗口并且显式地设置包含该浏览器名称的标识符。来自这个窗口的显示数据可以被传递到执行远程显示应用的本地机器,使得该远程显示应用能生成包含该显示数据的对应窗口。在该远程显示应用上,所生成的窗口可以被设置为具有由浏览器生成的窗口的标识符,而不是使用该显示应用的标识符。如果本地机器也正在执行浏览器应用的副本,由本地浏览器生成的窗口因此可以与该由远程显示应用生成的窗口分组在一起,这给用户提供了无缝交互环境。类似地,在其他实施例中,第一代理202可以响应于进程的隐式标识符大体上相似来对任务栏按钮进行分组。例如,如果应用或进程的开发者或厂商没有设置隐式标识符,则仍可以生成具有如上文结合图2所讨论的隐式标识符的窗口,以及如上文所讨论的用显式标识符对窗口进行分组。在一些实施例中,显式标识符和隐式标识符可以通过提供指示该标识符是否是由系统生成的标志或标识符来进行区别。在一些实施例中,响应于第二窗口与第一进程的标识符的关联,在本地机器上执行的壳可以在任务栏按钮组中显示i)第二窗口的标识和ii)第三窗口的标识的显示,第三窗口是由在本地机器上执行的第二进程生成的并且被显示在本地机器上(306)。在一个实施例中,壳214接收第二窗口212的标识,第一代理202已经将其修改为例如第一窗口207的标识符或第一进程206的标识符。在又一个实施例中,壳214将第二窗口212的标识与由大体上类似第一进程206的应用生成的其他窗口的标识符显示在一起。在又一个实施例中,例如,壳214接收第二窗口212的标识(其是第一进程206的标识),确定在本地桌面环境中所示的任务栏226显示了对于本地执行的相似进程的任务栏按钮组230,以及将第二窗口212的标识符的显示与在该任务栏按钮组230中的显示组合在一起;例如但不限于,壳214确定第二窗口212的标识符指示第一进程206为诸如MICROSOFTWORD的文字处理应用,确定在任务栏上的现有任务栏按钮组230显示由本地执行的MICROSOFTWORD的实例生成的窗口的标识符,以及将第二窗口212的标识符加入到任务栏按钮组230的显示。在一些实施例中,用户可以指定是否启用或禁用用于组合在本地机器上和在远程机器上生成的任务栏按钮组条目的显示的功能。在其他实施例中,用户可以指定系统将远程生成的任务栏按钮组条目分组在一起,且与本地生成的任务栏按钮组条目分开。在一些实施例中,如上所述,本地机器102的用户连接到远程机器106并且查看在远程机器106上生成的远程桌面环境的本地版本在本地机器102上的显示(包括多个数据对象),而且经由集成的桌面环境可访问的应用或其他资源(在本地机器102上生成的那些资源和在远程机器106上生成的那些资源)被显示在远程桌面环境中,如同其正在远程桌面环境上执行或者从远程桌面环境可执行一样。在这些实施例的一个中,本地机器102上的组件(例如,第一代理202)将远程生成的窗口集成到本地桌面环境中。在这些实施例的又一个中,远程机器106上的组件将在本地机器102上生成的窗口集成到由远程机器106生成的桌面环境中。在这些实施例的又一个中,尽管在上文将本地机器102描述为由用户访问的机器且将远程机器106描述为传输窗口属性数据和输出数据以用于由本地机器102集成,但是反过来也是可行的,也就是说,本地机器102提供如上文所述的由远程机器106提供的功能(包括,例如收集和传输用于集成到桌面环境中的进程数据)而远程机器106提供如上文所述的由本地机器102提供的功能(包括,例如接收进程标识数据并指示将所接收的数据集成到桌面环境中)。在这样的实施例中,当在本地机器102上执行的本地进程与由远程机器106生成的远程桌面集成在一起时,在本地机器102上执行的进程的表示被显示在该远程桌面环境内的任务栏中,并且被分组在包含在远程机器106上执行的大体上相似进程的标识的任务栏按钮组230中。在这些实施例的又一个中,远程机器106a接收与在第二远程机器106b上执行的进程关联的进程数据。在这样的实施例中,远程机器106a将在第二远程机器106b上执行的进程的表示集成在远程桌面环境内的任务栏中,并且将该表示分组在包含在远程机器106a上执行的大体上相似进程的标识的任务栏按钮组230中。现参考图4A,屏幕截图描述在本地机器上和在远程机器上生成的任务栏按钮组条目的组合显示的一个实施例。任务栏226包括任务栏按钮组230。在由图4A所描绘的示例中,任务栏按钮组230显示由文字处理进程(在这个案例中,该进程是NOTEPAD)生成的每个窗口的标识符。在一些实施例中,窗口的标识符是被包含在窗口属性数据中的字母数字串(例如,窗口的标题)。在其他实施例中,窗口的标识符可包括由进程生成的输出数据的“缩略图”描述;例如,如图4A所示,任务栏按钮组230可以包括在文字处理窗口中显示的小的文本形式作为该窗口的标识符的部分。如图4A中所示,可以同时显示不只一个任务栏按钮组230。例如,在图4A中,显示了三个按钮组:最左边的任务栏按钮组包括两个堆叠的表示执行计算器应用或进程的图标;中间的任务栏按钮组包括两个堆叠的表示互联网浏览器应用或进程的不同实例的图标;以及在右边的任务栏按钮组显示两个堆叠的记事本应用的图标。而且,在一些实施例中,响应于鼠标点击或悬停,最右边的任务栏按钮组被展开以示出显示224和210以及标识符218和206。在一些实施例中,窗口属性数据包括构成窗口标题的文本,例如在窗口中显示的文件的名称。在其他实施例中,生成窗口的进程的标识符(例如第二进程218的标识符或与第二窗口212关联的第一进程206的标识符)被包含在窗口属性数据(例如窗口属性数据224或窗口属性数据210)中。在这些实施例的一个中,以进程模块数据的形式隐式地提供进程标识符。在这些实施例的又一个中,以应用标识符(例如,AppID)的形式显式地提供进程标识符。在其他实施例中,构成标题的可视文本标识符不同于应用或进程标识符或应用标识符。在一个这样的实施例中,可响应于应用名或进程名或者应用标识符生成该可视文本标识符,而在另一个这样的实施例中,可响应于窗口标题、字符串或其他显式或隐式的标识符来生成该可视文本标识符。例如,在一个这样的实施例中,应用标识符可能是基于诸如CompanyName.ApplicationName(公司名.应用名)的字符串,且该可视文本标识符可以仅是ApplicationName。在一些实施例中,第一代理202使得能够在单个任务栏按钮组230中显示由本地执行的应用生成的窗口的标识符和由远程地执行的应用生成的窗口的标识符。现参考图4B,屏幕截图描述在本地机器上和在远程机器上生成的任务栏按钮组条目的组合显示的一个实施例。如图4B中所示,在一些实施例中,在任务栏按钮组中显示的窗口属性数据是与表示生成该窗口的进程的图标(表示MICROSOFTINTERNETEXPLORER的风格化的“e”)联合显示的字母数字串(例如,“FILENAME-PROCESSNAME”(文件名-进程名))。在一些实施例中,如上文所讨论的,在任务栏按钮组230中显示的窗口属性数据包括该窗口的图形表示,其可包括进程的图形表示(例如图标和标识的字符数字串)。在其他实施例中,任务栏按钮组230显示图标(例如,快捷方式图标),该图标给用户提供例如启动所关联的应用的执行的能力的功能。在这些实施例的一个中,例如,通过在所显示的图标上进行点击,本地机器102的用户能启动与该图标关联的应用的执行。在这些实施例的又一个中,第一代理202与壳214通信以将第二窗口212的标识符与本地快捷方式图标分组在一起。在这些实施例的又一个中,第一代理202将第一进程206的标识符与第二窗口212关联并且将其与到第一进程206的本地执行版本的快捷方式相关联;例如,第一代理202可确定第一进程206的标识符和第二进程218的标识符大体上相似(例如,第二进程218是第一进程206的本地执行版本),并且基于该确定,将第二窗口212与到第二进程218的快捷方式相关联。如上文结合图4A所讨论的,可以同时在任务栏226中显示多个任务栏按钮组230。而且,如图4B中所示,可以将一些应用或进程分组在一起,例如所示的web浏览器进程的五个实例,而其他应用或进程可以保持未分组,例如所示的记事本的三个实例。在一些实施例中,在任务栏中显示的窗口属性数据包括由该窗口显示的数据类型的标识。在这些实施例的一个中,例如,大体上相似类型的进程可生成和显示大体上不同类型的数据-例如,允许用户查看远程机器上的数据的第一进程(例如互联网浏览应用)可能显示多个不同的网页,而第二互联网浏览进程专用于基于web应用的显示。在这些实施例的又一个中,第一代理202可指示根据数据类型来对任务栏按钮进行分组,例如通过将显示网页的互联网浏览进程的标识组合在第一任务栏按钮组230中,同时将显示基于web应用的互联网浏览进程组合在第二任务栏按钮组230b中。在这些实施例的又一个中,每个大体上不同的基于web的应用被分配单独的任务栏按钮组。在这些实施例的又一个中,第一代理202使用所接收的应用标识符来确定是否在与大体上相同类型的进程关联的窗口中显示大体上不同类型的数据;例如这样的应用标识符可包括但不限于管理员限定的标识符、由基于web应用指定的标识符和窗口属性数据(例如,但不限于,标题、图标或其他可视的或内部的基于web应用标识符)。在一些实施例中,通过使用关于承载并创建给定的主窗口207(其被本地显示为第二窗口212)的进程206的数据-并且特别是与在本地机器102上所生成的桌面环境上的任务栏上显示的关于窗口207的信息关联的数据-可以确定要与该窗口的本地版本关联的目的任务栏组,并且可以将远程应用的窗口的任务栏按钮移动到这个目的组。现参考图4C,示出描述没有对表示在本地机器232上和远程机器234上生成的条目的图标进行分组的任务栏226的一个实施例的屏幕截图。为了比较,在图4D中所示的是描述对表示在本地机器上和在远程机器上生成的条目的图标进行分组的任务栏226的一个实施例。回去参考图4C,在由操作系统或壳提供用户界面的一些实施例中,用户或管理员可以创建快捷方式图标以启动应用、进程、文件或文件夹。在许多实施例中,操作系统或壳允许这个快捷方式图标被置于任务栏中或“被钉住”,使得无论应用、进程、文件或文件夹是启动或打开状态,该快捷方式图标仍停留在那里。在提供对应用的远程访问的系统的一些实施例中,用户或管理员可以创建快捷方式图标以启动远程机器上的应用、进程、文件或文件夹。例如,在一个这样的实施例中,用户可以直接创建到所述远程应用、进程、文件或文件夹的快捷方式,而不是首先启动远程桌面或远程访问应用,或者访问远程访问应用启动网站并接着选择要启动的远程应用、进程、文件或文件夹。在这些实施例中,这可以被称为到发布的远程应用、进程、文件或文件夹的快捷方式。在这样的系统的许多实施例中,这些发布的远程应用、进程、文件或文件夹可以表示给到提供远程访问连接的另一个应用的参数。例如,尽管发布的远程应用的快捷方式可能看起来是电子表格程序的图标,但它实际上可以首先启动第二应用,所述第二应用建立到服务器的远程访问连接、执行各种认证和登录任务并且开始执行远程电子表格程序。同样地,在一些实施例中,该快捷方式属于或关联于第二远程访问应用。因此,如图4C中的示例所示,操作系统可能不能正确地将到发布的远程电子表格程序或文件的被钉住的快捷方式与到本地电子表格程序或文件的被钉住的快捷方式分组在一起。这可能导致非直观或非无缝的用户体验。因此,在上文所讨论的技术和系统的一些实施例中,可以用到对应于发布的远程应用、进程、文件或文件夹的远程生成的窗口的显式关联或部分关联来标志或标识该发布的远程应用、进程、文件或文件夹。例如,尽管如上文所述,远程电子表格程序的快捷方式可能属于远程访问应用,但当其被创建时,该快捷方式可以被加标记以包含远程电子表格的标识符。因此,可以将该快捷方式与其他本地生成的或远程生成的电子表格窗口分组在一起,并且在启动该快捷方式时,可以使用上文所讨论的技术和系统将该远程电子表格程序的窗口正确地与其他窗口分组在一起。C.用表示远程应用的用户界面元素更新停靠栏的系统和方法。一些操作系统(包括由Apple公司出品的Macintosh操作系统)利用以应用为中心的用户界面或停靠栏,而不是以窗口为中心的接口,例如MicrosoftWindows任务栏。诸如任务栏的以窗口为中心的接口可以包括每个窗口的按钮。例如,当前打开三个文字处理文档的用户可能看到三个按钮,每个文档一个按钮。在一些实施例中,这些按钮可能是堆叠的或聚合的。相比之下,以应用为中心的接口可能仅显示指示文字处理应用的一个按钮或图标。在许多实施例中,响应于与这个按钮的用户交互,停靠栏或以应用为中心的接口可以在菜单或其他分组中显示这三个文档的列举,隐藏所有应用窗口的选项、退出应用的选项和/或使其中一个窗口到前台或获得焦点的选项。因为在这些界面中对窗口的分组是基于生成窗口的应用,所以由本地客户端生成的但显示远程应用的应用输出的窗口可能面临困境。例如,在图4E所示的一个这样的实施例的屏幕截图中,停靠栏400包括当前正在执行的本地客户端的图标402。在这个示例中,本地客户端已经为远程执行的文字处理程序、电子表格程序和计算器生成了三个应用输出窗口404。然而,由于本地客户端生成了这些窗口,所以停靠栏400仅显示本地客户端的图标402。这可能造成用户的困惑,尤其是在用户与相似的本地的和远程的应用(诸如本地文字处理程序和远程文字处理程序)交互时。图4F中所示的是对这个问题的解决方法的一个实施例的屏幕截图。如图所示,停靠栏400包括当前正在执行的本地客户端的图标402。尽管该图标402被显示为可见,但在许多实施例中,可以隐藏当前正在执行的本地客户端的图标402,这样,它不被显示在停靠栏400中。例如,本地客户端可以作为后台应用来运行,使得该图标不被显示。在又一个示例中,该客户端可能不作为后台应用运行,但可包括指示不应该在停靠栏400中显示图标的属性或设置。如图所示,停靠栏400也包括表示远程执行应用的进程图标406,本地客户端已经为该远程执行的应用生成了应用输出窗口。例如,进程图标406包括用于具有两个窗口的远程执行的web浏览器、远程执行的计算器、远程执行的文字处理程序、和远程执行的电子表格程序的图标。响应于用户与其中一个图标(例如web浏览器图标)的交互,在一些实施例中,该停靠栏可以显示具有对应于远程执行的应用的窗口的一个或多个应用输出窗口的枚举的菜单。现参考图4G,显示了使用表示在远程计算机上执行的远程应用的用户界面元素来更新由本地计算机生成和显示的停靠栏的方法的一个实施例的流程图。总的来说,在步骤410,在一个实施例中,在本地计算机上执行的本地客户端接收由在远程计算机上执行的远程应用生成的应用输出。在步骤412,本地客户端响应于接收该应用输出,生成用于显示所接收的应用输出的应用输出窗口,该应用输出窗口是根据窗口配置信息生成的。在步骤414,响应于接收该应用输出,本地客户端启动执行本地机器上的进程,该进程包括表示远程应用的用户界面元素。在步骤416,响应于执行该进程,用该进程的用户界面元素来更新本地计算机的停靠栏。在步骤418,该进程将用户与停靠栏中的用户界面元素的交互重定向到显示由远程应用生成的应用输出的应用输出窗口。仍参考图4G,更详细地,在步骤410,在一些实施例中,在本地计算机上执行的本地客户端可以接收由在远程计算机上执行的远程应用生成的应用输出。在一些实施例中,经由远程显示协议或独立计算架构协议,该应用输出可以包括窗口的图形数据。在其他实施例中,该应用输出可以包括命令或由应用生成的任何其他输出数据,所述命令包括创建窗口、删除窗口、移动窗口、使窗口获得焦点、使窗口透明或部分透明、打开菜单、关闭菜单、调整窗口大小、选择按钮或其他元素。在一些实施例中,本地客户端也可以接收表示远程应用的用户界面元素。在一个实施例中,该用户界面元素可包括应用的图标或应用图标的图像。在另一个实施例中,该用户界面元素可包括应用输出的静态或动态的缩略图。在又一个实施例中,用户界面元素可以包括动态数据和图标的组合,例如日历图标,其随着时间的推移改变所显示的月份和日期。在一些实施例中,本地客户端也可以接收对应于应用输出的窗口配置信息。在一个实施例中,窗口配置信息可包括关于应用输出窗口的信息,包括大小、位置、焦点、透明度或其他细节。在又一个实施例中,窗口配置信息可包括关于窗口与应用的关系的信息,包括它是否是另一个窗口的子窗口、生成该窗口的应用或进程的名称和/或标识符、到生成该窗口的应用或进程的文件系统路径、该窗口是否是由应用所生成的第一个窗口、该窗口是否是由操作系统生成的、或者关于用户界面元素的信息(包括其大小)。在一些实施例中,窗口配置信息可包含父进程的进程ID,以与最初发布的应用进程建立父/子关系。这可以被用来允许对进程层次结构的跟踪。在其他实施例中,窗口配置可包括应用ID或AppID。在一个实施例中,这个AppID可以包括由远程应用设置的MicrosoftWindowsAppID。这可以用于窗口配置,而不管客户端正在执行非Microsoft操作系统。在又一个实施例中,AppID可以包括由管理员、用户、厂商配置的AppID。在一些实施例中,这可以被用来分组或区别应用。例如,可以由用户对没有设置其自己的AppID的进程和窗口进行分组或将其与AppID相关联。相反地,可以不对包括AppID的窗口或应用进行分组以分别出现或出现在其他组中。例如,可以以这种方式使用AppID来在web应用和简单网页之间进行区别,从而不将它们分组在同一web浏览器停靠栏图标下。因此,Web应用可以被分开以出现在一个或多个单独的图标下,并且可以例如根据服务提供者或目的来进行分组。在一些实施例中,在步骤412,本地客户端可以生成用于显示所接收的应用输出的应用输出显示窗口。在一些实施例中,本地客户端根据窗口配置信息生成应用输出显示窗口。例如,本地客户端可以生成具有对应于在窗口配置信息中所提到的大小的特定大小或类型的应用输出显示窗口。而且,在一些实施例中,本地客户端可生成与另一个窗口有关的窗口,或者参考由窗口配置信息所指定的进程来生成窗口。在一些实施例中,在步骤414,响应于接收应用输出,可以在本地机器上执行进程。在一些实施例中,该进程可以包括表示远程应用的用户界面元素。例如,响应于收到记事本应用的应用输出和记事本应用图标的用户界面元素,包括该图标的进程可以被执行。在以应用为中心的用户界面或停靠栏中,执行这样的进程可能导致该用户界面元素或图标作为正在执行的进程出现停靠栏中。因此,已经请求执行诸如记事本应用的远程应用的用户将看到包含该应用输出的新窗口和停靠栏中表示该应用的新图标,就像他们已经开始在本地执行相同的程序一样。在一些实施例中,本地客户端可以请求应用图标以用于在该用户界面或停靠栏中进行显示。在一些实施例中,本地客户端可请求预定大小的图标,或者请求具有以像素或其他度量为单位的特定高度和宽度的图标。远程机器可以发送所请求的图标,并且在一些实施例中,本地客户端可以缓存该图标以随后使用。本地客户端可以将所缓存的图标重新用于进程的随后执行。这可以给多进程应用提供明显的带宽降低。例如,如果没有缓存,远程执行的多进程应用(例如,GoogleChrome)可触发数十个进程的执行,所有的进程都包括相同的图标,这可能要求大量的带宽来进行发送。通过缓存该图标,可以相应地降低网络使用量。在一些实施例中,本地客户端可以启动进程的执行。在一个实施例中,本地客户端可以创建进程并随后执行该进程。在许多实施例中,该进程可包括用于将用户与该进程的交互重新定向到应用输出窗口的应用、守护进程、脚本或其他功能。在一个实施例中,该进程可包括脚本,该脚本在该进程被转移到该用户界面的焦点或前台时执行,以将另一个窗口获得焦点或转到前台。例如,如果响应于本地客户端收到由远程记事本应用生成的应用输出来创建并执行进程,那么当用户在停靠栏中的远程记事本进程图标上进行点击或使用应用切换接口(例如alt-tab或command-tab序列)以使该进程获得焦点时,该进程可执行脚本,该脚本指示GUI使对应于远程记事本应用的本地客户端的应用输出窗口获得焦点。因此,对于用户,这看上去似乎与该进程交互的结果是与该应用输出窗口交互。在许多实施例中,该进程将没有它自己的窗口。因此,在其中进程包括仅在与该进程的交互时执行的脚本的许多实施例中,该进程可以有非常小的存储器占用和非常低的CPU占用率。在一些实施例中,该进程可以对应于多个窗口。如上文所讨论的,在诸如任务栏的以窗口为中心的接口中,可能有对于应用的每个窗口的按钮,而在诸如停靠栏的以应用为中心的接口中,可能有对于应用的单个图标,而不管该应用的窗口的数量或者在该应用中打开的文档的数量。类似地,在一些实施例中,响应于本地客户端收到由远程应用生成的应用输出,该进程可能被执行一次,而不管在远程应用中打开的窗口或文档的数量。因此,在一些实施例中,本地客户端可以接收与由远程应用生成的第二窗口关联的额外的应用输出和额外的窗口配置信息,并且可以生成第二应用输出窗口用于显示该额外的应用输出。本地客户端可以响应于该额外的窗口配置信息来确定不执行用于重定向用户交互的第二进程。例如,本地客户端可以确定第一窗口和第二窗口都是由同一应用生成的。在远程应用是多进程应用(例如InternetExplorer或GoogleChromeweb浏览器)的实施例中,本地客户端可以确定尽管第一窗口和第二窗口是由不同的远程进程生成的,但这两个进程具有相同的名称和相同的标识符,因此应该被分组在一起。在一个实施例中,响应于确定不执行第二进程,本地客户端可以修改进程或进程的脚本以允许重定向到第一或第二应用输出窗口。例如,本地客户端可以修改该进程使得与停靠栏中该进程图标的用户交互显示具有第一和第二窗口的枚举的菜单。在一些实施例中,可以响应于远程应用、远程应用的第二执行实例或远程应用的子进程生成额外的应用输出,来做出不执行第二进程的确定。例如,诸如画图应用的应用可以生成作为图标的工具箱的第二窗口以使用各种画图工具。这些窗口有时可以被称为“有趣的窗口”,其仍应该与该应用相关联。这样的第二窗口可以被看作该应用的孩子,而本地客户端相应地不应该为该工具箱窗口单独创建第二进程。类似地,在一些实施例中,第一应用可以启动并创建充当中间进程来启动第二应用的窗口,该窗口实际上是被用户使用的。在这样的实施例中,可能期望启动第二应用的进程,而不是第一应用或第一窗口的进程,这样第一应用或第一窗口不具有在停靠栏或用户界面元素中的图标。在这种情况下,第一应用或第一窗口可以作为后台应用而被启动或者以其他方式被标记,使得不对该应用执行停靠栏进程。在一个实施例中,第一应用可以启动第二应用的执行,但第一应用可以在第二应用开始之前终止。在终止第一应用时终止具有停靠栏中图标的进程并且在第二应用执行时重新执行该进程图标,这可能随着图标消失和重现而显示出意外的或不想要的行为。因此,在这些实施例中,第二应用可以被识别为第一应用的孩子,并且在终止父应用时暂停该进程的终止,这防止了图标消失。在一些实施例中,本地客户端可以接收由远程计算机的操作系统生成的应用输出。例如,本地客户端可以接收对应于气球弹出、警报、错误消息或由操作系统生成的任何其他窗口或输出的应用输出。从用户的角度来看,本地客户端创建和执行对应于远程计算机的操作系统的进程可能不是预期的或出乎意料的。因此,在许多实施例中,对于由系统进程或类似进程生成的应用输出,本地客户端可以不创建或执行进程。在又一个实施例中,本地客户端可以决定在收到额外的应用输出时执行第二进程。例如,一些远程应用可以被配置为在该应用的单个窗口中显示多个文档。在大的监视器上,该应用窗口可以被扩大或全屏使得用户可以并排查看或同时查看该多个文档。然而,这可能使用户不能同时查看这些多个文档和来自另一个应用的文档,这要归因于某些文档窗口可能被限制在第一应用窗口内所造成的移动文档窗口的有限的灵活性。因此,一些用户已经注意到它们可能能够启动这些应用的多个实例使得每个实例显示单个文档,这恢复了分别地移动每个文档窗口的能力。因此,在用户已经显式地启动了应用的不同实例的一些实施例中,本地客户端可以决定为每个单独实例执行额外的进程,以便在本地机器上保持用户所期望的行为。在又一个实施例中,如上文所讨论的,单个进程可以生成多个窗口或产生多个进程,响应于它们的内容、起源或其他属性,应该以各种方法对这些窗口或进程进行关联或分组。例如,web浏览器可包括用于多个网页的多个窗口或进程。在许多实施例中,这些窗口或进程可以被分组在一起并且应该将其与停靠栏中的单个进程相关联。然而,在其他实施例中,可以以与这些窗口或进程的功能有关的各种方法来对这些窗口或进程进行分组。例如,在一个实施例中,网页可能被分组在一起,而web应用可能在第二组中,或者在单独组中,或在单独组和多成员组的混合中。例如,由服务提供者提供的web应用可以根据该服务提供者分组在一起。类似地,具有相同功能的web应用可以被分组在一起,例如来自多个服务器提供者的web邮件。可以基于应用数据、头部、URL中的标识符或其他方式来进行这种分组。类似地,基于Java的应用或相似应用可以在相同的可执行应用下来运行,但具有不同的命令行参数。这些命令行参数可以被用于将进程或窗口识别为相同或不同的组的成员,从而可为应用创建多个停靠栏或任务栏图标或元素。在将应用置于额外的组中的情况下,必要时可以执行进程以创建停靠栏或任务栏图标或元素。在一些实施例中,进程或本地客户端可包括用于监控远程应用的状态或由远程应用的生成的窗口的状态的功能,以及响应于远程应用停止或窗口被关闭来停止进程的执行的功能。例如,响应于用户退出远程应用,对应于那个远程应用的窗口的进程也可能退出。在步骤416,在一些实施例中,可以用正在执行的进程的用户界面元素来更新停靠栏。在许多实施例中,这可以由操作系统、GUI或停靠栏来处理。例如,当执行进程时,停靠栏被配置为检索正在执行的进程的图标并将其放置在停靠栏中。在许多实施例中,该图标可以被突出显示或以其他方式被标记以指示当前正在执行的应用。这允许停靠栏包含正在执行的进程和非当前执行的进程的图标,允许停靠栏同时给以应用为中心的任务栏和启动板(launchpad)提供相似的功能。因此,在一些实施例中,当进程没有在运行时,用户可以将该进程的图标放置在停靠栏中,或者可以指示停靠栏在进程没有运行时将进程的图标保留在停靠栏中。在许多实施例中,用户可以接着与该进程图标交互以启动该进程的执行。在另一个实施例中,响应于用户启动进程的执行,该进程可以启动本地客户端的执行和/或指示本地客户端请求执行对应于该进程的远程应用或者请求对应于该进程的远程应用的应用输出。例如,用户可以将对应于远程记事本应用的进程的图标放置在停靠栏中。当用户在该图标上点击以启动该进程的执行时,该进程可指示本地客户端向远程计算机发送启动执行远程记事本应用的请求。接着,当本地客户端接收来自远程记事本应用的应用输出和窗口配置信息时,本地客户端可以生成窗口并且修改该进程以将用户交互重定向到这个窗口。在步骤418,在一些实施例中,进程可以使用任何上述技术来重定向用户交互到应用输出窗口。在许多实施例中,如上文所述,重定向用户交互可包括响应于用户使该进程获得GUI焦点,来使该应用输出窗口获得GUI焦点。在一些实施例中,重定向用户交互到应用输出窗口可包括重定向用户交互到本地客户端,然后,本地客户端可以使由本地客户端生成的窗口获得焦点。D.用于提供无缝的三维缩略图的系统和方法。许多流行操作系统利用静态或动态缩略图来给用户提供直观界面。例如,如上文所述,响应于用户在表示一个或多个应用窗口或进程窗口的图标上进行点击或悬停,可以给用户显示静态和/或动态的缩略图的任务栏组。在另一个界面中,响应于键盘命令,可以显示打开窗口的三维静态或动态缩略图,以允许用户“翻阅”缩略图以选择要转到前台用于交互的窗口。这样的界面的示例是作为由美国华盛顿州Remond的微软公司出品的WINDOWSVISTA和WINDOWS7的部分而被提供的Flip3D接口。在又一个界面中,以阵列或其他配置显示二维静态或动态缩略图,允许用户经由鼠标、键盘或其他输入装置来选择要转到前台用于交互的窗口。这样的界面的示例是作为由美国加利福尼亚州Cupertino的Apple公司出品的MACOS操作系统的部分而被提供的Expose界面。在又一个界面中,操作系统可以提供多个虚拟桌面,可以将窗口分配给或移动到这些虚拟桌面以减少混乱和重叠窗口。这样的界面的一个示例是作为AppleMACOS操作系统的某些版本的部分而被提供的Space界面。其他示例包括由可用于各种版本的Unix、Linux和类型操作系统的XWindowSystem的各种窗口管理器提供的虚拟桌面界面。其他界面可包括在Windows的一些版本中提供的任务栏预览(TaskbarPreview)界面,其在用户将鼠标光标移动到任务栏图标上时显示窗口的静态或动态缩略图预览;以及在Windows的一些版本中提供的Peek界面,其当用户将鼠标光标移动到任务栏图标上时将一个或多个窗口变透明。例如,显示可以示出第一窗口,其与在第二窗口重叠,与第三窗口重叠。当用户将光标移动到与第三窗口关联的任务栏上时,该界面可以使第一窗口和第二窗口变透明,这允许用户查看第三窗口的内容而不必将该窗口转到前台或使其获得焦点以用于交互。如上文所讨论的,瘦客户端计算或远程显示表示应用的许多实施例不单独为远程系统上的每个窗口发送可视数据。相反,其中许多应用将远程系统上重叠的窗口的图像平整到能被发送到客户端的单个图像中,其结果是降低流量和通信。如果客户端接着尝试为这些窗口生成静态或动态的缩略图,则这可能导致不想要的效果。例如,在图5A中所示的是,客户端上的显示图像的实施例的框图,其显示了由于向客户端发送之前在服务器上平整显示图像而导致的图形损坏。如在这个示例中所示的,在客户机的显示装置124上的本地桌面环境220显示与第二远程窗口502有重叠的第一远程窗口500。被另一个窗口、任务栏或显示边缘覆盖的窗口通常可以被称为被剪切的,或剪切的窗口。如上文所讨论的,与任务栏226中的堆叠图标504的用户交互可以触发具有来自每个窗口的窗口属性数据的缩略图的任务栏按钮组230的显示。如果客户端通过在本地桌面环境220中定位每个第一远程窗口并抓取该区域中的窗口数据的屏幕截图来创建该缩略图,则第二远程窗口的缩略图可包括重叠的图像,这导致不准确的或视觉混乱的缩略图。现参考图5B以示区别,示出了显示图像的框图,其在所显示的缩略图中没有该图形损坏。在图5A中所示的图形损坏可能出现在上面讨论的任何界面中。例如,在诸如MACOS的Space的提供多个虚拟桌面的界面中,用户可以将第一远程窗口500放置在一个虚拟桌面上,且将第二远程窗口502放置在第二虚拟桌面上。这些窗口可能不会在用户机器上出现重叠或被剪切,因为它们在不同的虚拟桌面上。然而,在服务器上,在单个桌面或二维逻辑视频缓存器(LVB)中窗口可能仍是重叠的,并且在向客户端进行传输之前对窗口进行平整。因此,当用户从其中第一远程窗口500是最前面或活动的窗口的一个虚拟桌面移动到具有第二远程窗口502的第二虚拟桌面时,第二远程窗口502可能包括第一远程窗口500的重叠部分,这造成混乱。简单参考图5C,所示的是用于允许用户在缩略图之间进行翻阅以选择要转到前台的程序的3D接口的示例的框图。如图所示,可以显示一个或多个窗口缩略图,包括本地窗口512a-c和远程窗口500和502。响应于用户交互,最前面的缩略图像可以被“翻”到堆栈的后面,或者最后面的缩略图像可以被“翻”到堆栈的前面。如图所示,没有在图5A中所示的缩略图图形损坏,用户可以看到第二远程窗口502的全部。避免在图5A中所示的缩略图损坏的一个方法是对于远程应用不使用缩略图,而是仅使用表示远程应用窗口的图标,例如表示记事本或web浏览器应用的图标。然而,当紧接着客户端呈现的本地应用的静态或动态缩略图查看这些图标时,用户将不会体验无缝接口,因为哪个应用是本地的以及哪个应用是远程的将会很明显。另一个方法是从服务器连续地发送每个窗口的各自的图像,但这可能消耗大量的带宽而且对于没有发生变化的静态图像是不必要的。可以通过以较低速率发送图像来减少带宽需求,但这可能降低用户体验,因为窗口图像没有被更新以反映它们正确的内容。或者,假设用户不与其交互的窗口不经常变化,则可以以高速率发送前台或活动窗口的个体图像,以较低的速率发送后台窗口的个体图像。然而,这种假设可能并不总是正确。后台窗口可包括响应于非用户交互的事件来更新的动态内容,例如当新的电子邮件到达时更新的电子邮件应用、具有动态内容的web浏览器窗口、例如视频播放器的多媒体内容,或者随着时间改变其显示的简单时钟。如上文讨论的,为了避免缩略图损坏而没有额外的困难,在提供无缝的三维缩略图的方法的一个实施例中,客户端可以识别被另一个窗口、任务栏或显示边缘剪切的一个或多个窗口。这是因为客户端的窗口管理器可能能够正确地生成和显示未被剪切或未被覆盖的窗口的预览图像和缩略图。客户端可以通知主机远程应用窗口被剪切了并且在预览期间请求被剪切的窗口的未被损坏的图像。为了减少带宽需求,主机可以仅当正被预览的窗口的大小、位置或内容发生了变化时传输图像,因为静态图像没有必要被重传。而且,可以传输差分图像,或者传输窗口的新快照和该窗口先前的快照之间的差异,这可以大大地减少带宽要求,因为在每一时刻仅该窗口的一小部分发生变化。客户端也可以缓存先前的预览图像以便能使用这些差分图像来重现该新的快照。此外,可以在传输之前压缩图像。即使预览已经结束,预览图像也可以被客户端缓存,使得客户端可以在下一次预览被激活时显示所缓存的预览图像并同时等待来自主机的新的快照。如图6A中所示的是提供无缝的三维缩略图的系统的实施例的框图。简单地来说,该系统包括在本地计算装置上执行的第一代理202、在远程计算装置106上执行的第二代理204和由在远程计算装置106上的一个或多个应用或进程(未示出)生成的一个或多个窗口207a-207c(总的称为窗口207或远程窗口207)。如上文所述,第一代理202从第二代理204接收第一窗口207a、第二窗口207b和第三窗口207c的标识。尽管窗口207a-207c被显示为关联的,但在一些实施例中,使用上文结合图2-4描述的技术,窗口可以互相不关联,或者一个或多个窗口可以互联关联,而一个或多个其他窗口不相关联。在本地机器102上执行的壳214在显示装置124上的本地桌面环境220中显示表示窗口207a-207c的图像数据。壳214也在任务栏按钮组230中显示窗口207a-207c中每一个的标识。尽管窗口207a-207c被显示为关联的,但在一些实施例中,使用上文结合图2-4描述的技术,窗口可以互相不关联,或者一个或多个窗口可以互联关联,而一个或多个其他窗口不相关联。例如,在任务栏按钮组230中,窗口207a和207b可以是关联的,而窗口207c不与窗口207a或207b相关联。因此,窗口207c的缩略图不会被显示在任务栏按钮组中。而且,尽管其未被示出,但由在本地计算装置102上执行的应用或进程生成的其他窗口可能与一个或多个远程窗口207重叠,并且可以使用上述任何技术将其与一个或多个任务栏按钮组230中的远程窗口207中的一个或多个相关联。仍参考图6A,更具体地,在一些实施例中,在远程计算装置106上执行的第二代理204可以接收向本地计算装置102发送窗口预览的请求。在一些实施例中,第二代理204可以从第一代理202或在本地计算机器102上执行的其他应用或进程接收该请求。在其他实施例中,第二代理204可以响应于由第二代理204监控的定时器的到时来接收该请求。例如,第二代理204可以监控定时器以周期性地在该定时器到时时,向本地计算装置102发送窗口预览。在另一个实施例中,第二代理204可以不接收显式请求,而是通过定时器的到时隐含该请求。在又一个实施例中,第二代理204可以响应于其他触发器来开始向本地计算装置102发送窗口预览,例如打开到本地计算装置102的连接、远程计算装置106上的应用或进程生成新的窗口207、外部定时器到时、来自用户或管理员或远程用户或远程管理员的人工命令,或指示期望窗口预览的任何其他命令或信号。在一些实施例中,响应于请求,第二代理204可以执行对一个或多个窗口207a-207c的图像预览的捕获。在一个实施例中,第二代理204可以使用由操作系统提供的API来抓取一个或多个应用窗口207a-207c的快照,例如PrintWindowAPI或其他接口。在一些实施例中,第二代理204可以经由窗口句柄识别用于快照捕获的窗口,而在其他实施例中,第二代理204可以经由窗口坐标来识别窗口。在其他实施例中,第二代理可以经由与另一个窗口的父子关系来识别用于快照捕获的窗口。在一些实施例中,第二代理204可以进一步地抓取该窗口的快照。这可以响应于定时器的到时、响应于窗口改变大小或位置、响应于窗口内容被改变、响应于窗口的叠置次序(z-order)发生变化或者任何这些触发事件的组合来完成。在许多实施例中,可以由第二代理204缓存一个或多个先前的快照。在一些实施例中,第二代理204可以将窗口的快照与先前缓存的快照进行比较以检测快照之前的差异并且创建差分图像。在一个实施例中,第二代理204可以执行目前快照和先前快照的XOR运算或其他类似运算以创建表示该目前快照和先前快照之间差异的差分图像。这个差分图像可能明显地小于快照,特别是在尽管内容可能变化但窗口的用户界面不发生变化的情况下。在许多实施例中,第二代理204可以周期性地传输完整快照而不是差分图像。这可以用来确保不存在由传输或差分图像中的错误所造成的任何损坏。在一些实施例中,第二代理204可以响应于下列的一个或多个来传输完整快照:定时器到时;计数器,关于完整图像的传输复位以及对于每个所传输的差分图像进行递增,达到预定值;调整窗口大小;移动窗口或修改其叠置顺序;或任何其他因素。在一些实施例中,第二代理204可以相应地将图像标记为差分图像或非差分图像。在一些实施例中,第二代理204可以将每个窗口的所存储的屏幕捕获传输到本地计算装置102上的第一代理202。在一个实施例中,第二代理204可以使用在所建立的通信链接上的虚通道(例如ICA虚通道)来传输所存储的图像。在一些实施例中,第二代理204可以传输其所捕获或所存储的每个屏幕捕获,而在其他实施例中,第二代理204可以将屏幕捕获一起进行传输。在许多实施例中,可以在传输之前减小这些屏幕捕获的大小或分辨率。例如,在一些实施例中,缩略图的最大大小可以是由本地计算装置102的操作系统或分辨率预定义的。因此,每个屏幕捕获可以在进行传输之前被缩小到这个大小或分辨率以降低带宽要求。在一些实施例中,可以在传输之前压缩每个屏幕捕获或每个屏幕捕获的集合。例如,在许多实施例中,第二代理204可以使用任何压缩算法来在传输之前压缩图像,例如行程编码(RLE)、JPEG或PNG压缩。在一些实施例中,在收到每个屏幕捕获时,第一代理202如有必要可以解压缩该图像。第一代理202可以使用由本地计算装置102的壳214或操作系统提供的API将每个屏幕捕获传递到壳214以作为缩略图用于3Dfilp界面、2D缩略图界面、任务栏按钮组或其他用户界面。在这些界面的一些实施例中,操作系统或壳可以提供给应用或进程提供图像用作缩略图的能力。例如,许多接口允许应用提供图标或其他图像来用作缩略图,而不是允许客户端操作系统抓取活动窗口的屏幕截图。通过提供所接收的图像用作缩略图,可以获得无缝的用户体验。在使用桌面窗口管理器的MicrosoftWindows操作系统的一些版本(例如,Windows7和WindowsVista)中,第一代理202可以使用DwmSetWindowAtributeAPI设置窗口属性DWMWA_HAS_ICONIC_BITMAP为TRUE(真)。这将向窗口管理器指示第一代理202负责提供用于缩略图或预览图像的图标或图像。在一些实施例中,由第一代理202接收的屏幕捕获或预览图像可以具有足够的大小和/或分辨率以作为窗口的基本图像进行利用。因此,在另一个实施例中,第一代理202可以将这些所接收的预览图像用于缩略图预览以及用于在本地桌面环境中的窗口的本地显示。第一代理202因此可以用所接收的未被剪切的图像来替换窗口中被剪切的图像,并且向窗口管理器或壳(例如窗口桌面管理器)指示基于远程窗口的本地显示生成实时的预览。例如,第一代理202可以使用DwmSetWindowAtributeAPI设置窗口属性DWMWA_HAS_ICONIC_BITMAP为FALSE(假)。这可以用来减小客户端处的复杂度,其将不必检索用于显示的缩略图标。简单参考图6B,所示的是提供无缝的三维缩略图而不管远程应用类型的系统的框图。应用可以使用用于显示图形的不同的API或图形子系统,例如图形设备接口(GraphicsDeviceInterface,GDI)、开放图形库(OpenGraphicsLibrary,OpenGL)或窗口展现架构(WindowsPresentationFoundation,WPF),以及其他。许多更新的接口(例如,WPF)允许应用将图形呈现到离屏表面或存储缓冲区。然后,例如MicrosoftWindows桌面窗口管理器(WindowsDesktopManager,DWM)的合成窗口管理器将每个应用的缓存区合成到用于显示的最终图像中。这区别于使用堆栈窗口管理器的较旧的接口,在堆栈窗口管理器中,每个程序写入到主缓冲区。尽管诸如WPF的DWM感知(DWM-aware)接口使用DWM兼容格式(例如DirextX)来保持与使用GDI或OpenGL或相似接口的较早的不知DWM(DWM-agnostic)的应用的兼容性,但可以给每个应用指定专用缓冲区。这些应用可以以本地(native)格式呈现,例如位图,然后这些缓存区内容可以被转换成DWM兼容格式,例如DirectX。如图所示,在进行合成之前,来自每个应用的未被剪切的应用图像是DWM兼容格式,与所使用的远程应用的类型或图形子系统无关。因此,通过在合成之前从视频存储器检索这些图像位图和窗口信息,由生成该窗口的应用动态更新的未被剪切的窗口内容可以被另一个程序或用户界面元素来访问。例如,这个技术用于为WindowsFlip3D和Peek界面收集本地应用的实时缩略图预览。然而,使用此处所讨论的系统和方法,该技术也可以与远程应用一起使用。在使用MicrosoftWindows桌面窗口管理器的实施例中,例如DWM的DwmpDxGetWindowsSharedSurface方法的API可以被用于检索未被剪切的窗口内容作为结构(texture)。如上文所讨论的,这个结构接着可以被传输到本地客户端以提供未被剪切的、动态缩略图或窗口显示。现参考图6C和6D,提供所寄载的应用的无缝的三维缩略图的方法的实施例的流程图。如图所示,所描述的该实施例方法的一些步骤由客户机执行,而其他步骤由主机执行。如上文所讨论的,主机可以指执行用于在客户机上远程显示的一个或多个应用的任何计算装置。而且,尽管被称为主机和客户机,但在一些实施例中,客户机也可以是主机,并且向第二客户机提供一个或多个窗口的远程显示。例如,这可以被管理员用于远程监控在一个或多个客户机上的用户应用。在类似的实施例中,客户机可以将客户机寄载的应用的图形输出数据传输到服务器以允许该客户机寄载的应用被无缝地集成到远程桌面中。总的来说,客户机代理可确定远程应用窗口的本地显示是否被另一个远程窗口、例如任务栏的接口元素或显示边缘剪切。如果没有,则该窗口内容可以被用于生成实时预览。因此,在步骤602,则客户机代理可以禁用该窗口的定制图标预览设置(如果被设置的话),以及在步骤604,客户机上的窗口管理器可以根据需要生成窗口预览。如果窗口被剪切,则在步骤606,客户机代理可以启用该窗口的定制图标预览。在步骤608,客户机代理可以将最后所知的预览图像作为该窗口的定制图标。可以重复步骤602-608直到需要预览为止。当需要预览时,在步骤609,客户机代理可以设置最后所知的预览图像作为定制预览位图。在步骤610,客户机代理可以向主机发送远程预览窗口的请求。在步骤612,响应于接收该请求,主机代理可以将该窗口的远程窗口预览状态设置为开。在步骤614,主机代理可以抓取该窗口的快照。如上文所述,在对于第一快照可能不作任何差分比较的情况下,或者周期性地为避免错误或损坏,或者当窗口被调整大小时,在步骤616,主机代理可以将完整的快照作为窗口预览发送到客户机。或者,在步骤618,主机代理可以比较窗口快照与先前的快照,并且在步骤620可以创建差分预览,其可以在步骤616被传输到客户机。每当窗口已经改变位置、大小、叠置顺序,或者当窗口的内容已经发生变化时,可以周期性地重复步骤614-620。在步骤622,客户机代理可以从主机代理接收窗口预览。如果该图像不是差分图像,则在步骤624,客户机代理可以将该预览图像存储为定制图标。或者,如果该图像是差分图像,则在步骤626,客户机代理可以将该差分图像与先前存储的图像进行比较并且在步骤628创建非差分图像。在步骤630,因为该预览图像可表示窗口的全部内容的未被剪切的图像,所以在一些实施例中,该预览图像可以被存储为窗口图像。在步骤632,如果设置了窗口的定制图标预览,则客户机代理可以禁用窗口的定制图标预览,这允许客户机上的合成窗口管理器来生成在步骤630作为窗口图像存储的图像的实时预览604(如图6C所示)。如上文所述,这可以用来在客户机上降低复杂度。如果窗口仍然被剪切并且仍然需要预览,则可以为从主机代理接收的每个新的窗口预览重复步骤622-632中的一个或多个步骤。在一些实施例中,例如,在第一次禁用了窗口的定制图标预览之后,可以跳过步骤632。一旦不再需要预览或者窗口不再被剪切(使得本地合成窗口管理器可以很容易地创建未被剪切的窗口预览),则在步骤634,本地代理可以通知主机不再需要远程预览。在步骤636,响应于该通知,主机代理可以将该窗口的远程窗口预览状态设置为关。尽管所示的是关于单个窗口,但在具有多个寄载窗口的实施例中,可以对于多个窗口并行或顺次执行此处的步骤。仍参考图6C和6D,更具体地,在一些实施例中,客户机代理可以监控显示来自在远程计算机上执行的应用的远程内容的窗口的位置或所寄载的窗口的位置,以确定窗口是否被另一个远程窗口、例如任务栏的用户界面元素或显示的边缘剪切。在一些实施例中,如上文所述,客户机代理可以确定窗口是否被用于由应用进行呈现的二维逻辑视频缓存器(LVB)的边缘剪切。如果窗口没有被剪切,则由窗口管理器从LVB生成的实时预览的显示内容将不会被损坏。因此,在步骤602,如果设置了定制图标预览,则客户机代理可以禁用对于窗口的定制图标预览。在使用Windows桌面窗口管理器(DWM)的一个实施例中,这可以通过使用DwmSetWindowAttribute方法将窗口属性DWMWA_HAS_ICONIC_BITMAP设置为FALSE(假)来完成。在步骤604,客户机窗口管理器接着可以根据需要生成窗口的实施预览,例如当激活缩略图预览、3DFlip、Peek或其他界面时。如果窗口被剪切,则在一些实施例中,在步骤606,客户机代理可以启用该窗口的定制图标预览。在使用Windows桌面窗口管理器(DWM)的一个实施例中,这可以通过使用DwmSetWindowAttribute方法将窗口属性DWMWA_HAS_ICONIC_BITMAP设置为TRUE(真)来完成。在步骤608,在一些实施例中,客户机代理可以存储或初始化最后所知的窗口预览图像作为定制图标。在其中客户机没有最后所知的窗口预览图像的其他实施例中,例如,在方法600的首次执行时,客户机代理可以使用替代图像,例如与该应用管理的图标。在预览期间,这可以在一段时间内进行显示,直到客户机从主机收到用于该窗口的预览图像为止,理想情况下只是很短时间。在一些实施例中,客户机代理可以持续监控窗口的位置并重复步骤602-608。这可以被用来确保当用户执行要求预览图像的接口时,被剪切的和未被剪切的窗口被正确地处理。所述监控可周期性地执行,或响应于窗口的位置、大小、叠置顺序或者内容的变化而执行。客户机代理也可以监控桌面窗口管理器以检测何时开始了特定类型的预览。例如,当对于任务栏预览请求窗口缩略图时,WindowsDWM可以向该窗口发送WM_DWMSENDICONICTHUMBNAIL消息。类似地,当对于例如Peek的元素请求窗口预览时,WindowsDWM可以向该窗口发送WM_DWMSENDICONICLIVEPREVIEWBITMAP消息。在一些实施例中,在步骤609,客户机代理可以经由对应的DwmSetIconicThumbnail或DwmSetIconicLivePreviewBitmap消息用定制图标来响应这些通知。这允许在预览图像自主机到达之前的时期内显示定制图标,包括最后所知的图像或替换图像。在其他实施例中,客户机可以在窗口被预览之前从主机请求预览图像,但这可能要求额外的带宽和CPU利用率并加重了效率低下,作为交换仅在预览响应方面略微加快。在步骤610,客户机代理可以请求来自主机的对于窗口的远程窗口预览。在一些实施例中,这个请求可以包括所请求的窗口的HostID(主机ID)以便唯一地识别它。在其他实施例中,这个请求可以包括窗口句柄、该窗口的位置,该窗口的父窗口或其他信息以唯一地识别所请求的窗口。该请求可包括被设置为请求所识别的窗口的远程预览的一个或多个标记。在一些实施例中,可以通过虚通道来传输该请求。例如,可以通过ICA无缝或控制虚通道来传输该请求。在步骤612,响应于接收该请求,主机代理可以将该请求中所识别的窗口的预览状态设置为开。这可以例如通过将该窗口的窗口属性或标记设置为预定值或者通过由主机代理使用记账(bookkeeping)来完成。在步骤614,主机代理可以抓取该窗口的快照。在一些实施例中,如上文所述,这可以通过检索存储缓冲区的内容来完成。例如,可以钩住或拦截主机上合成桌面窗口管理器的命令,例如CreateTexture命令,以从各个应用窗口检索结构。在又一个示例中,可以调用窗口管理器的函数以检索所述结构,例如上文所述的DwmpDxGetWindowSharedSurface函数。在许多实施例中,可以使用PrintWindowAPI或类似的函数或API来抓取窗口快照。在一些实施例中,抓取窗口快照可以包括将当前的快照存储为先前的快照,然后用新的快照代替该当前的快照。这可以被用来例如允许差分图像的创建。在其他实施例中,在其他时候,例如在步骤618或620之后,当前的快照可以作为先前的快照来被使用。在步骤618,在一些实施例中,主机代理可以将该快照与之前抓取的快照进行比较。在一个实施例中,主机代理可以对之前抓取的快照进行XOR运算以创建差分图像。在一些实施例中,例如其中主机代理没有先前的图像,主机代理可以使用黑色图像作为先前的快照。这可以用来降低复杂度。在步骤620,该比较或XOR运算的结果可以被存储为差分预览图像。在一些实施例中,在步骤616,主机代理可以向客户机发送预览图像。在一个实施例中,该预览图像包括在步骤614抓取的快照,而在其他实施例中,该预览图像可以包括在步骤620创建的差分图像。在一些实施例中,当在第一图像上窗口大小被调整时,或者在其他情况下,可以周期性地发送完整的预览图像以减少损坏或错误。在一些实施例中,主机代理可以在该预览图像中设置标志或属性以指示该预览图像是差分图像还是完整预览图像。在一个实施例中,主机代理可以设置该标志以指示第一个预览图像不是差分图像,并且可以设置后续图像的标志以指示它们包含与最初的预览图像的差异。在一些实施例中,在传输之前,主机代理可以将该图像序列化到独立于装置的位图图像中。在又一个实施例中,在传输之前,主机代理可以使用RLE、JPG、PNG或其他压缩算法来压缩该图像。这可以用来减少传输所需要的带宽。在许多实施例中,因为在各种接口中可以以显著地减小了原始图像的大小的方式将缩略图预览呈现给用户,所以可以采用高级别的有损压缩而没有明显的失真。在其他实施例中,在压缩之前、在压缩之后或者不压缩,来缩放该图像以减少带宽要求。类似地,在其他实施例中,可以降低该图像的色彩深度。在一些实施例中,可以通过虚通道将该图像发送到客户机代理。在许多实施例中,随着窗口发生变化,可以周期性地重复步骤614-620。例如,在一个实施例中,主机代理可以使用例如由Microsoft提供的ActiveAccessibilityAPI的API来确定窗口的大小和位置何时发生了变化,并且可以相应地重复步骤614-620。在又一个实施例中,主机代理可以周期性地轮询该窗口,例如,每秒一次或其他间隔,以便确定窗口的内容是否已经发生变化,以及相应地重复步骤614-620。在步骤622,客户机代理可以从主机代理接收该图像。在一个实施例中,客户机代理可以经由到主机代理的虚通道来接收该图像。在其中客户机代理从主机代理接收如上文所述在步骤616的压缩图像的一些实施例中,客户机代理可以解压缩该图像或者将压缩的图像转换成未压缩的位图。在一些实施例中,客户机代理可以经由在该图像中设置的标志、属性或位来确定该图像是否是差分图像。如果所接收的图像不是差分图像,则在步骤624,客户机代理可以用所接收的图像来替换该窗口的最后所知的预览图像。在一些实施例中,替换该最后所知的预览图像可包括替换定制图标图像,而在其他实施例中,该最后所知的预览图像可以与定制图标图像分开存储。如果所接收的图像是差分图像,则在步骤626,客户机代理可以将所接收的图像与在客户机存储或缓存的最后所知的预览图像进行比较。在一个实施例中,在步骤628,客户机代理可以执行所接收图像与该最后所知的预览图像的XOR运算以产生完整的非差分图像。如图所示,然后,在步骤624,客户机代理可以替换该窗口的最后所知的预览图像。在一些实施例中,因为预览图像可包括远程窗口的完整内容,而且没有被剪切的区域,所以在步骤630,客户机代理可以将该预览图像存储为窗口图像。在另一个实施例中,客户机代理经由上文结合图2所述的方法来禁用对该窗口的更新。这可以减少带宽需求,因为该预览图像包括全部的应用输出数据加上任何被剪切的区域,因此对该应用输出数据的常规更新是多余的。在一些实施例中,一旦窗口不再被剪切或者不再需要预览时,结合下面的步骤634,客户机代理可以重新启用对窗口的更新。在一些实施例中,步骤630还可包括禁用对用于加速特征的所生成的窗口的本地子窗口的外部窗口剪切。在许多实施例中,在客户机处可以将各种图像加速特征的内容作为子窗口呈现在父远程窗口上方,所述图形加速特征例如远程音频视频扩展(RemoteAudio&VideoExtensions,RAVE),Flash或WindowsMediavideo,或其他。例如,并非是在主机处解码流式格式的多媒体文件、以诸如ICA的表示层协议编码所产生的图像、将该图像发送到客户机以及将它们显示在应用输出窗口中,这可能导致大量的带宽使用、缓存问题和较差的保真度用户体验,在一些实施例中,流式传输视频或混合的音频和视频数据而是可以被以客户机的本地格式从主机进行传输,并且由客户机进行解码并将其呈现在父远程窗口上方的子窗口中。这可以减少主机的处理负载并且提高流式传输协议的传输效率。内部剪切可以出现在子窗口上,例如,当用户激活父远程媒体播放器中的下拉菜单时,该下拉菜单应该显示在子窗口之上。这区别于外部剪切,例如当主机会话中的另一个窗口覆盖该应用窗口时。可以禁用对子窗口的外部剪切,以防止子窗口(例如,视频)在作为父应用窗口(例如,媒体播放器应用窗口)的预览图像的一部分而被显示时被不适当地剪切掉。在一些实施例中,为简单起见,也可以禁用内部剪切,这是由于事实上在预览期间用户不可能激活父应用的菜单。在步骤632,在一些实施例中,客户机代理可以禁用对于窗口的定制图标预览,或者启用客户机桌面窗口管理器来生成窗口的实时预览。例如,这可以通过使用DwmSetWindowAtribute方法设置窗口属性DWMWA_HAS_ICONIC_BITMAP为FALSE来完成。如在步骤602-604所讨论的,因为该窗口不再包括被剪切的区域,所以桌面窗口管理器可以生成窗口的实时预览而不包括剪切或图像损坏。通过禁用定制图标预览,可以降低客户机操作复杂度,尤其是对于如上文所述由于加速图形特征引起的混合的父/子窗口,其中客户机将不得不担当复杂的窗口管理器并且生成定制预览,该定制预览包括客户机呈现的子窗口的内容和从主机发送的定制图标或缩略图的组合。在一些实施例中,可以对于后续的从主机代理接收的窗口预览重复步骤622-632中的一个或多个步骤。在步骤634,一旦客户机代理检测到窗口不再被剪切或者不再需要预览,在一些实施例中,客户机可以通知主机不需要远程预览。在一些实施例中,客户机可以通过这样的步骤来检测窗口是否被剪切:监控窗口的大小、位置或叠置次序的变化,并且响应于该变化,检测窗口是否被剪切。在其他实施例中,客户机可以通过观察任务栏或其他元素关闭或终止带有指示已生成预览的类名的窗口来检测不再需要预览,所述类名例如“TaskListThumbnailWnd”、“TaskSwitcherWnd”、“Flip3D”或类似名称。客户机可以经由控制命令来通知主机不再需要远程预览,并且如在步骤610一样,可以包括HostID、窗口句柄、窗口的位置,该窗口的父窗口或其他信息以唯一地识别所请求的窗口。该通知可包括被设置为不请求所识别的窗口的远程预览的一个或多个标志。在一些实施例中,可以通过虚通道来传输该通知。例如,可以通过ICA无缝或控制虚通道来传输该通知。在一些实施例中,客户机代理使用上文结合图2所述的方法来启用对窗口的更新,并且启用窗口剪切,正如上文在步骤630处所讨论的。在步骤636,响应于收到来自客户机代理的通知,主机代理可以将该请求中所识别的窗口的预览状态设置为关。这可以例如通过将该窗口的窗口属性或标志设置为预定值或者通过由主机代理使用内部记账(bookkeeping)来完成。在许多实施例中,对于后续的预览可以重复方法600,并且对于多个寄载的窗口可以并行或重复地执行方法600。因而,方法600可以被用于向客户机的操作系统或壳提供来自所寄载的应用的未被剪切的窗口,以用于各种用户接口中,这提供了无缝体验,其中远程执行的应用看起来与本地执行的应用几乎没有区别。应该理解,上文描述的系统可提供这些组件的任意多个或每一个并且这些组件可以在独立机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。可以使用编程和/或工程技术将上文所描述的系统和方法实现为方法、装置或产品以提供软件、固件、硬件或上述的任何组合。此外,上述系统和方法可作为在一件或多件产品上实现或在其中实现的一个或多个计算机可读程序而被提供。此处使用的术语“产品”旨在包括从一个或多个计算机可读的装置、固件、可编程逻辑、存储器装置(例如,EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如,集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、电子装置、计算机可读的非易失存储单元(例如,CD-ROM、软盘、硬盘等)可访问的或嵌入其中的代码或逻辑。所述产品可以是从经由网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号等提供对计算机可读程序的访问的文件服务器可访问的。所述产品可以是闪存卡或磁带。所述产品包括硬件逻辑以及嵌入在计算机可读介质中由处理器执行的软件或可编程代码。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。已经描述了用于提供对于所寄载应用的无缝的缩略图的方法和系统的某些实施例,对本领域技术人员而言,显而易见可以使用包含本发明的概念的其他实施例。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1