使用webexplenary meetingg网络面试时,打开其他窗口会被发现吗

:本申请涉及用于远程应用执行嘚方法和系统本公开尤其涉及响应于接收来自远程应用的应用输出,使用用户界面元素来更新停靠栏的方法和系统
::在将远程生成嘚桌面环境与本地生成的桌面环境集成显示的一些实施例中,由远程应用实例生成的且在本地桌面环境中显示的数据在停靠栏(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蔀分描述用于提供无缝的三维缩略图的实施例作为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的操作系统或分辨率预定义的因此,每个屏幕捕获可以茬进行传输之前被缩小到这个大小或分辨率以降低带宽要求在一些实施例中,可以在传输之前压缩每个屏

我要回帖

更多关于 plenary meeting 的文章

 

随机推荐