CN103294172B - 在远程桌面会话中提供多个鼠标输入的方法 - Google Patents
在远程桌面会话中提供多个鼠标输入的方法 Download PDFInfo
- Publication number
- CN103294172B CN103294172B CN201310003846.6A CN201310003846A CN103294172B CN 103294172 B CN103294172 B CN 103294172B CN 201310003846 A CN201310003846 A CN 201310003846A CN 103294172 B CN103294172 B CN 103294172B
- Authority
- CN
- China
- Prior art keywords
- projector
- input
- principal computer
- remote desktop
- pointing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 103
- 238000004891 communication Methods 0.000 claims description 9
- 238000012905 input function Methods 0.000 claims description 9
- 238000004088 simulation Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 34
- 230000002452 interceptive effect Effects 0.000 abstract description 16
- 238000009434 installation Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 35
- 239000008186 active pharmaceutical agent Substances 0.000 description 33
- 239000000243 solution Substances 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 239000000047 product Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008447 perception Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001678 irradiating effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/038—Indexing scheme relating to G06F3/038
- G06F2203/0382—Plural input, i.e. interface arrangements in which a plurality of input device of the same type are in communication with a PC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/038—Indexing scheme relating to G06F3/038
- G06F2203/0383—Remote input, i.e. interface arrangements in which the signals generated by a pointing device are transmitted to a PC at a remote location, e.g. to a PC in a LAN
Abstract
本申请公开了在远程桌面会话中提供多个鼠标输入的方法。用于通过远程桌面连接与交互式白板投影仪(客户端)进行通信的计算机(主机),启动支持多个鼠标(即绘图笔)的第三方应用,并将连接于投影仪的各个笔设备的虚拟鼠标设备以及输入事件信号提供给这些应用。尽管不存在增加的驱动程序或物理连接的硬件,所述应用将如同主机系统被配置有多个已安装鼠标一样来运行。
Description
相关申请的交叉引用
本申请涉及2011年12月21日提交的,申请号为13/332,751的共同拥有的美国专利申请,其全部内容通过引用并入本文。
技术领域
本方法大体上涉及远程桌面服务构件(以往称为终端服务)和Microsoft操作系统的原始输入API(applicationprogramminginterface,应用编程接口),具体涉及为运行于远程桌面会话中的应用提供多个客户端鼠标设备的输入事件。
背景技术
常规的投影仪为了建立一个足够大的投影区域,通常需要被安置成远离显示表面。在没有正确地安装和布置的情况下,发射光路不能保持为无障碍。从显示表面的前面或附近经过的主持者通常会面对照射他们眼睛的明亮的投影灯光,或者他们被投影仪的图像着色,同时他们的阴影被增加到显示表面。
短焦投影仪帮助缓解这些问题,并且对于交互式投影系统是尤为必要的。这些投影仪理论上被安置在目标显示表面上方的墙壁或天花板上。短焦技术使投影仪能够在其下面的墙壁上输出足够大的屏幕图像,并且高处安装提供了交互用户能够更容易地接近的、不被阻挡的屏幕图像。被安装于目标表面的上方和附近的短焦投影仪还减弱了投射到主持人/参与者眼中的光,并减少了当主持人/参与者插入光输出路径中时所产生的阴影。由于这些原因,许多交互式白板系统使用短焦投影仪作为其显示构件。
在交互式电子白板系统中,数字笔替代了墨水,并提供了将内容绘制到虚拟白板上的输入接口。传统上,数字笔是模仿其墨迹对应物以提供逼真的用户体验的物理硬件构件。它们可以传输它们的位置,或可以被远程监视以得到它们在显示表面上的位置。各个笔的按键、方向或其他独特的识别特征也可以通过支持应用来检测,并且被用于影响操作、修改或操纵绘图特征或改变动作。计算机应用可以使用这种笔交互来在白板表面上产生不同的输出。例如,移动中的笔的位置信息被计算机应用所监视,进而在应用窗口中的相应的笔位置处将电子彩色像素元素描绘在虚拟的画布上。应用同时显示画布使电子墨水看起来好像通过使用虚拟笔来沉积和涂绘。该类技术并不是新的,并且使用写字板、作为“笔”的替代品的鼠标或其他输入源的电子绘图应用是相当普遍和容易获得的。
随着交互式白板系统的日益普及,提供支持多个笔输入的系统变得更有需求。多个输入允许同时间的用户在交互中进行共享,或提供了简单的方法来区分不同的交互构件与特定的输入设备。令人遗憾的是,多输入感知应用支持是有局限的。当供应商将笔输入配置成具有鼠标设备的功能以使应用的可操作性最大化时,应用开发人员必须使用系统供应商提供的用于特定硬件的API或依赖于通用操作系统支持。甚至操作系统中的允许应用访问多个设备以及他们的输入的开发人员API,也相对较新或没有很好地被定义。并且,操作系统自身典型地被配置为在某一时间用于单个用户交互,并将多个同类型的设备视为单个统一设备。例如,多个鼠标可以通过多个计算机及其操作系统来连接和识别。但是,每一个鼠标的操纵通常用于控制单个被提供的系统指针。其结果是,多个已连接的鼠标统一地控制/共享单个屏幕元件。
多种操作系统中的一些低级别的开发人员API允许应用访问各个唯一的鼠标设备。应用的职责通常是,为只可以与应用的GUI(graphicaluserinterface,图形用户接口)协作的各个鼠标设备创建各自的指针和位置函数。因此,支持多个笔的应用通常专门用于特定的目的或特定的设备组。在其他情况下,应用选择只支持有限的单设备操作系统API。
微软的操作系统给开发人员提供了低级别的原始输入API,由此应用可以获得关于连接到该系统的任何人机接口设备(humaninterfacedevice,HID)的信息。微软还开发了具有MultiPoint(多点)鼠标SDK(sofwaredevelopmentkit,软件开发工具包)的托管代码解决方案,其公开了支持多个鼠标设备的通用应用环境。该SDK为应用提供了用于跟踪多个设备的窗口平台,并且包括对管理光标图标、位置以及与GUI和跟踪事件有关的其他鼠标的有益支持。
例如,爱普生的BrightLink475Wi交互式投影仪被配置为具有电子白板应用的短焦投影仪,其形成交互式白板投影仪(interactivewhiteboardprojector,IWP)。这种一体化产品解决方案旨在通过提供在由投影仪输出的绘图区域上操作的双电子笔,来取代传统的白板。所述笔由接收器检测和管理,并提供内部的白板应用的输入。本发明的一个目的是,为主机PC上可被配置为使用IWP和笔的任何应用提供类似的输入。
图1示出了通过网络12连接到主计算机16的多个交互式白板投影仪(IWP)的例子。由于短焦投影仪被安装在墙壁或天花板的高处,功能接口转接盒(break-outbox)14从投影仪向下延伸并被安置在显示表面30的旁边。该盒包含用于白板应用的用户按键和交互式笔设备。作为基于网络的投影仪,IWP可以被配置为与其他IWP设备共享内容和进行交互。因此,多个用户笔输入可以在远程支持应用中提供并且可在远程支持应用中获得。
实际上,网络投影仪可以被用来输出从某些远程源设备处获得的显示内容。网络投影仪上的设备输入也可以由远程目标设备使用。
提供多个输入设备的关键难题在于,与连接到IWP的主机PC上的应用共享设备硬件。在以往的产品解决方案中,所提供的输入硬件被物理连接到主机PC,在主机PC中安装驱动程序以翻译笔的输入。然而,由于IWP是基于网络的产品,用于连接输入设备的额外布线是不合理的。通过现有网络来传输硬件信号是一个解决方案。这可能要求例如设备的基于网络的USB驱动程序被安装在PC上。但是,用户一般不喜欢在他们的系统上安装设备驱动程序。
使用网络投影仪,通过网络将应用屏幕内容从主机PC发送到投影仪显示器需要某种传输方法。正如在共同未决的第13/332,751号申请中所讨论的,微软的远程桌面服务在理论上可以适用于这种在Windows操作系统环境中的情况。通过传输接口发送设备输入是可行的。不幸的是,在托管的远程桌面会话中,远程桌面连接客户端应用仅仅提供单个鼠标和键盘设备。客户端(投影仪)上的多个鼠标将通过远程桌面协议统一成单个鼠标设备。远程桌面会话中运行的应用将只识别单个鼠标设备。
在主机上物理连接附加设备因布线和驱动程序的原因而被认为是不合理的,这在进行远程桌面会话时也是有问题的。其原因在于,主机的本地HID设备在输入桌面的操作中受限,所述输入桌面在远程桌面连接期间将会是Windows登陆屏幕桌面。这意味着在运行于主机远程桌面会话中的应用中,多个HID设备不能被查看或被利用。
期望的解决方案是使用远程桌面服务来使IWP以及接口盒客户端与主机PC相连,以获得桌面应用所预期的显示输出性能。此外,期望的解决方案还允许在远程桌面会话中,接口盒客户端和IWP上的多个笔设备对于在主机PC上启动的任何多输入应用都是可用的。理论上,这将需要安装大量的额外的软件或驱动程序。另外,当IWP的显示没有被同一台PC使用时,还希望与主机PC上的应用共享IWP的笔设备。本发明旨在实现这些和其他的目标。
发明内容
本发明的方法和设备使用远程桌面连接,将来自于连接到客户端设备的多个鼠标的输入事件传输到在远程桌面会话中运行于主机上的目标应用。本发明不要求在主机系统上安装鼠标驱动程序,仍然使利用微软的原始输入或者多点鼠标SDK的目标应用能够识别出来自分别与客户端设备上的鼠标相关联的虚拟鼠标设备的鼠标输入并与之进行交互操作。
具体来说,本发明使通过远程桌面连接与EPSON交互式白板投影仪(客户端)通信的、基于Microsoft的计算机(主机),能够启动支持多个鼠标(即绘图笔)的第三方应用,并将连接到投影仪上的各个笔设备的虚拟鼠标设备和输入事件信号提供给这些应用。尽管不存在增加的驱动程序或物理连接的硬件,所述应用将如同主机系统被配置有多个已安装鼠标一样运行。
本发明提供了用于在客户端投影仪与主计算机之间的远程桌面会话中提供多个人机接口设备的输入的系统、方法和/或计算机可读介质,所述客户端投影仪以及主计算机通过网络来连接。所述方法例如包括:建立客户端投影仪和主机计算机之间的远程桌面会话;在客户端投影仪中,使用处理器来获取来自多个人机接口设备的输入,并将所述人机接口设备的输入转送到主计算机;在主计算机中,使用处理器接收来自客户端处理器的人机接口设备的输入,并保存及维护作为虚拟设备的每个客户端投影仪人机接口设备的信息;拦截来自运行于主计算机中的应用的原始输入函数调用;采集各个主计算机人机接口设备的信息;以及将各个主计算机人机接口设备的信息以及各个虚拟设备的信息返回给运行于主计算机中的应用。
在一个优选实施例中,拦截原始输入函数调用包括使用钩子处理器处理函数调用。另一个实施例还包括模拟各个虚拟设备的包括设备到达和设备移除的系统事件。
一个实施例还包括维护用于命名和识别每个客户端投影仪人机接口设备的虚拟设备对象。在另一实施例中,返回给应用的信息包括主计算机人机接口设备句柄和虚拟设备句柄的计数和列表。
在一个实施例中,来自客户端投影仪人机接口设备的输入包括标记、按键状态和坐标信息中的至少一个,并且在另一个实施例中,客户端投影仪人机接口设备是电子白板笔。
在又一个实施例中,本发明的方法还包括:建立主机计算机和客户端投影仪之间的远程桌面服务虚拟信道,并且由主计算机人机接口设备接收通过远程桌面服务虚拟信道从客户端投影仪转发的输入。在又一实施例中,虚拟设备是虚拟鼠标。
参照以下说明书和权利要求并结合附图,本发明其他目标和优点以及对本发明的全面理解将变得明显和容易领会。
附图说明
在附图中,相同的附图标记表示相同的部件:
图1示出了网络中的多个交互式白板投影仪(IWP);
图2示出了本发明系统的大体框图;
图3示出了本发明方法的大体步骤;以及
图4示出了本发明的主计算机以及客户端投影仪的处理器以及存储器的简化框图。
具体实施方式
IWP(交互式白板投影仪)中的硬件笔输入设备,即实质上的计算机鼠标,只有当其硬件输入能够被应用检测到和使用时,将其提供给主计算机中的应用才是有用的。运行于Microsoft操作系统中的应用有权使用几个API(应用编程接口),其可以为应用提供关于各个已连接的鼠标及其输入的详细信息。原始输入API适宜地位于核心Windows操作系统的用户API客户端动态链接库(dynamiclinklibrary,DLL)user32.dll中,并且提供C函数、结构以及消息的小集合。原始输入是用于对来自已登记的最高级别集合类的事件以及设备进行低级别访问的首选接口。微软还提供了更高级别的多点鼠标SDK(软件开发工具包),但是在内部其被构建于原始输入接口的顶部。因此,支持多鼠标输入设备的应用有可能利用原始输入API。
如果原始输入API可以容易地用个人的自定义版本来替换,则可以实现本发明的一个目的。这个自定义版本可以被实现为,模仿每个公开的接口函数的预期的原始输入API行为,同时还提供必要的修改以支持自定义的需求。例如,自定义版本能够确保从每个API方法返回的结果将所有的鼠标设备排除在外。从正在使用的应用的角度来看,API方法将正确地操作并且所述应用会报告没有鼠标被连接。在另一个例子中,自定义版本可以对比实际可用设备更多的设备做出响应。正在使用的应用将会做出相应地响应,因为API在接口指引内相应地响应而确信存在更多设备。因此,所述自定义版本能够通过网络从IWP接收输入(比如说,用于每个笔设备的事件数据),以及通过正在与应用进行交互的经过修改的原始输入API来将此信息转发给应用。
所述替换方法的一个问题是,user32.dll公开了大量的API组,而不仅仅公开了原始输入方法。替换所有API将是艰巨的并且不可想象的任务。此外,所述user32.dll是核心Windows操作系统文件,其易于通过可确保其本原的各个系统实用程序来检查。
为了克服这个问题,另一个可选项已被选择用于本发明:拦截或钩挂。钩挂(Hooking)允许人们在这些软件构件之间的接口处通过拦截函数调用或消息事件来更改或增加软件构件。以这种方法,可以通过为目标函数重写存储器中的代码来拦截或扩展任意函数。初始的目标函数甚至可以被保存,以便扩展版本能够调用初始目标实现以获得初始结果。然而,对于API监视方法而言方便的是,用户模式钩挂还可以被用来改变或更改函数结果。例如微软Detour、APISpy32或开源EasyHook引擎之类的产品,将具有钩挂函数的库以及框架提供给希望创建应用的开发人员,开发人员在其产品中利用钩挂方式。
存在许多可以被实现的API钩挂方式。其包括诸如导入表修补、扩展的导入表修补、导出表修补、简单代码重写和扩展的代码重写等方法。本发明并不关心也不限于特定的钩挂方式或其方法,除非所述钩挂被用来获权使用原始核心输入API函数,并且是必要条件。
在许多钩挂方法中,注入器构件在适当时间将自定义钩子库代码模块加载以及安装到目标应用的进程中。在一种方式中,所述注入器在运行时修改在进程存储器中加载的共享库中的用于所需目标函数的导入描述符表。这些修改提供了对于自定义钩子库中的钩子处理器的调用,所述钩子处理器在应用试图利用导入表映射调用方法时,拦截所需的目标函数。在钩子处理器中实现的代码可以简单地监视和记录动作,并将执行转到初始本地目标实现。另外,代码可以编制来改变预期的函数行为、自定义或过滤初始结果或者完全替换所述方法。最终,钩子使执行返回至调用应用。使用所述钩挂方式,可以实现类似于全部API库替换的目标解决方案。
本发明将“虚拟鼠标”提供给第三方应用,所述第三方应用使用Microsoft操作系统中的微软原始输入API来支持一个或更多个鼠标设备。即使当第三方应用运行在远程桌面会话中时,本发明的方法也可以操作。本发明的目标之一是通过网络将来自于IWP上的多个唯一笔设备的输入安全地提供给在PC主机上运行的应用。本发明允许来自于其他源位置的“虚拟鼠标”被包含在应用的操作中。
“虚拟鼠标”与实体鼠标设备的区别在于,操作系统不感知“虚拟鼠标”。另一方面,应用将使用操作系统API服务来获得“虚拟鼠标”,因此,“虚拟鼠标”对于应用层(即原始输入)来说必须表现为实体鼠标设备。这样做的目的是,不需要进行任何自定义应用修改来支持与交互式白板投影仪(如爱普生的BrightLink475WiIWP)协作的笔设备。在操作系统中安装或使用鼠标驱动程序是不希望发生的,即使这样的驱动程序要与远程物理硬件协作。虽然这将通过本地原始输入或相关的API来为应用自动地提供对设备的访问,但这些设备将被暴露于所有的应用并能够被系统使用。最重要的是,当在远程桌面会话内进行操作时,被暴露于操作系统的所有鼠标都针对输入桌面。远程桌面会话限制于仅仅单个远程桌面鼠标,即远程桌面连接客户端所提供的一种虚拟鼠标。因此,在这种情况下,将笔设备暴露于操作系统是不希望发生的。
本文中所述的网络投影仪可被称为客户端或投影仪。所述投影仪将为虚拟网络连接提供客户端侧应用以显示远程桌面内容。本文中所述主机被定义为联网的计算机、笔记本电脑或可以在与客户端的虚拟网络连接中提供服务功能等的手持设备。在实施例中,网络投影仪与提供远程桌面连接客户端应用支持的Windows嵌入式操作系统结合。主机是被称为远程桌面终端服务器的、提供微软的远程桌面服务的服务器构件的联网计算机。
图2是概述本发明的主要构件的框图。如上面所讨论的,本发明的客户端是连接到网络12的网络投影仪10。所述网络投影仪10(客户端)可以具有Web服务器构件,所述Web服务器构件运行于投影仪10之上,以便为主机16提供用于安装所需构件的访问接口,并且所述Web服务器构件提供了启动远程桌面连接进程的方法。远程桌面连接进程的详细内容对于理解本发明不是必要的,其被公开在2011年12月21日提交的、申请号为13/332,751的共同拥有的美国专利申请中,该申请的全部内容通过引用被结合于此。在下文中,网络投影仪10将被称为客户端投影仪10。如上所述,主机16可以是如图2所示的联网计算机、如图3所示的笔记本电脑或手持设备。主机16在本文中通常被称为主计算机16。在图2所示的优选实施例中,客户端投影仪10与提供远程桌面连接客户端18应用支持的Windows嵌入式操作系统结合,并且主计算机16与提供服务器构件“远程桌面终端服务器34”的Windows操作系统结合。
远程桌面连接客户端18是在客户端投影仪10中运行以使用远程桌面协议(RemoteDesktopProtocol,RDP)46与主计算机16进行通信的应用,其中通过作为接口的远程桌面协议,主计算机16将桌面显示提供给客户端投影仪10并且所述客户端投影仪10将键盘/鼠标事件49提供给主计算机16。远程桌面连接客户端18在客户端上提供用于访问远程桌面会话以及与远程桌面会话交互的用户接口。该构件管理任何外部动态链接库(诸如用于扩展远程桌面服务虚拟信道22所必须的那些)的加载,如同多笔输入重定向构件24一样。
客户端投影仪10的多笔输入获取模块26负责计数以及访问已连接的笔设备28(即电子白板笔),从而维护各个笔设备的识别数据,并最终收集各个笔的事件数据。所获取的数据以及设备信息被传送到多笔输入重定向构件24,以便通过网络12转发到主计算机16的构件。从硬件设备中获取事件数据可能要求该构件为驱动程序或其他低级别接口的一部分。或者,其可以被配置为从其他的模块接收该信息。
离开多笔输入获取模块26的事件数据将采取包括通用鼠标相关行为信息的结构形式。多笔输入获取模块26将确保所述结构适用于进行交换。在一个实施例中,事件数据遵循类似于微软的MOUSE_INPUT_DATA(鼠标_输入_数据)结构的形式,并且包括标记、按键状态以及坐标移动信息。
在一个实施例中,与多笔输入重定向构件24进行的通信,使用CreateMsgQueue(创建消息队列)或类似的API通过消息队列来提供。也可以使用其他的进程间通信的形式。或者,多笔输入获取模块26可以作为子构件被包含在多笔输入重定向构件24中。
客户端投影仪10的多笔输入重定向构件24为远程桌面服务虚拟信道22创建了客户端侧的端点,并传输由多笔输入获取模块26接收的多笔输入事件32。多笔输入重定向构件24被打包为动态链接库,当建立新的远程桌面连接时所述动态链接库被远程桌面服务加载。
在一个替代实施例中,多笔输入重定向构件24被单独启动,并使用其自身的到多笔输入接收器构件36的网络链路,所述多笔输入接收器构件36也被配置为使用单独的网络链路。以这种方式,远程桌面构件不需要传送多笔输入事件32,因为它们改为在单独的网络链路上传送。
主计算机16的远程桌面终端服务器34使用远程桌面协议(RDP)46与客户端进行通信。它为远程桌面会话提供了托管构件,如远程桌面,并允许客户端机器(即客户端投影仪10)与主计算机16相连接以访问用户桌面。
主计算机16的多笔输入接收器构件36为远程桌面业务虚拟信道22创建服务器侧的端点,并等候从多笔输入重定向构件24传送由多笔输入获取模块26提供的输入事件。多笔输入接收器构件36在接收到笔设备事件32时,将所接收的笔设备事件32调度给虚拟鼠标设备接口38。
在一个替代实施例中,多笔输入接收器构件26可以从其他包括单独的网络连接的源接收输入事件。为了避免不必要的数据编组,多笔输入接收器构件36可以合并为虚拟鼠标设备接口38的一个模块。
主计算机16的虚拟鼠标设备接口38提供了根据其收集的输入事件来准备或丢弃“虚拟鼠标”设备40的方法。基本接口提供了使用设备识别句柄以及可选事件数据的DeviceAdd(设备添加)、DeviceRemove(设备移除)以及DeviceEvent(设备事件)接口函数。虚拟鼠标设备接口38构件存储以及维护每个逻辑(虚拟)鼠标的信息,并调度或提供接口以获取其接收的事件数据。
虚拟鼠标设备接口38可合并入快速启动钩子注入器应用42,或者其可以为原始输入钩子处理器44的整合部分。
主计算机16的快速启动钩子注入器应用42对将原始输入钩子处理器44构件注入到正在运行的目标应用中进行管理。可选地,目标应用可被快速启动钩子注入器应用42启动,并且在应用加载后以及执行前被立即钩挂。
快速启动钩子注入器应用42可以显示工具栏、应用窗口或其他的GUI(图形用户接口)元素,并可以用来帮助用户选择期望与“虚拟鼠标”输入合并的原始输入感知目标应用。例如,GUI可以呈现为包含在系统中加载应用的图标的类似工具栏。用户仅需要选择图标来可选地启动,并接着将原始输入钩子处理器44构件注入应用。在另一个实施例中,运行中的程序的列表可以被选择。在所述列表中选择一个应用将使已经在运行的进程动态钩挂。在另一个实施例中,工具栏上的应用的图标可被配置。例如,用户可以将应用的快捷方式或可执行文件拖放到工具栏区域,所述工具栏区域将使应用图标被添加到GUI。另外,文件选择对话框可以被提供并用于识别工具栏的应用元素。选择图标将启动相关的应用。
注入将根据钩挂框架及其所使用的方法而发生。快速启动钩子注入器应用42可以被配置为报告注入进程的状态,如通知用户在建立钩挂进程中的任何难点(即,所选择的应用没有使用原始输入协议)。
快速启动钩子注入器应用42通常被自动地启动进入新的远程桌面会话的桌面中。或者,快速启动钩子注入器应用42也可以直接被用户激活。与工具栏一样,应用可以被配置为用户桌面中的普通构件。在任一种情况中,所述快速启动钩子注入器应用42可用于为被实施钩挂操作的应用提供书签,并且能够保存注入状态事件或任何被配置的应用的状态以便将来使用。
在一个实施例中,快速启动钩子注入器应用42维护虚拟鼠标设备接口38,并提供与所有被启动的原始输入钩子处理程序44进行通信的通道。通过这种方式,快速启动钩子注入器应用42能够管理系统中的所有“虚拟鼠标”。
原始输入应用A...N50为主计算机16中现有的多设备感知应用,其可以从多个独立的鼠标设备中获得帮助(benefit)。每个应用被配置为使用本地操作系统的原始输入API48。
主计算机16的原始输入钩子处理器44被注入到每个被选择的目标应用的正在运行的进程空间中,并开始执行,以试图钩挂由微软的user32.dll提供的所需的原始输入API48。该构件的主要任务是在其注入的地方拦截由原始输入感知应用所使用的所有原始输入API48函数调用并且用自定义实现替换所述函数调用。该自定义实现提供“虚拟鼠标”以及应用的虚拟鼠标设备接口38的相关输入事件,所述应用被配置为与本地原始输入API方法通信。要完成该自定义实现,原始输入钩子处理器44还必须以与本地原始输入API机制一致的方式模拟应用的某些系统事件和消息。例如,主机操作系统进程执行以下动作:在应用窗口消息队列中发布事件,另外报告设备到达和设备移除事件,就如报告和管理“虚拟鼠标”设备。
在一种实现中,原始输入钩子处理器44中存在多个构件。它们将在下面进行概述。
对于每一个被钩挂的原始输入API函数,RawInputHooks(原始输入钩子)模块将替换方法提供给钩子处理器拦截接入点。当原始输入API48函数被应用调用时,所述钩子处理器处理所述函数调用。
GetRawInputBuffer_Hooked(获取原始输入缓冲区_钩挂)函数返回属于调用线程的Windows消息队列的虚拟鼠标事件数据。其将此信息添加到由本地GetRawInputBuffer方法得到的任何数据中。
GetRawInputData_Hooked(获取原始输入数据_钩挂)函数检查传入的被传递数据事件句柄,并且如果其与之前提供的并用于虚拟鼠标方法的唯一的句柄相匹配,则返回信息请求命令以及事件句柄所关联的适当数据。否则,该方法简单地激活本地GetRawInputData以使系统依照其数据事件句柄进行处理。
GetRawInputDeviceInfoW_Hooked(Unicode,统一的字符编码标准)和GetRawInputDeviceInfoA_Hooked(ANSI,美国国家标准化组织)提供用于相关的原始输入GetRawInputDeviceInfoW(获取原始输入设备信息W)和GetRawInputDeviceInfoA(获取原始输入设备信息A)函数的钩子方法。所钩挂的处理器检查传入的被传递设备句柄,如果其与任何已知的虚拟鼠标的设备句柄匹配,则该方法返回为来自虚拟鼠标设备接口38的为设备收集的适当信息。否则,当设备句柄是未知时,返回调用本地的原始输入方法所得到的结果。
GetRawInputDeviceList_Hooked(获取原始输入设备列表钩挂)函数首先通过调用本地的GetRawInputDeviceList方法来收集已知设备、计数等的集合。随后,钩挂函数根据虚拟鼠标设备接口38中的信息调整所返回的结果。例如,返回的结果提供了系统HID(人机接口设备)句柄和所有“虚拟鼠标”40的虚拟鼠标设备句柄的计数和列表。
RegisteredRawInputDevices)Hooked(已登记原始输入设备_钩挂)函数只调用本地RegisteredRawInputDevice方法,执行监视方法,并返回本地结果。所述监视方法的任务是检查原始输入API中的应用的登记以检测哪些应用窗口或线程队列正在请求鼠标事件信息。通知进程将使用此信息,以便以类似于原始输入控制方法的方式来将“虚拟鼠标”事件数据发送到适当窗口目标。在钩子注入进程中调用GetRegisteredRawInputDevices(获取已登记原始输入设备)方法来初始化通知状态。
RawInputNotifier(原始输入通知器)模块提供事件通知线程,其负责将“虚拟鼠标”事件数据传输给代表原始输入API48(其不感知“虚拟鼠标”)一方的应用。此模块还为公共消息队列函数提供钩子接入点以支持该进程。
GetMessage_Hooked(获取消息_钩挂)和PeekMessage_Hooked(查看消息_钩挂)函数拦截本地的GetMessage和PeekMessage函数。钩子方法首先调用本地函数来监视:在应用处理之前从Windows消息队列移除原始输入API的WM_INPUT消息。如果该消息将“虚拟鼠标”40(如当所述消息被RawInputNotifier发布到队列中时所给出的唯一被提供的原始输入句柄所指出的“虚拟鼠标”)作为目标,其发送将虚拟鼠标线程缓冲区中的下一个“虚拟鼠标”事件移除的信号。如果所述下一个事件是“老的”或已经被其他方法(即GetRawInputBuffer)处理过,则钩挂函数在GetMessage或PeekMessage函数上适当地循环,直到下一个事件变为有效。
通知线程被配置为当虚拟鼠标设备接口38调度“虚拟鼠标”事件时被唤醒。该线程收集任何挂起的事件,并通知应用。其可以为使用唯一的原始输入句柄的事件而调用PostMessage(发布消息)以插入WM_INPUT消息。应用随后将接收该消息并调用适当的原始输入方法以获取事件数据和其他细节。对于新到来或即将离开的“虚拟鼠标”,该通知方法还可以调用SendMessageTimeout(发送消息超时)来提供WM_INPUT_DEVICE_CHANGE通知,以及调用PostMessage来插入WM_INPUT_DEVICE_CHANGE消息。所述虚拟鼠标设备接口38根据需要被调用,以维护状态或执行挂起设备变化的最终的拆毁。最后,通知线程可以使用SendInput(发送输入)来改变Windows消息对列状态(其不可直接用于修改)以反映原始输入事件挂起状态。这使得任何等待队列状态的应用线程被唤醒。
VirtualMouse(虚拟鼠标)对象由唯一的DeviceHandle(设备句柄)和DeviceId(设备ID)来维护。这些DeviceHandle和DeviceId被选择为与已经由操作系统生成的其它设备的那些DeviceHandle和DeviceId不相互干扰,并且还被用来命名和识别对应于应用的特定鼠标。
可实现为虚拟鼠标设备接口38的VirtualDeviceManager(虚拟设备管理器)模块,提供用于虚拟鼠标对象的列表的存储空间。其通过唯一的设备句柄和外部虚拟鼠标设备识别符维持至虚拟鼠标对象的映射。鼠标事件(包含发布时的通知窗口、鼠标设备句柄、鼠标事件数据、到达/离开/数据状态等)保持在唯一地对应于特定的应用线程ID的MouseEventBuffers(鼠标事件缓冲区)中。所述缓冲区以及线程的映射处于VirtualDeviceManager中。传入的“虚拟鼠标”事件的通知消息被发布到应用,所述事件被存储在适当的MouseEventBuffer中。当应用处理通知消息时,这些缓冲区被访问以重新得到事件数据。
以下讨论图3的大体步骤(1-6)所示的本发明。
图3的上半部分示出了本发明所要解决的问题。交互式白板投影仪(IWP),即客户端投影仪10通过远程桌面协议(RDP)连接而连接到远程PC,即主计算机16。通过不具备本发明的解决方案的RDP连接,将多个投影仪输入设备(即电子白板笔28)的输入通过RDP而合并,从而系统(主计算机16)和运行于主计算机16上的应用只看到一个RDP鼠标。
本发明的解决方案包括三个主要组成部分。现在参照图2,第一部分采集IWP(客户端投影仪10)上的笔设备输入(即多笔输入获取模块26),并将它们作为鼠标事件(32)传送到PC主机(主计算机16)上的接收器(多笔输入接收器构件36)。第二部分管理接口(虚拟鼠标设备接口38),其维护虚拟鼠标池40及其对应鼠标输入数据的相关事件队列。第三部分对目标应用50所使用的原始输入API48方法进行钩挂(快速启动钩子注入器应用42将原始输入钩子处理器44注入到应用进程空间中),并将虚拟鼠标40及相关事件插入到所钩挂的方法结果中。
本发明首先将客户端投影仪10(IWP)和主计算机16(如膝上型电脑)连接到局域网12,并通过从客户端到主机的远程桌面连接46将它们互连。笔式输入设备28被监视或连接到客户端投影仪10,客户端投影仪10被配置来计数这些输入设备,并维护对应各个设备的唯一标识符的列表。通过使用适当的驱动程序、API或其他通知接口,在客户端的多笔输入获取模块26中获取所产生的事件以及输入设备。
本发明通过在必要时将笔事件转换成鼠标设备事件(经由多笔输入获取模块26),并将它们(即多笔输入事件32)通过网络发送到主计算机16来继续执行。所创建并连接于客户端和主机之间的远程桌面服务虚拟通道22是该数据的一条首选路径。由远程桌面服务通过远程桌面协议46自动地提供安全性和加密是有利的。
本发明在主计算机16上继续进行,在所述主计算机16处多笔输入接收器构件36接收多个笔设备的鼠标数据。主计算机16上所需的模块可以被预先安装,并先于来自客户端的远程桌面连接而启动,正如在2011年12月21日提交的,申请号为13/332,751的共同拥有的美国专利申请中所更详细地讨论的那样,该申请的全部内容通过引用被结合于此。此外,这些模块可以被下载或预安装和配置。可选地,接收器构件可以与用户所启动的钩挂构件结合。
所接收到的输入被传递到虚拟鼠标设备接口38,所述虚拟鼠标设备接口38将构建或撤消“虚拟鼠标”40以及信息队列,其通过用钩子处理器覆盖由主机应用50所使用的原始输入API48方法来进行处理。“虚拟鼠标”事件将被调度到任何原始输入钩子处理器44,并被添加到方法结果。因此,应用50接收包含来自“虚拟鼠标”的事件数据的API方法结果,就好像信息由连接到物理鼠标设备的操作系统鼠标驱动程序来提供一样。
当用户识别和启动应用50(其需要经过原始输入API48的一个或更多个鼠标输入)时,本发明继续进行。任选的GUI接口,如工具栏或类似的应用元素,可以被提供来启动应用或计数现有的应用。当提供将本发明的钩挂模块注入已启动的应用的信号时,本发明继续进行。作为应用启动进程中的步骤,该信号可以被任选的图形用户接口工具栏所提供,或者其可以在单独的动作期间发生。以上已经详细地描述了原始输入钩子处理器44的RawInputHooks模块。注入器(快速启动钩子注入器应用42)将所述钩挂模块(RawInputHooks)加载到目标应用的进程空间中,并开始执行。
钩挂模块定位所述原始输入API48方法,并建立钩子以通过钩挂模块所提供的替换实现来拦截原始输入方法的应用调用。然后,本发明通过允许正常的应用执行而继续进行。
钩挂模块创建线程以获取和监视从虚拟鼠标设备接口38传入的“虚拟鼠标”事件(包括设备的到达及离开)。根据建立已注册设备类别的应用原始输入调用、接收事件窗口等,相关消息被构造并插入到应用的Windows消息队列中。当应用50进行原始输入API调用时,他们被原始输入钩子处理器44中的钩子方法所拦截,所述原始输入钩子处理程序44激活本地的原始输入方法以接收操作系统(OS)结果,所述结果随后被修改为包括“虚拟鼠标”数据。
图3的下半部分示出了本发明的大体过程。一般情况下,在Microsoft操作系统上运行的应用有权使用几个API(应用编程接口),所述API可以为应用提供与每个被连接的鼠标及其输入有关的详细信息。主计算机16上运行的应用50如图左侧所示,本发明的原始输入钩子位于图中的右侧。在步骤1中,动态链接库(DLL)注入为由应用50加载的SDK(软件开发工具包)库中的原始输入方法安装本发明的原始输入钩子处理器44。在步骤2中,应用50调用原始输入API函数。在这个例子中,应用想激活GetRawInputDeviceListSDK方法以收集任何已连接的输入设备。步骤3中,原始输入钩子处理器44拦截原始输入API48函数调用的应用50调用对,并根据本发明将其重定向到钩子处理器方法。例如,在步骤3中,应当获得系统中所有的已注册HID(人机接口设备)的GetRawInputDeviceList钩挂版本被调用。在步骤4中,初始的本地原始输入SDK库方法被调用,操作系统(OS)返回两个设备,即远程桌面键盘54和鼠标设备56。在步骤5中,本发明的钩挂模块接着添加从虚拟鼠标接口38所感知的虚拟鼠标(即三个鼠标),并且在步骤6中,将修改后的方法的结果(即,共5个设备)返回到应用50。
本发明的上述方法步骤优选地由主计算机16和/或客户端投影仪10中的一个或更多个处理器执行,所述主计算机16和/或客户端投影仪10执行被存储或加载在主计算机16和/或客户端投影仪10的存储器中和/或在可访问的外部存储器中的计算机可执行指令、程序、软件、固件。图4是非常简化的框图,其大体示出了主计算机16和客户端投影仪10中的处理器和存储器。主计算机16处理器可包括,例如,中央处理单元(centralprocessingunit,CPU)161和一个或更多个图形处理单元(graphicalprocessingunits,GPU)162。内部存储器可以包括,例如,RAM163和ROM164。I/O接口165实现与例如键盘54、鼠标56和外部存储器166的通信。客户端投影仪10可以类似地包括CPU101、RAM102和ROM102。
各实施例可以用数字电子电路,或者在计算机硬件、固件、软件或它们的组合来实现。设备可以用在非瞬时性机器可读存储设备中有形地实施以便可编程处理器执行的计算机程序产品来实现;并且方法步骤可以通过可编程处理器执行程序指令以便通过对输入数据进行操作并且生成输出而执行功能来实现。有利地,实施例可以用在可编程系统中可执行的一个或更多个计算机程序来实现,所述可编程系统包括:至少一个可编程处理器,其被耦接来从数据存储系统接收数据和指令,以及传送数据和指令到数据存储系统;至少一个输入设备;以及至少一个输出设备。如果需要,各个计算机程序可以用高级程序语言或面向对象编程语言,或必要时用汇编语言或机器语言来实现;在任何情况下,所述语言可以是编译的或翻译的语言。适合的处理器包括例如通用和专用微处理器。一般来说,处理器从只读存储器和/或随机存取存储器中接收指令和数据。一般来说,计算机将包括用于存储数据文件的一个或更多个大容量存储设备;这样的设备包括磁盘(例如内置硬盘和可移动磁盘)、磁光盘和光盘。适合于有形地实施计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,包括例如半导体存储设备,如EPROM、EEPROM和闪存设备;磁盘,如内置硬盘和可移动磁盘;磁光盘;以及CD-ROM盘。上述任何一项可以补充或合并入ASIC(特定应用集成电路)。
虽然已结合几个特定实施例来描述了本发明,对于本领域技术人员来说明显的是,鉴于前面的描述许多其他的替代方案、修改和变形是显而易见的。例如,所提出的钩挂模块提供了将在操作系统中未安装或未配置的“虚拟鼠标”插入到所选择的应用中的方式。用于这些虚拟鼠标的事件数据不需要自远程桌面连接的客户端而到达。相反,在另一实施例中,远程桌面服务虚拟信道未被使用,并且鼠标事件数据自替代的网络连接而到达。例如,另一台计算机能够生成事件或与主机PC中的应用共享来自本地连接的鼠标的事件。以这种方式,远程桌面服务是与本方法独立和无关的可选构件。
在另一实施例中,没有使用网络连接,并且所述鼠标事件数据自运行于主机内的另一个应用而到达。此应用可以模拟真实的鼠标设备,提供额外的具有某种机制的可选鼠标以选择其中有效的一个,提供在某些其他类似鼠标的硬件设备之间的接口以将该数据转换为鼠标数据并发送到所钩挂的应用的虚拟鼠标设备接口,或者简单地根据示范脚本提供任意数量的输入事件。因此,本文所描述的发明的目的在于包括所有落入所附权利要求书的精神和范围内的替代方案,修改,应用以及变形。
Claims (10)
1.一种在客户端计算设备和主计算机之间的远程桌面会话中提供多个人机接口式输入指针设备的方法,所述客户端计算设备和所述主计算机通过网络来连接,该方法包括:
提供作为所述客户端计算设备的投影仪,所述投影仪是被配置成执行客户端侧的应用以建立与所述主计算机的远程桌面会话的客户端投影仪,所述客户端投影仪具有作为不同的投影仪输入指针设备的所述多个人机接口式输入指针设备,所述投影仪将不同的ID分配给各个投影仪输入指针设备、捕获由各个投影仪输入指针设备产生的原始输入数据并且将所述原始输入数据与各个投影仪输入指针设备的各自ID相关联;
提供所述主计算机,所述主计算机被配置成在与所述客户端投影仪的远程桌面会话中执行服务功能;
经由所述网络,建立所述客户端投影仪和所述主计算机之间的远程桌面会话,所述远程桌面会话建立与所述客户端投影仪的远程桌面通信信道,所述远程桌面通信信道的特征在于以下限定:
(a)所述主计算机将对在所述主计算机上运行的应用的控制传送至所述客户端投影仪,
(b)所述主计算机具有图形桌面,并且所述主计算机将其图形桌面作为所述远程桌面会话的一部分传送至所述客户端投影仪,以便所述客户端投影仪进行显示,
(c)在所述主计算机和所述客户端投影仪之间的远程桌面会话是所述主计算机和所述客户端投影仪之间的私密的一对一会话,并且所述图形桌面仅在所述远程桌面会话期间被传送至所述客户端投影仪,
(d)所述远程桌面会话针对所述客户端投影仪的仅单个输入指针设备来提供并且被配置成将经由所述远程桌面通信信道接收的任何远程桌面输入指针信号处理为单一输入指针设备,而不管所述远程桌面输入指针信号是否由多个不同的输入指针设备生成;
建立在所述主计算机与所述客户端投影仪之间的远程桌面服务虚拟信道;
其中所述客户端投影仪将所捕获的由各个投影仪输入指针设备生成的原始输入数据与各个投影仪输入指针设备的关联ID一起经由所述远程桌面服务虚拟信道发送至所述主计算机;
其中所述主计算机包括:多输入接收模块,所述多输入接收模块从所述客户端投影仪经由所述远程桌面服务虚拟信道来接收所述原始输入数据和关联ID;以及虚拟设备接口模块,其耦接至所述多输入接收模块,其中所述虚拟设备接口模块在不使用输入设备的情形下根据所接收的原始输入数据和关联ID来创建以及丢弃具有唯一的虚拟设备ID的虚拟输入指针设备;
拦截来自运行于所述主计算机上的应用对所述主计算机的操作系统的原始输入函数调用,所述原始输入函数调用需要连接至所述主计算机的各个硬件输入指针设备的操作系统供应的原始输入信息,所述操作系统供应的输入信息通过所述主计算机的操作系统来供应;
利用原始输入数据和各个虚拟输入指针设备的对应的虚拟ID来添加所述操作系统供应的输入信息,以使虚拟输入指针设备显现为似乎它们是在本地被连接至所述主计算机,同时保持所述客户端投影仪与所述主计算机之间的远程桌面会话的私密性;
将经添加的操作系统供应的输入信息作为对所述原始输入函数调用的响应的一部分来返回至所述应用。
2.如权利要求1所述的方法,其中,拦截原始输入函数调用包括使用钩子处理器处理函数调用。
3.如权利要求1所述的方法,其中,各个虚拟输入指针设备的信息均包括与每一个虚拟输入指针设备对应的模拟系统事件,所述模拟系统事件包括设备到达事件和设备移除事件。
4.如权利要求1所述的方法,其中,各个虚拟输入指针设备是用于命名和识别其对应的投影仪输入指针设备的虚拟设备对象。
5.如权利要求1所述的方法,其中,所述投影仪输入指针设备是电子白板笔。
6.一种在客户端投影仪和主计算机之间的远程桌面会话中提供多个人机接口式输入指针设备的系统,所述客户端投影仪和所述主计算机通过网络来连接,其中所述客户端投影仪具有作为不同的投影仪输入指针设备的所述多个人机接口式输入指针设备、将不同的ID分配给各个投影仪输入指针设备、捕获由各个投影仪输入指针设备生成的原始输入数据并且将所述原始输入数据与各个投影仪输入指针设备的各自的ID相关联,
所述系统包括:
在所述客户端投影仪中的处理器,其作为客户端投影仪处理器:
建立所述客户端投影仪和所述主计算机之间的远程桌面会话,其中所述远程桌面会话建立远程桌面通信信道,所述远程桌面通信信道的特征在于以下限定:
(a)所述主计算机将对在所述主计算机上运行的应用的控制传送至所述客户端投影仪,
(b)所述主计算机具有图形桌面,并且所述主计算机将其图形桌面作为所述远程桌面会话的一部分传送至所述客户端投影仪,以便所述客户端投影仪进行显示,
(c)在所述主计算机和所述客户端投影仪之间的远程桌面通信信道是私密的,即仅仅所述客户端投影仪能够访问由所述主计算机传送至所述客户端投影仪的所述图形桌面,并且
(d)所述远程桌面会话针对所述客户端投影仪的仅单个输入指针设备来提供并且被配置成将经由所述远程桌面通信信道接收的任何远程桌面输入指针信号处理为单一输入指针设备,而不管所述远程桌面输入指针信号是否由多个不同的输入指针设备生成;
建立在所述主计算机与所述客户端投影仪之间的远程桌面服务虚拟信道;
其中所述客户端投影仪将所捕获的由各个投影仪输入指针设备生成的原始输入数据与各个投影仪输入指针设备的关联ID一起经由所述远程桌面服务虚拟信道发送至所述主计算机;
其中所述主计算机包括:多输入接收模块,其从所述客户端投影仪经由所述远程桌面服务虚拟信道来接收原始输入数据和关联ID;以及虚拟设备接口模块,其耦接至所述多输入接收模块,其中所述虚拟设备接口模块在不使用输入设备的情形下根据所接收的原始输入数据和关联ID来创建以及丢弃具有唯一的虚拟设备ID的虚拟输入指针设备;
在所述主计算机中的处理器,其作为主计算机处理器:
拦截来自运行于所述主计算机上的应用对所述主计算机的操作系统的原始输入函数调用,所述原始输入函数调用需要连接至所述主计算机的各个硬件输入指针设备的操作系统供应的原始输入信息,所述操作系统供应的输入信息通过所述主计算机的操作系统来供应;
利用原始输入数据和各个虚拟输入指针设备的对应的虚拟ID来添加所述操作系统供应的输入信息,以使虚拟输入指针设备显现为似乎它们是在本地被连接至所述主计算机,同时保持所述客户端投影仪与所述主计算机之间的远程桌面会话的私密性;
将经添加的操作系统供应的输入信息作为对所述原始输入函数调用的响应的一部分来返回至所述应用。
7.如权利要求6所述的系统,其中,所述主计算机处理器通过使用钩子处理器处理函数调用来对函数调用进行拦截。
8.如权利要求6所述的系统,其中,所述主计算机处理器或所述客户端投影仪处理器模拟各个虚拟设备的包括设备到达和设备移除事件的系统事件。
9.如权利要求6所述的系统,其中,所述主计算机处理器或所述客户端投影仪处理器维护用于命名和识别各个投影仪输入指针设备的虚拟设备对象。
10.如权利要求6所述的系统,其中,所述投影仪输入指针设备是电子白板笔。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/396,936 US8788950B2 (en) | 2012-02-15 | 2012-02-15 | Method for providing multiple mouse inputs in a remote desktop session |
US13/396,936 | 2012-02-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294172A CN103294172A (zh) | 2013-09-11 |
CN103294172B true CN103294172B (zh) | 2016-03-02 |
Family
ID=48946702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310003846.6A Active CN103294172B (zh) | 2012-02-15 | 2013-01-06 | 在远程桌面会话中提供多个鼠标输入的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8788950B2 (zh) |
JP (1) | JP6083244B2 (zh) |
CN (1) | CN103294172B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4692529B2 (ja) * | 2007-08-07 | 2011-06-01 | セイコーエプソン株式会社 | グラフィカルユーザインタフェース装置 |
CN103135879B (zh) * | 2011-11-28 | 2016-07-06 | 联想(北京)有限公司 | 显示方法、显示装置和电子设备 |
WO2014137324A1 (en) * | 2013-03-05 | 2014-09-12 | Mcafee, Inc. | Execution profile assembly using branch records |
US9063631B2 (en) | 2013-03-15 | 2015-06-23 | Chad Dustin TILLMAN | System and method for cooperative sharing of resources of an environment |
US9635091B1 (en) * | 2013-09-09 | 2017-04-25 | Chad Dustin TILLMAN | User interaction with desktop environment |
US9197644B1 (en) * | 2014-01-30 | 2015-11-24 | Dell Software Inc. | System and method for multitenant management of domains |
JP6269227B2 (ja) | 2014-03-25 | 2018-01-31 | セイコーエプソン株式会社 | 表示装置、プロジェクター、および表示制御方法 |
CN104050013B (zh) * | 2014-05-22 | 2018-08-10 | 中兴通讯股份有限公司 | 虚拟桌面处理方法、装置及虚拟桌面服务器 |
US20160036873A1 (en) * | 2014-08-01 | 2016-02-04 | Smart Technologies Ulc | Custom input routing using messaging channel of a ucc system |
JP6451225B2 (ja) | 2014-11-06 | 2019-01-16 | セイコーエプソン株式会社 | 表示装置、プロジェクターおよび表示制御方法 |
JP6458564B2 (ja) * | 2015-03-10 | 2019-01-30 | セイコーエプソン株式会社 | 表示装置及び表示装置の制御方法 |
US10698505B2 (en) | 2016-01-13 | 2020-06-30 | Hewlett-Packard Development Company, L.P. | Executing multiple pen inputs |
US11778034B2 (en) * | 2016-01-15 | 2023-10-03 | Avaya Management L.P. | Embedded collaboration with an application executing on a user system |
US10375130B2 (en) * | 2016-12-19 | 2019-08-06 | Ricoh Company, Ltd. | Approach for accessing third-party content collaboration services on interactive whiteboard appliances by an application using a wrapper application program interface |
US10298635B2 (en) * | 2016-12-19 | 2019-05-21 | Ricoh Company, Ltd. | Approach for accessing third-party content collaboration services on interactive whiteboard appliances using a wrapper application program interface |
US10235161B2 (en) * | 2017-02-06 | 2019-03-19 | American Megatrends, Inc. | Techniques of adding security patches to embedded systems |
CN108255916A (zh) * | 2017-09-14 | 2018-07-06 | 广州市动景计算机科技有限公司 | 网页页面呈现的方法、设备、客户端装置和电子设备 |
US20210110646A1 (en) * | 2019-10-11 | 2021-04-15 | Citrix Systems, Inc. | Systems and methods of geolocating augmented reality consoles |
CN112274916A (zh) * | 2020-11-20 | 2021-01-29 | 杭州雾联科技有限公司 | 一种键鼠输入方法、装置、设备及介质 |
WO2023097612A1 (zh) * | 2021-12-02 | 2023-06-08 | 广州视臻信息科技有限公司 | 交互实现方法、装置、交互平板及存储介质 |
CN114374712B (zh) * | 2021-12-14 | 2024-03-22 | 青岛海信微联信号有限公司 | 行车管理方法、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1878176A (zh) * | 2005-06-09 | 2006-12-13 | 株式会社日立制作所 | 设备管理系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3422897B2 (ja) * | 1996-05-17 | 2003-06-30 | 株式会社テクノクラフト | 文字列抽出システム及び文字列抽出方法 |
US7222305B2 (en) * | 2003-03-13 | 2007-05-22 | Oracle International Corp. | Method of sharing a desktop with attendees of a real-time collaboration |
GB2402756A (en) | 2003-06-09 | 2004-12-15 | Appliance Studio Ltd | Collaboration system |
JP2005181404A (ja) * | 2003-12-16 | 2005-07-07 | Nec Viewtechnology Ltd | 複数画像表示可能な画像投射制御装置 |
US8069226B2 (en) * | 2004-09-30 | 2011-11-29 | Citrix Systems, Inc. | System and method for data synchronization over a network using a presentation level protocol |
JP2006163760A (ja) * | 2004-12-07 | 2006-06-22 | Canon Inc | 描画システム |
JP4900889B2 (ja) * | 2005-01-21 | 2012-03-21 | キヤノン株式会社 | 情報処理装置及びその制御方法とプログラム |
US7600024B2 (en) * | 2006-03-31 | 2009-10-06 | Microsoft Corporation | Restricting device access per session |
US7712041B2 (en) * | 2006-06-20 | 2010-05-04 | Microsoft Corporation | Multi-user multi-input desktop workspaces and applications |
US8411053B2 (en) | 2008-12-18 | 2013-04-02 | Einstruction Corporation | Dual pen interactive whiteboard system |
EP2226704B1 (en) * | 2009-03-02 | 2012-05-16 | Anoto AB | A digital pen |
US20100273130A1 (en) * | 2009-04-22 | 2010-10-28 | Integrated Digital Technologies, Inc. | Shooting training systems using an embedded photo sensing panel |
US10146566B2 (en) * | 2009-12-21 | 2018-12-04 | Microsoft Technology Licensing, Llc | Enabling virtual desktop connections to remote clients |
US20130047095A1 (en) * | 2010-02-08 | 2013-02-21 | Oscar Divorra Escoda | Cloud desktop system with multi-touch capabilities |
US8555409B2 (en) * | 2011-11-02 | 2013-10-08 | Wyse Technolgoy Inc. | System and method for providing private session-based access to a redirected USB device or local device |
US20130125009A1 (en) * | 2011-11-16 | 2013-05-16 | International Business Machines Corporation | Remote desktop localized content sharing |
-
2012
- 2012-02-15 US US13/396,936 patent/US8788950B2/en active Active
-
2013
- 2013-01-06 CN CN201310003846.6A patent/CN103294172B/zh active Active
- 2013-02-01 JP JP2013018175A patent/JP6083244B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1878176A (zh) * | 2005-06-09 | 2006-12-13 | 株式会社日立制作所 | 设备管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103294172A (zh) | 2013-09-11 |
US8788950B2 (en) | 2014-07-22 |
US20130212489A1 (en) | 2013-08-15 |
JP6083244B2 (ja) | 2017-02-22 |
JP2013168142A (ja) | 2013-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103294172B (zh) | 在远程桌面会话中提供多个鼠标输入的方法 | |
US11164280B2 (en) | Graphics layer processing in a multiple operating systems framework | |
CN104536802B (zh) | 一种实现应用调用的方法及虚拟机 | |
US11218842B2 (en) | Method for activating service based on user scenario perception, terminal device, and system | |
US9354776B1 (en) | Applied client-side service integrations in distributed web systems | |
US8640034B2 (en) | Remote GUI control by replication of local interactions | |
CN102789382B (zh) | 用于表单生成和运行的系统及方法 | |
US20130047147A1 (en) | Virtual Machine Asynchronous Patch Management | |
CN111913794A (zh) | 用于共用gpu的方法、装置、电子设备及可读存储介质 | |
US10402216B1 (en) | Live support integration in a virtual machine based development environment | |
US20140032699A1 (en) | Remote user interface in a terminal server environment | |
JP2013145572A (ja) | イベント管理用のシステムおよび方法 | |
US10924590B1 (en) | Virtual workspace experience visualization and optimization | |
US20100077090A1 (en) | Fast switching between multiple user sessions | |
US9929969B1 (en) | Tenant-based management system and method for distributed computing environments | |
CN109716735A (zh) | 用于在于一个或多个应用平台上执行的隔离的应用之间共享应用数据的系统和方法 | |
JP2022511164A (ja) | ロボットブラウザ埋め込み | |
CN103812982B (zh) | 一种跨操作系统实现计算机监控测试手机客户端的方法和系统 | |
CN109921916B (zh) | 多人群组中的消息处理方法、装置、存储介质及终端设备 | |
CN111694604A (zh) | 一种驱动批量安装方法、装置、设备及机器可读存储介质 | |
US20230421489A1 (en) | Discovery and routing service for a cloud infrastructure | |
JP2013186794A (ja) | 情報処理装置及びクライアント管理方法 | |
CN110908675A (zh) | 运行环境获取方法、装置和电子设备 | |
CN113726902B (zh) | 微服务的调用方法、系统、服务器、设备和存储介质 | |
US9705814B2 (en) | Network appliance mapping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |