一种虚拟化应用截图方法、装置、服务器及可读存储介质与流程

文档序号:21176238发布日期:2020-06-20 17:29阅读:140来源:国知局
一种虚拟化应用截图方法、装置、服务器及可读存储介质与流程

本申请涉及应用程序虚拟化技术领域,特别涉及一种虚拟化应用截图方法、装置、服务器及可读存储介质。



背景技术:

应用程序虚拟化(applicationvirtualization),是日益发展的虚拟化家族中的最新成员。它是一种对软件进行管理的新方式,打破应用程序、操作系统和托管操作系统的硬件之间的联系。

为了实现企业内部文件流转的监控,并且实现流转统一出入口,利用应用程序虚拟化技术,把企业需要用到的内部通信软件构建为客户端上的虚拟化应用,比如foxmail等邮件软件、rtx(realtimeexchange)和钉钉企业版等im(即时通讯)类通信软件,以及其他带有截图功能的软件。这些虚拟化应用实际上并未安装在客户端本地,而是采用远程应用的方式在远端服务器上进行发布并运行。

在用户在此类带有截图功能的虚拟化应用上使用其截图功能时,由于这些应用是发布并运行在远端服务器上,就会导致截图操作是在服务器的整个工作桌面下进行,而用户实际上却是想在客户端的整个工作桌面下进行截图,与用户实际需求相悖,为实现用户本意还需要再进行复杂的切换步骤,十分不便。

因此,如何克服上述现有技术缺陷,是本领域技术人员亟待解决的问题。



技术实现要素:

本申请的目的是提供一种虚拟化应用截图方法、装置、服务器及可读存储介质,旨在解决在虚拟化应用上使用截图功能时会错误的在服务器整个工作桌面下进行截图,进而导致产生的一系列问题。

为实现上述目的,本申请提供了一种应用于服务端的虚拟化应用截图方法,包括:

接收虚拟化应用程序的截图触发信号;

根据所述截图触发信号将截图操作重定向至客户端,并控制所述客户端调用本地截图工具执行截图操作,并将得到的目标截图返回至所述服务端;

将接收到的目标截图作为填充内容填充至由所述服务端创建的服务端全屏窗口。

可选的,根据所述截图触发信号将截图操作重定向至客户端,包括:

根据所述截图触发信号创建所述服务端全屏窗口;

将所述截图触发信号以可被所述客户端识别为截图操作的客户端截图信号下发给所述客户端。

可选的,所述客户端调用本地截图工具执行截图操作,并将得到的目标截图返回至所述服务端,包括:

所述客户端根据接收到的客户端截图信号,调用所述本地截图工具;

所述客户端通过所述本地截图工具获取所述客户端的桌面窗口句柄,并根据所述桌面窗口句柄获取客户端桌面截图;

所述客户端通过所述本地截图工具创建客户端全屏窗口;

所述客户端通过所述本地截图工具将所述客户端桌面截图填充进所述客户端全屏窗口,并按照截图参数调整截图尺寸,得到所述目标截图。

可选的,将所述截图触发信号以可被所述客户端识别为截图操作的客户端截图信号下发给所述客户端,包括:

分别获取所述服务端和所述客户端的操作系统;

判断所述客户端与所述服务端的操作系统是否一致;

若一致,则直接将所述截图触发信号转发给所述客户端;

若不一致,则将所述截图触发信号转换为与所述客户端的操作系统对应的信号,将得到的客户端截图信号下发给所述客户端。

可选的,在接收虚拟化应用程序的截图触发信号之前,还包括:

预先向所述服务端注入截图重定向dll;

利用所述截图重定向dll监测所述虚拟化应用是否被触发截图操作;

对应的,根据所述截图触发信号将截图操作重定向至客户端,包括:

通过所述截图重定向dll将所述截图操作重定向至所述客户端;

对应的,将接收到的目标截图作为填充内容填充至由所述服务端创建的服务端全屏窗口,包括:

通过所述截图重定向dll将所述目标截图作为填充内容填充至所述服务端全屏窗口。

可选的,在将得到的目标截图返回至所述服务端之前,还包括:

所述客户端存储所述目标截图的备份在客户端本地。

为实现上述目的,本申请还提供了一种虚拟化应用截图装置,应用于服务端,包括:

截图触发信号接收单元,用于接收虚拟化应用程序的截图触发信号;

截图操作重定向单元,用于根据所述截图触发信号将截图操作重定向至客户端,并控制所述客户端调用本地截图工具执行截图操作,并将得到的目标截图返回至所述服务端;

目标截图填充单元,用于将接收到的目标截图作为填充内容填充至由所述服务端创建的服务端全屏窗口。

可选的,所述截图操作重定向单元,包括:

服务端全屏窗口创建子单元,用于根据所述截图触发信号创建所述服务端全屏窗口;

客户端截图信号下发子单元,用于将所述截图触发信号以可被所述客户端识别为截图操作的客户端截图信号下发给所述客户端。

可选的,所述客户端截图信号下发子单元,包括:

操作系统获取模块,用于分别获取所述服务端和所述客户端的操作系统;

一致性判断模块,用于判断所述客户端与所述服务端的操作系统是否一致;

信号直接转发模块,用于在所述客户端与所述服务端的操作系统一致的情况下,直接将所述截图触发信号转发给所述客户端;

信号转发发送模块,用于在所述客户端与所述服务端的操作系统不一致的情况下,将所述截图触发信号转换为与所述客户端的操作系统对应的信号,将得到的客户端截图信号下发给所述客户端。

可选的,该虚拟化应用截图装置还包括:

dll注入单元,用于在接收虚拟化应用程序的截图触发信号之前,预先向所述服务端注入截图重定向dll;

dll监测单元,用于利用所述截图重定向dll监测所述虚拟化应用是否被触发截图操作;

对应的,所述截图操作重定向单元包括:

重定向dll控制子单元,用于通过所述截图重定向dll将所述截图操作重定向至所述客户端;

对应的,所述目标截图填充单元包括:

填充dll控制子单元,用于通过所述截图重定向dll将所述目标截图作为填充内容填充至所述服务端全屏窗口。

可选的,该虚拟化应用截图装置,还包括:

在将得到的目标截图返回至所述服务端之前,所述客户端存储所述目标截图的备份在客户端本地。

为实现上述目的,本申请还提供了一种服务器,包括:

存储器,用于存储虚拟化应用截图程序;

处理器,用于在执行所述虚拟化应用截图程序时实现如上述内容所描述的虚拟化应用截图方法的各步骤。

为实现上述目的,本申请还提供了一种可读存储介质,所述可读存储介质上存储有虚拟化应用截图程序,所述虚拟化应用截图程序在被处理器执行时实现如上述内容所描述的虚拟化应用截图方法的各步骤。

本申请提供的虚拟化应用截图方法包括:接收虚拟化应用程序的截图触发信号;根据所述截图触发信号将截图操作重定向至客户端,并控制所述客户端调用本地截图工具执行截图操作,并将得到的目标截图返回至所述服务端;将接收到的目标截图作为填充内容填充至由所述服务端创建的服务端全屏窗口。

根据本申请提供的虚拟化应用截图方法可以看出,在虚拟化应用程序的截图功能被客户端用户触发时,直接将截图操作重定向至客户端,即让原先应由服务端执行的截图操作完全让客户端利用其本地截图工具完成,最后再将截图完成的目标截图返回至服务端创建的全屏窗口进行填充即可,实现了让客户端用户可以直接在服务端全屏窗口中看到正确的桌面截图的目的,而且最大化利用了客户端本地的运算资源,将整个截图过程都放在了客户端本地执行,得以尽可能的降低了中间延迟。本申请同时还提供了一种虚拟化应用截图装置、服务器及可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的一种虚拟化应用截图方法的流程图;

图2为本申请实施例提供的虚拟化应用截图方法中一种截图操作重定向的方法的流程图;

图3为本申请实施例提供的虚拟化应用截图方法中一种客户端得到目标截图的方法的流程图;

图4为本申请实施例提供的虚拟化应用截图方法中一种向客户端下发客户端截图信号的方法的流程图;

图5为本申请实施例提供的一种虚拟化应用截图方法的时序图;

图6为本申请实施例提供的一种虚拟化应用截图装置的结构框图。

具体实施方式

本申请的目的是提供一种虚拟化应用截图方法、装置、服务器及可读存储介质,旨在解决在虚拟化应用上使用截图功能时会错误的在服务器整个工作桌面下进行截图,进而导致产生的一系列问题。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

请参见图1,图1为本申请实施例提供的一种虚拟化应用截图方法的流程图,其包括以下步骤,下述各步骤的执行主体均为服务端,即采用应用程序虚拟化技术得到的虚拟化应用的实际运行环境:

s101:接收虚拟化应用程序的截图触发信号;

本步骤旨在由服务端接收到用户通过其客户端传入的虚拟化应用的截图触发信号。其中,该截图触发信号对应于用户调用该虚拟化应用的截图功能,即在用户想要使用该虚拟化应用的截图功能时,可能会点选、快捷键、命令行等方式试图激活其截图功能,该截图触发信号则用户对外表征用户的这一动作,以用于告知开启截图操作的诸如步骤。

正如背景技术所描述的那样,正常情况的在服务端接收到该截图触发信号后,其后续操作将以其认为的本地桌面(即服务端工作桌面)作为原始的桌面截图呈现给用户。即虚拟化应用实现截图的操作原理为:虚拟化应用的截图按钮被点选,虚拟化应用会先获取其所在端本地的桌面窗口句柄,并把桌面窗口句柄代表的dc内存内容(即整个工作桌面的截图)保存下来,虚拟化应用创建一个全屏窗口,此全屏窗口的内容用保存的桌面dc内存内容(即整个工作桌面的截图)填充,此时用户看到的内容和桌面的内容一样,其实看到的是软件创建的全屏窗口内容,然后在虚拟化应用创建的全屏窗口上进行后续的截图操作。

根据上述对常规虚拟化应用截图过程的说明可知,为实现本申请目的,就必须改变常规的截图流程,即核心点应由服务端整个工作桌面的截图变更为客户端整个工作桌面的截图,后续截图操作才能够得以在正确的客户端桌面截图上进行。因此,就需要监测当前的虚拟化应用截图流程进行到了哪一步,好及时更改后续流程所使用的截图,最终实现本申请的目的。

具体的,该监测手段可通过多种方式实现,例如在客户端或服务端植入监测插件,也可以通过诸如dll(dynamiclinklibrary,动态链接库,是一个包含可由多个程序,同时使用的代码和数据的库)注入的方式增加相应的监测功能等等,进一步的,在监测到符合预设情况的场景出现时,还可以通过赋予插件或dll权限的方式让其能够改变后续截图操作,最终实现本申请的目的。

以采用dll注入的方式为例,可以具体选用预先将用于dll注入至服务端的方式来实现,可包括如下步骤:

预先向服务端注入截图重定向dll;

利用截图重定向dll监测虚拟化应用是否被触发截图操作。

监测插件的植入和使用方式大体与dll相同,只需要基于插件表现形式与dll的不同做适应性调整,此处不再赘述。本实施例的后续步骤中由服务端执行的部分也将在截图重定向dll的控制下完成。

s102:根据截图触发信号将截图操作重定向至客户端,并控制客户端调用本地截图工具执行截图操作,并将得到的目标截图返回至服务端;

在s101的基础上,本步骤旨在由服务端采用截图操作重定向的方式,将截图操作重定向至客户端,即基本上由客户端本地的截图工具来完成截图操作,从而避免产生由服务端执行截图操作导致的截取服务端整个工作桌面作为桌面截图的错误出现。

一种包括但不限于的实现方式可参见如图2所示的流程图,包括:

s201:根据截图触发信号创建服务端全屏窗口;

其中,服务端全屏窗口是由服务端创建的用于向用户展示截图最终效果的全屏窗口,之所以在整个截图工作都交给客户端来完成的情况下,仍需要服务端创建其全屏窗口,是因为归根结底被触发截图功能为实际运行在服务端的虚拟化应用,为了尽可能的避免对用户使用习惯的影响,最终通常还是需要在服务端创建的全屏窗口对目标截图的内容向用户展示。

s202:将截图触发信号以可被客户端识别为截图操作的客户端截图信号下发给客户端。

由于考虑到需要将截图操作重定向至客户端,那么也就需要客户端能够识别服务端发来的截图操作信号,并执行正确的操作。考虑到客户端和服务端之间的差异,因此本申请将截图触发信号以可被客户端识别为截图操作的客户端截图信号下发给客户端。

一种包括但不限于的实现方式可参见如图3所示的流程图:

s301:分别获取服务端和客户端的操作系统;

s302:判断客户端与服务端的操作系统是否一致,若一致,执行s303,否则执行s304;

s301和s302旨在通过服务端和客户端的操作系统来判断截图触发信号是否需要转换,当然,在一些其它实施例中,该判据还可以调整为该服务端上的虚拟应用程序与客户端本地截图工具的调用指令和方式是否相同,以用来判定信号是否转换。

s303:直接将截图触发信号转发给客户端;

本步骤建立在s302的判断结果为客户端与服务端的操作系统一致的基础上,因此在操作系统一致就可以认为信号不需要经过转换的情况下,可以直接将该截图触发信号转发给客户端,就能够实现截图操作的重定向。

s304:将截图触发信号转换为与客户端的操作系统对应的信号,将得到的客户端截图信号下发给客户端。

本步骤建立在s302的判断结果为客户端与服务端的操作系统不一致的基础上,因此在操作系统不一致就可以认为信号需要经过转换的情况下,就需要将该截图触发信号在转换为与客户端的操作系统对应的信号之后,才能发给客户端,实现截图操作的重定向。

进一步的,在将得到的目标截图返回至所述服务端之前,客户端还可以存储目标截图的备份在客户端本地,以便于后续直接在客户端本地的快速取用。

s103:将接收到的目标截图作为填充内容填充至由服务端创建的服务端全屏窗口。

在s102的基础上,本步骤由服务端将接收到的目标截图作为填充内容填充至由服务端创建的服务端全屏窗口,以通过服务端全屏窗口向用户展示其截图结果。

应当理解的是,正如上面对图2所示流程图内容的描述,将目标截图返回至服务端,并由服务端将该目标截图作为填充内容填充至服务端全屏窗口的方式是为了对应符合用户的使用习惯,如果在不考虑这一问题的情况下,还可以直接将展示有目标截图图像内容的客户端全屏窗口作为最终步骤,即将全部的截图操作都交由客户端来做,完全不需要服务端参与。选择哪种应根据实际应用场景下所有可能存在的特殊要求灵活进行,此处不做具体限定。

根据本申请提供的虚拟化应用截图方法可以看出,在虚拟化应用程序的截图功能被客户端用户触发时,直接将截图操作重定向至客户端,即让原先应由服务端执行的截图操作完全让客户端利用其本地截图工具完成,最后再将截图完成的目标截图返回至服务端创建的全屏窗口进行填充即可,实现了让客户端用户可以直接在服务端全屏窗口中看到正确的桌面截图的目的,而且最大化利用了客户端本地的运算资源,将整个截图过程都放在了客户端本地执行,得以尽可能的降低了中间延迟。

由于本申请方案实际上涉及客户端与服务端,上述实施例内容仅站在服务端来描述整个方案,为便于理解,本申请还提供了如图4所示的时序图,对应于如图1所示的仅站在服务端角度描述整个流程:

1、客户端用户在触发实际运行在服务端的虚拟化应用的截图功能时,由客户端向服务端发送截图触发信号;

2、服务端根据接收到的截图触发信号将截图操作重定向给客户端;

3、客户端调用本地截图工具执行截图操作,得到目标截图;

4、客户端将目标截图发送给服务端;

5、服务端将接收到的目标截图作为填充内容填充至由服务端全屏窗口。

通过上述实施例内容对整体方案的描述,可以看出本申请将整个截图流程的几乎全部都重定向给了客户端,服务端直接获取了客户端最终得到的目标截图,为方便理解在此过程中客户端的处理过程,本申请还通过如图4所示流程图提供了一种包括但不限于的实现方案,包括如下步骤,下述各步骤的执行主体均为客户端:

s401:根据接收到的客户端截图信号,调用本地截图工具;

即客户端根据接收到的客户端截图信号,确定自己要执行截图操作,并将其作为触发信号调用本地截图工具,开始准备执行截图操作。

s402:通过本地截图工具获取客户端的桌面窗口句柄,并根据桌面窗口句柄获取客户端桌面截图;

句柄是一种特殊的智能指针,当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。本步骤所说的桌面窗口句柄即对应与客户端的整个工作桌面。

s403:通过本地截图工具创建客户端全屏窗口;

s404:通过本地截图工具将客户端桌面截图填充进客户端全屏窗口,并按照截图参数调整截图尺寸,得到目标截图。

s403和s403提供了一种先创建客户端全屏窗口,再在客户端全屏窗口内完成对客户端桌面截图的调整,最终得到目标截图的方案。应当理解的是,创建客户端全屏窗口的目的是为了能够让用户在正确的窗口范围内对窗口内填充的原始客户端桌面截图进行处理,以最终得到用户想要的目标截图。

在本申请的一些实施例中,目标截图的发送可以由客户端直接将目标截图作为内容发送给服务端来实现,也可以通过由客户端向服务端发送该目标截图的存储路径给服务端,以使服务端通过该存储路径主动拉取该目标截图的方式来实现,也可以采用其它的一些相同或类似的方式来实现,此处不做具体限定。

为加深对本申请方案的理解,本申请还具体以注入dll为例,结合具体执行细节,给出了一种更为具体的实现方案和过程:

1、用户通过其客户端使用虚拟化应用(实际运行在服务端上)时,点击该虚拟化应用界面上的截图按钮或者按下截图对应的快捷键触发截图功能;

2、注入到服务端该虚拟化应用中的dll会监控到截图功能的触发;

3、dll此时会在虚拟化应用完成服务端全屏窗口之后卡主当前线程,并把截图操作行为通知客户端,客户端接收到服务器端的截图通知;

4、客户端启动一个自己的本地截图工具,首先创建一个客户端全屏窗口,并通过客户端的桌面窗口句柄获取客户端桌面截图,使用客户端桌面截图填充该客户端全屏窗口;

5、用户在客户端全屏窗口展示的原始截图上按自身需求进行截图内容调整,得到目标截图,并将目标截图的内容存入到服务端全屏窗口。

因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。

下面请参见图6,图6为本申请实施例提供的一种虚拟化应用截图装置的结构框图,该装置可以包括:

截图触发信号接收单元100,用于接收虚拟化应用程序的截图触发信号;

截图操作重定向单元200,用于根据截图触发信号将截图操作重定向至客户端,并控制所述客户端调用本地截图工具执行截图操作,并将得到的目标截图返回至服务端;

目标截图填充单元300,用于将接收到的目标截图作为填充内容填充至由服务端创建的服务端全屏窗口。

其中,该截图操作重定向单元200可以包括:

服务端全屏窗口创建子单元,用于根据截图触发信号创建服务端全屏窗口;

客户端截图信号下发子单元,用于将截图触发信号以可被客户端识别为截图操作的客户端截图信号下发给客户端。

其中,该客户端截图信号下发子单元可以包括:

操作系统获取模块,用于分别获取服务端和客户端的操作系统;

一致性判断模块,用于判断客户端与服务端的操作系统是否一致;

信号直接转发模块,用于在客户端与服务端的操作系统一致的情况下,直接将截图触发信号转发给客户端;

信号转发发送模块,用于在客户端与服务端的操作系统不一致的情况下,将截图触发信号转换为与客户端的操作系统对应的信号,将得到的客户端截图信号下发给客户端。

进一步的,该虚拟化应用截图装置还包括:

dll注入单元,用于在接收虚拟化应用程序的截图触发信号之前,预先向服务端注入截图重定向dll;

dll监测单元,用于利用截图重定向dll监测虚拟化应用是否被触发截图操作;

对应的,截图操作重定向单元包括:

重定向dll控制子单元,用于通过截图重定向dll将截图操作重定向至客户端;

对应的,目标截图填充单元包括:

填充dll控制子单元,用于通过截图重定向dll将目标截图作为填充内容填充至服务端全屏窗口。

进一步的,该虚拟化应用截图装置还可以包括:

在将得到的目标截图返回至服务端之前,客户端存储目标截图的备份在客户端本地。

作为对应于上述方法实施例的装置实施例存在,本实施例所提供的各功能单元在虚拟化应用程序的截图功能被客户端用户触发时,直接将截图操作重定向至客户端,即让原先应由服务端执行的截图操作完全让客户端利用其本地截图工具完成,最后再将截图完成的目标截图返回至服务端创建的全屏窗口进行填充即可,实现了让客户端用户可以直接在服务端全屏窗口中看到正确的桌面截图的目的,而且最大化利用了客户端本地的运算资源,将整个截图过程都放在了客户端本地执行,得以尽可能的降低了中间延迟

基于上述实施例,本申请还提供了一种服务器,该服务器可以包括存储器和处理器,其中,该存储器中存有具体为虚拟化应用截图程序的计算机程序,该处理器调用该存储器中的虚拟化应用截图程序时,可以实现上述实施例对虚拟化应用截图方法描述的各步骤。当然,该服务器还可以包括各种必要的网络接口、电源以及其它零部件等。

本申请还提供了一种可读存储介质,其上存有具体为虚拟化应用截图程序的计算机程序,该虚拟化应用截图程序被执行终端或处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1