发明内容
有鉴于此,本申请实施例提供了一种基于钩子技术的应用调用方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种基于钩子技术的应用调用方法,应用于服务器,包括:
在运行基础应用的情况下,接收客户端的用户操作信息;
当所述用户操作信息为调用第三方应用的情况下,将所述用户操作信息转换为第三方应用的应用调用请求;
根据所述应用调用请求生成对应的应用调用信息;
使用钩子技术截获所述应用调用信息;
将所述应用调用信息传输至客户端,以使客户端调用客户端的第三方应用。
可选的,所述服务器包括预设的与所述基础应用对应的软件工具开发包;
将所述用户操作信息转换为第三方应用的应用调用请求,包括:
根据所述用户操作信息和所述软件工具开发包,获取与所述用户操作信息对应的调用第三方应用的应用调用请求。
可选的,在使用钩子技术截获所述应用调用信息之后,还包括:
将所述应用调用信息传输至所述软件工具开发包中。
可选的,将所述应用调用信息传输至客户端,包括:
通过所述软件工具开发包将所述应用调用信息传输至客户端。
可选的,在使用钩子技术截获所述应用调用信息之后,还包括:
生成与所述应用调用信息对应的第三方应用的虚拟调用指令;
根据所述虚拟调用指令模拟调用本地的第三方应用。
可选的,所述基础应用包括云游戏;
在运行基础应用的情况下,接收客户端的用户操作信息,包括:
在运行云游戏的情况下,接收客户端的用户操作信息。
根据本申请实施例的第二方面,提供了一种基于钩子技术的应用调用装置,应用于服务器,包括:
接收模块,被配置为在运行基础应用的情况下,接收客户端的用户操作信息;
转换模块,被配置为当所述用户操作信息为调用第三方应用的情况下,将所述用户操作信息转换为第三方应用的应用调用请求;
生成模块,被配置为根据所述应用调用请求生成对应的应用调用信息;
截获模块,被配置为使用钩子技术截获所述应用调用信息;
传输模块,被配置为将所述应用调用信息传输至客户端,以使客户端调用客户端的第三方应用。
可选的,所述服务器包括预设的与所述基础应用对应的软件工具开发包;
所述转换模块,进一步被配置为根据所述用户操作信息和所述软件工具开发包,获取与所述用户操作信息对应的调用第三方应用的应用调用请求。
可选的,所述基于钩子技术的应用调用装置还包括:
输入模块,被配置为将所述应用调用信息传输至所述软件工具开发包中。
可选的,所述传输模块,进一步被配置为通过所述软件工具开发包将所述应用调用信息传输至客户端。
可选的,所述基于钩子技术的应用调用装置还包括:
生成模块,被配置为生成与所述应用调用信息对应的第三方应用的虚拟调用指令;
虚拟调用模块,被配置为根据所述虚拟调用指令模拟调用本地的第三方应用。
可选的,所述基础应用包括云游戏;
所述接收模块,进一步被配置为在运行云游戏的情况下,接收客户端的用户操作信息。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述基于钩子技术的应用调用方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述基于钩子技术的应用调用方法的步骤。
本申请实施例中,通过在运行基础应用的情况下,接收客户端的用户操作信息;当所述用户操作信息为调用第三方应用的情况下,将所述用户操作信息转换为第三方应用的应用调用请求;根据所述应用调用请求生成对应的应用调用信息;使用钩子技术截获所述应用调用信息;将所述应用调用信息传输至客户端,以使客户端调用客户端的第三方应用。通过本申请提供的基于钩子技术的应用调用方法,避免了在服务器中因为多个基础应用同时调用同一个第三方应用时引发的资源冲突的问题,使调用第三方应用的操作都在客户端中实现,进而保护了用户的隐私,维护了用户的合法权益,同时,用户在使用客户端的第三方应用时可以使用自己个性化的设置,提高了用户体验。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
云游戏:指以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,并将渲染完毕后的游戏画面压缩后通过网络传送给用户。在客户端,用户的游戏设备不需要任何高端处理器和显卡,只需要基本的视频解压能力就可以了。
钩子技术:又叫钩子函数(HOOK),是一种消息拦截机制,它可以监视系统或者进程中的各种事件消息,截获发往目标窗口的消息,并进行自定义处理。常见的如屏幕取词、监视日志、截获键盘鼠标的输入等等。
基础应用:运行在服务器端,可以由客户端操控的应用。
第三方应用:运行在服务器端,可以被基础应用调用的应用。
在本申请中,提供了一种基于钩子技术的应用调用方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示的基于钩子技术的应用调用方法中的步骤。图2示出了根据本申请一实施例的基于钩子技术的应用调用方法的流程图,该方法应用于服务器,包括步骤202至步骤210。
步骤202:在运行基础应用的情况下,接收客户端的用户操作信息。
在云计算技术中,应用通常运行于云端,即服务器中,用户通过客户端远程控制服务器中的应用,那么被客户端远程控制的应用即为基础应用。
基础应用可以是游戏、办公软件、即时通讯软件、视频播放软件、听歌软件等。
客户端包括个人电脑、机顶盒、移动终端等。
在一种具体实施方式中,基础应用为一个即时通讯软件,用户操作信息为点击即时通讯工具中的官网链接,接收用户的点击操作。
可选的,所述基础应用包括云游戏,在运行基础应用的情况下,接收客户端的用户操作信息,包括:在运行云游戏的情况下,接收客户端的用户操作信息。
在实际应用中,云游戏的应用十分广泛,云游戏运行于服务器中,用户通过客户端对服务器的云游戏进行操作。当需要在游戏中进行字符输入时,会调用输入法,当需要在游戏中点击游戏链接时,会调用浏览器。在运行云游戏的情况下,接收客户端的用户操作信息。
在另一种具体实施方式中,在运行云游戏的情况下,用户通过客户端点击云游戏中的对话框,接收用户的点击对话框的操作。
步骤204:当所述用户操作信息为调用第三方应用的情况下,将所述用户操作信息转换为第三方应用的应用调用请求。
客户端发送的用户操作信息有多类型,其中有一类是直接操作基础应用的操作信息,有一类是基于基础应用调用第三方应用的操作信息,因此,当用户操作信息为调用第三方应用的情况下,将接收到的用户操作信息转换为应用调用请求,所述应用调用请求用于调用第三方应用。
在一种具体实施方式中,以基础应用为即时通讯软件为例,接收用户通过客户端点击即时通讯软件中的官网链接的操作,将点击官网链接的操作转换为浏览器调用请求。
步骤206:根据所述应用调用请求生成对应的应用调用信息。
根据所述应用调用请求生成与所述应用调用请求对应的应用调用信息。
在一种具体实施方式中,以用户点击官网链接的操作为例,应用调用请求为调用浏览器,根据调用浏览器的请求生成浏览器调用信息,其中包括浏览器需要打开的网址信息、当前用户的基础信息等信息。
在另一种具体实施方式中,以用户上传文件的操作为例,应用调用请求为打开资源管理器,根据打开资源管理器的请求生成打开资源管理器的信息,其中包括资源管理器的默认打开路径,上传文件的默认文件格式等信息。
步骤208:使用钩子技术截获所述应用调用信息。
钩子技术(HOOK)又叫钩子函数,是一种消息拦截机制,它可以监视系统或者进程中的各种事件消息,截获发往目标窗口的消息,并进行自定义处理。常见的如屏幕取词、监视日志、截获键盘鼠标的输入等等。
通过钩子技术可以在基础应用中截获所述应用调用信息,在所述应用调用信息在真正执行之前将其截获,从而阻止应用的实际调用。
在一种具体实施方式中,以用户点击官网链接的操作为例,使用钩子技术截获生成的浏览器调用信息,以使所述浏览器调用信息不会传输至服务器本地的浏览器中,从而避免调用服务器本地的浏览器。
在另一种具体实施方式中,以用户点击云游戏中的对话框为例,用户通过客户端在云游戏中点击对话框的操作,根据点击对话框的操作生成对应的调用输入法的请求,根据所述调用输入法的请求生成对应的调用输入法的信息,使用钩子技术截获生成的调用输入法的信息,使得所述调用输入法的信息不会传输至服务器本地的输入法中,从而避免调用服务器本地的输入法。
步骤210:将所述应用调用信息传输至客户端,以使客户端调用客户端的第三方应用。
将截获的应用调用信息传输至客户端,在客户端中根据所述应用调用信息调取客户端本地的第三方应用。
在一种具体实施方式中,以用户点击官网链接的操作为例,将浏览器调用信息传输至客户端,以使客户端调用客户端本地的浏览器,实现在客户端本地打开浏览器的操作。
在另一种具体实施方式中,以用户上传文件的操作为例,将调用资源管理器信息传输至客户端,以打开客户端的资源管理器,用户可以选择客户端中的文件实现文件上传的操作。
本申请实施例提供的基于钩子技术的应用调用方法,应用于服务器,通过使用钩子技术截获第三方应用的应用调用信息,并将所述应用调用信息传输至客户端,从而实现在客户端调用第三方应用,而不是在服务器调用第三方应用的功能,避免了在服务器中因为多个基础应用同时调用同一个第三方应用引起的资源冲突问题,同时也保护了用户的隐私,维护了用户的合法权益,同时,用户在使用客户端的第三方应用时可以使用用户自己的个性化设置,提高了用户体验,增强了用户粘性。
图3示出了本申请一实施例的基于钩子技术的应用调用方法,该基于钩子技术的应用调用方法以对调用输入法为例进行描述,该方法应用于服务器,包括步骤302至步骤314。
步骤302:在运行基础应用的情况下,接收客户端的用户操作信息。
在本申请提供的实施例中,基础应用为云游戏,云游戏运行在服务器端,用户在玩云游戏的过程中,通过点击游戏中的对话框,与此同时,接收到用户在客户端的点击对话框的操作。
步骤304:当所述用户操作信息为调用第三方应用的情况下,根据所述用户操作信息和预设的与所述基础应用对应的软件工具开发包,获取与所述用户操作信息对应的调用第三方应用的应用调用请求。
在本申请提供的实施例中,在接收到用户点击对话框的操作后,经过判断得知该操作需要调用输入法,从而实现打字输入对话内容的行为。因此根据用户的点击对话框的操作和云游戏对应的软件工具开发包(SDK),获取点击对话框操作对应的输入法调用请求。
步骤306:根据所述应用调用请求生成对应的应用调用信息。
在本申请提供的实施例中,根据输入法调用请求生成对应的输入法调用信息,其中包括调用输入法的指令,用户的账户信息等。
步骤308:使用钩子技术截获所述应用调用信息,并将所述应用调用信息传输至所述软件工具开发包中。
在本申请提供的实施例中,使用钩子技术在云游戏中截获所述输入法调用信息,使所述输入法调用信息不用到达服务器的输入法中,进而不用实际调用服务器的输入法。
同时,将截获的输入法调用信息传输至软件工具开发包(SDK)中。
步骤310:生成与所述应用调用信息对应的第三方应用的虚拟调用指令。
在服务器中,虽然不会实际调用服务器的第三方应用,但是对于一些第三方应用而言,还是会基于应用调用信息生成相应的虚拟调用指令,进而基于虚拟调用指令对基础应用进操作。
在本申请提供的实施例中,在云游戏中点击对话框操作后,在对话框中会相应的有等待输入字符的光标闪烁,如果云游戏得不到应用调用信息对应的调用指令,则无法实现光标闪烁,进而无法实现输入。因此系统会生成对应的输入法的虚拟调用指令。
步骤312:根据所述虚拟调用指令模拟调用本地的第三方应用。
根据生成的虚拟调用指令,模拟调用服务器本地的第三方应用,进而完成系统内的运行逻辑。
在本申请提供的实施例中,根据输入法的虚拟调用指令,模拟调用服务器的输入法,进而使得云游戏的对话框中出现等待输入字符的光标闪烁,完成系统内需要输入字符的运算逻辑。
步骤314:通过所述软件工具开发包将所述应用调用信息传输至客户端,以使客户端调用客户端的第三方应用。
在本申请提供的实施例中,通过软件工具开发包(SDK)将输入法调用信息传输至客户端,客户端接收到输入法调用信息,从而调用客户端的输入法,可以有效的避免使用服务器的输入法引发的资源冲突问题,同时有效的保护用户的隐私,用户还可以使用自己熟悉的输入法进行操作,提高了用户体验。
在本申请提供的实施例中,以云游戏调用输入法为例,通过接收客户端的操作信息,根据操作信息生成对应的输入法调用信息,利用钩子技术截获输入法调用信息并通过软件工具开发包(SDK)将输入法调用信息传输至客户端,调用客户端的输入法实现字符输入的功能,同时根据输入法调用信息生成对应的虚拟调用指令,进而模拟调用服务器的输入法,实现服务器端的运行逻辑。通过本申请提供的基于钩子技术的输入法调用方法,避免了在服务器中因为多个云游戏同时调用输入法时引发的资源冲突的问题,使调用输入法的操作都在客户端中实现,保护了用户的隐私,维护了用户的合法权益,同时,用户在使用客户端的输入法时可以使用自己个性化的设置,提高了用户体验。
图4示出了本申请另一实施例的基于钩子技术的应用调用方法,该方法以对云游戏的配置文件进行导出为例进行描述,该方法应用于服务器,包括步骤402至步骤410。
步骤402:在运行云游戏的情况下,接收客户端的点击导出按钮的操作。
在本申请提供的实施例中,用户需要导出云游戏中的配置文件,用户在客户端点击导出按钮,服务器接收用户在客户端的点击导出按钮的操作。
步骤404:将导出按钮的操作转换为打开资源管理器的应用调用请求。
根据用户的点击导出按钮的操作和预设的软件工具开发包(SDK),将点击导出按钮的操作转换为打开资源管理器的应用调用请求。
步骤406:根据打开资源管理器的应用调用请求生成打开资源管理器的应用调用信息,其中所述应用调用信息导出文件的导出路径和文件内容。
步骤408:使用钩子技术截获所述应用调用信息。
使用钩子技术截获配置文件的导出路径和文件内容,使得云游戏所在的服务器并不会根据导出路径打开服务器的资源管理器,也不会将配置文件导出至云游戏所在的服务器上。
步骤410:将所述应用调用信息传输至客户端,以使客户端调根据所述应用调用信息中的导出路径和文件内容进行操作。
将配置文件的导出路径和文件内容传输至客户端,客户端根据导出路径打开客户端的资源管理器,并将配置文件的文件内容导出至客户端的导出路径中,从而实现配置文件的导出功能。
本申请实施例提供的基于钩子技术的应用调用装置,应用于服务器,通过钩子技术截获配置文件的导出路径和文件内容,将其传输至客户端,从而实现将配置文件导出至客户端的导出路径中,而不是导出到服务器的导出路径中,避免了用户的信息导出至服务器上而不是客户端中,真正实现了文件导出的功能,提高了用户体验,也保护了用户的隐私,维护了用户的合法权益。
与上述方法实施例相对应,本申请还提供了基于钩子技术的应用调用装置实施例,图5示出了本申请一个实施例的基于钩子技术的应用调用装置的结构示意图。如图5所示,该装置包括:
接收模块502,被配置为在运行基础应用的情况下,接收客户端的用户操作信息。
转换模块504,被配置为当所述用户操作信息为调用第三方应用的情况下,将所述用户操作信息转换为第三方应用的应用调用请求。
生成模块506,被配置为根据所述应用调用请求生成对应的应用调用信息。
截获模块508,被配置为使用钩子技术截获所述应用调用信息。
传输模块510,被配置为将所述应用调用信息传输至客户端,以使客户端调用客户端的第三方应用。
可选的,所述服务器包括预设的与所述基础应用对应的软件工具开发包;
所述转换模块504,进一步被配置为根据所述用户操作信息和所述软件工具开发包,获取与所述用户操作信息对应的调用第三方应用的应用调用请求。
可选的,所述基于钩子技术的应用调用装置还包括:
输入模块,被配置为将所述应用调用信息传输至所述软件工具开发包中。
可选的,所述传输模块510,进一步被配置为通过所述软件工具开发包将所述应用调用信息传输至客户端。
可选的,所述基于钩子技术的应用调用装置还包括:
生成模块,被配置为生成与所述应用调用信息对应的第三方应用的虚拟调用指令。
虚拟调用模块,被配置为根据所述虚拟调用指令模拟调用本地的第三方应用。
可选的,所述基础应用包括云游戏;
所述接收模块502,进一步被配置为在运行云游戏的情况下,接收客户端的用户操作信息。
本申请实施例提供的基于钩子技术的应用调用装置,应用于服务器,通过使用钩子技术截获第三方应用的应用调用信息,并将所述应用调用信息传输至客户端,从而实现在客户端调用第三方应用,而不是在服务器调用第三方应用的功能,避免了在服务器中因为多个基础应用同时调用同一个第三方应用引起的资源冲突问题,同时也保护了用户的隐私,维护了用户的合法权益,同时,用户在使用客户端的第三方应用时可以使用用户自己的个性化设置,提高了用户体验,增强了用户粘性。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的基于钩子技术的应用调用方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述基于钩子技术的应用调用方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的基于钩子技术的应用调用方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述基于钩子技术的应用调用方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。