用于生成在本地机器上和远程机器上生成的任务栏按钮组条目的组合显示的方法和系统
2020-01-14

用于生成在本地机器上和远程机器上生成的任务栏按钮组条目的组合显示的方法和系统

本公开特别描述了用表示远程机器上执行的远程应用的用户界面元素和由该远程应用生成的应用输出来更新由本地计算机生成并显示的任务栏的方法和系统。这些方法和系包括本地客户端,其接收由远程应用生成的应用输出以及远程窗口配置信息,生成包含本地任务栏分组配置信息的应用输出窗口,并且响应于该本地任务栏分组配置信息来更新任务栏。

图1C描述在其中主处理器121通过有时被称为后端总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1B所示的实施例中,处理器121通过本地系统总线150与各种1/0装置130进行通信。可以使用各种不同的总线将中央处理单元121连接到任意I/o装置130,包括VESAVL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PC1-X总线、PC1-Express总线或NuBus。对于1/0装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示器124通信。图1C描述了在其中主处理器121通过HYPERTRANSP0RT、RAPID10、或INFINIBAND通信技术直接与1/0装置130b通信的计算机100的实施例。图1C也描述了在其中本地总线和直接通信相混合的实施例:处理器121使用本地互连总线与1/0装置130a通信同时直接与1/0装置130b通信。

避免在图5A中所示的缩略图损坏的一个方法是对于远程应用不使用缩略图,而是仅使用表示远程应用窗口的图标,例如表示记事本或web浏览器应用的图标。然而,当紧接着客户端呈现的本地应用的静态或动态缩略图查看这些图标时,用户将不会体验无缝接口,因为哪个应用是本地的以及哪个应用是远程的将会很明显。另一个方法是从服务器连续地发送每个窗口的各自的图像,但这可能消耗大量的带宽而且对于没有发生变化的静态图像是不必要的。可以通过以较低速率发送图像来减少带宽需求,但这可能降低用户体验,因为窗口图像没有被更新以反映它们正确的内容。或者,假设用户不与其交互的窗口不经常变化,则可以以高速率发送前台或活动窗口的个体图像,以较低的速率发送后台窗口的个体图像。然而,这种假设可能并不总是正确。后台窗口可包括响应于非用户交互的事件来更新的动态内容,例如当新的电子邮件到达时更新的电子邮件应用、具有动态内容的web浏览器窗口、例如视频播放器的多媒体内容,或者随着时间改变其显示的简单时钟。

仍参考图6A,更具体地,在一些实施例中,在远程计算装置106上执行的第二代理204可以接收向本地计算装置102发送窗口预览的请求。在一些实施例中,第二代理204可以从第一代理202或在本地计算机器102上执行的其他应用或进程接收该请求。在其他实施例中,第二代理204可以响应于由第二代理204监控的定时器的到时来接收该请求。例如,第二代理204可以监控定时器以周期性地在该定时器到时时,向本地计算装置102发送窗口预览。在另一个实施例中,第二代理204可以不接收显式请求,而是通过定时器的到时隐含该请求。在又一个实施例中,第二代理204可以响应于其他触发器来开始向本地计算装置102发送窗口预览,例如打开到本地计算装置102的连接、远程计算装置106上的应用或进程生成新的窗口207、外部定时器到时、来自用户或管理员或远程用户或远程管理员的人工命令,或指示期望窗口预览的任何其他命令或信号。

在一些实施例中,第二代理204传输第一窗口207的标识符和第一进程206的标识符。在其他实施例中,第二代理204仅传输第一窗口207的标识符。在又一个实施例中,第二代理204仅传输第一进程206的标识符。

在一些实施例中,本地计算装置102的用户连接到远程计算装置106并且在本地计算装置102上查看在远程计算装置106上生成的远程桌面环境的本地版本的显示,其包括多个数据对象。在这些实施例的一个中,通过远程计算装置106(或通过第二远程计算装置106b)将至少一个资源提供给用户并且将其显示在远程桌面环境中。然而,出于选择或者由于策略或技术要求,可能有用户在本地计算装置102上执行的资源。在这些实施例的又一个中,本地计算装置102的用户更喜欢提供对用户可用的所有资源的访问的集成的桌面环境,而不是对于由单独的机器提供的资源的不同的桌面计算环境。例如,用户可能发现在多个图形显示之间的导航是混乱的且难以有效使用。或者,用户可能希望将由一个机器所提供的一个应用生成的数据与由不同的机器提供的另一个资源联合使用。在这些实施例的又一个中,可以通过与集成远程资源的和本地资源的显示的远程桌面环境进行交互来控制对执行资源、窗口移动、应用最小化/最大化、调整窗口大小和终止执行资源的请求。在这些实施例的又一个中,经由集成的桌面环境可访问的应用或其他资源-包括在本地计算装置102上执行的那些资源和在远程计算装置106上执行的那些资源-被显示在单个桌面环境中。

在又一个实施例中,本地客户端可以决定在收到额外的应用输出时执行第二进程。例如,一些远程应用可以被配置为在该应用的单个窗口中显示多个文档。在大的监视器上,该应用窗口可以被扩大或全屏使得用户可以并排查看或同时查看该多个文档。然而,这可能使用户不能同时查看这些多个文档和来自另一个应用的文档,这要归因于某些文档窗口可能被限制在第一应用窗口内所造成的移动文档窗口的有限的灵活性。因此,一些用户已经注意到它们可能能够启动这些应用的多个实例使得每个实例显示单个文档,这恢复了分别地移动每个文档窗口的能力。因此,在用户已经显式地启动了应用的不同实例的一些实施例中,本地客户端可以决定为每个单独实例执行额外的进程,以便在本地机器上保持用户所期望的行为。

图1A是描述包括与远程机器通信的本地机器的网络环境的实施例的框图;

图6A是用于提供无缝的三维缩略图的系统的实施例的框图;

在一个实施例中,第一代理2O2检索在任务栏中显示的工具栏按钮的标识符的枚举;例如,第一代理202可执行向操作系统查询该列举的调用(例如,但不限于“TB_GETBUTT0N”命令)。在另一个实施例中,第一代理202将所列举的工具栏按钮的标识符与第一窗口207的标识符相关联;例如,第一代理202可以创建所接收的第一窗口207的标识符与所枚举的工具栏按钮的标识符之间的映射。在又一个实施例中,第一代理202创建将要在任务栏按钮组230中标识的窗口的索引。在又一个实施例中,第一代理202将第二窗口212的标识符(其可以是第一窗口207的标识符)添加到所创建的索引中。在又一个实施例中,第一代理202确定第三窗口216是由与第一进程206大体上相似的进程生成的,并且响应于该确定,添加第三窗口216的标识符到所创建的索引。在又一个实施例中,第一代理202创建由在所创建的索引中存储的标识符填充的任务栏按钮组。在一个这样的实施例中,该任务栏按钮组可以具有按钮样式的BTNS_DROPDOWN。在另一个这样的实施例中,创建任务栏按钮组可以包括使用诸如TB_MOVEBUTTON的命令来填充该组。

图4B是描述将在本地机器上和在远程机器上生成的任务栏按钮组条目进行组合显示的一个实施例的屏幕截图;

图1B-1E是描述适用于此处所描述的方法和系统的计算机的实施例的框图;

在一些实施例中,响应于请求,第二代理204可以执行对一个或多个窗口207a-207c的图像预览的捕获。在一个实施例中,第二代理204可以使用由操作系统提供的API来抓取一个或多个应用窗口207a-207c的快照,例如PrintWindowAPI或其他接口。在一些实施例中,第二代理204可以经由窗口句柄识别用于快照捕获的窗口,而在其他实施例中,第二代理204可以经由窗口坐标来识别窗口。在其他实施例中,第二代理可以经由与另一个窗口的父子关系来识别用于快照捕获的窗口。在一些实施例中,第二代理204可以进一步地抓取该窗口的快照。这可以响应于定时器的到时、响应于窗口改变大小或位置、响应于窗口内容被改变、响应于窗口的叠置次序(z-order)发生变化或者任何这些触发事件的组合来完成。在许多实施例中,可以由第二代理204缓存一个或多个先前的快照。