键鼠脚本回放的方法及装置与流程

文档序号:11829092阅读:364来源:国知局
键鼠脚本回放的方法及装置与流程

本发明涉及互联网技术领域,特别是涉及一种键鼠脚本回放的方法及装置。



背景技术:

用户在操作游戏界面时,键盘和鼠标作为必不可少的输入设备,一般情况下需要重复执行某些键盘鼠标(简称为“键鼠”)操作,例如,某游戏在任务升级过程中,需要通过重复点击鼠标左键控制游戏中的角色的前进方向,在控制角色前进的同时还需要通过重复点击键盘上的某些按键控制游戏中的角色进行攻击,在该过程中用户需要不断重复进行繁琐的键鼠操作。

为了简化用户重复执行键鼠操作,可以在用户首次进行键鼠操作时对用户执行的键鼠操作进行脚本录制,获得键鼠脚本后,由计算机对键鼠脚本进行回放,模拟用户此前执行的键鼠操作,实现键鼠操作的自动执行,由此简化用户的操作步骤。通常,键鼠脚本是以事件为单位进行录制的,除了鼠标移动和鼠标滚轮以外,键盘或鼠标的按下、放开均为一个独立的事件。在实际进行脚本回放时,可以以托管模式进行回放来模拟用户执行的键鼠操作,由于托管模式是基于键鼠光标进行的脚本执行,而键鼠光标是全局光标,整个桌面中只有一个,该光标由事件的执行结果所控制,因此在键鼠脚本执行过程中无需对目的窗口进行识别,即无需对键鼠操作所针对的对象窗口进行识别。

在上述键鼠脚本回放过程中,发明人发现:在托管模式下进行键鼠脚本回放时,在两个连续键鼠脚本事件的时间间隔内,用户可以插入手动操作,例如,用户可以将光标移出目的窗口,点击某聊天应用程序,并在聊天窗口的编辑区域内输入文字信息。如前所述,托管模式控制的光标是全局光标,如果在事件之间的时间间隔内用户执行了键鼠操作,那么当键鼠脚本执行到下一个事件时,事件的执行会将用户操作的光标强行移动至目的窗口中对应该事件的位置上。此时,用户正在执行输入文字信息的操作 会停止执行,因此在托管模式下用户无法对鼠标或键盘进行操作。



技术实现要素:

有鉴于此,本发明实施例提供一种键鼠脚本回放的方法及装置,主要目的在于解决托管模式下用户无法对鼠标或键盘进行操作的问题。

依据本发明一个方面,提供了一种键鼠脚本回放的方法,包括:

在托管模式下,检测用户触发的键鼠操作指令;

若检测到键鼠操作指令,则通过播放引擎接管键鼠操作指令,其中,播放引擎用于执行键鼠脚本;

通过播放引擎将键鼠操作指令转换为消息指令,并通过播放引擎将消息指令发送给对应的窗口进行执行。

根据本发明的另一个方面,提供了一种键鼠脚本回放的装置,包括:

检测单元,用于在托管模式下,检测用户触发的键鼠操作指令;

接管单元,用于当检测单元检测到键鼠操作指令时,通过播放引擎接管键鼠操作指令,其中,播放引擎用于执行键鼠脚本;

转换单元,用于通过接管单元中的播放引擎将键鼠操作指令转换为消息指令;

发送单元,用于通过播放引擎将转换单元转换的消息指令发送给对应的窗口进行执行。

借由上述技术方案,本发明提供的键鼠脚本回放的方法及装置,在托管模式下进行键鼠脚本回放的过程中,当检测到用户触发的键鼠操作指令时,通过播放引擎接管该键鼠操作指令,将该键鼠操作指令转换为消息指令,并发送给对应的窗口进行执行。与现有技术相比,本发明能够采用后台模式传递并执行用户触发的键鼠操作指令,由于后台模式是以向窗口发送消息指令为机制的,不涉及对全局光标的控制和抢夺,不会对托管模式下的回放过程造成干扰,因此,本发明能够在键鼠脚本回放过程中,实现用户能够对鼠标或键盘进行操作。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和 其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明实施例提供的一种键鼠脚本回放的方法的流程图;

图2示出了本发明实施例提供的在托管模式下用户对键盘进行操作的示意图;

图3示出了本发明实施例提供的一种检测用户触发的键鼠操作指令的方法的流程图;

图4示出了本发明实施例提供的一种键鼠脚本回放的装置的组成框图;

图5示出了本发明实施例提供的另一种键鼠脚本回放的装置的组成框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

键鼠脚本回放模式包括托管模式和后台模式。现有技术中,托管模式的键鼠光标是全局光标,该全局光标由键鼠事件的执行结果所控制。在托管模式的回放过程中,用户可以在两个连续键鼠脚本事件的时间间隔内,手动插入键鼠操作指令,由于键鼠光标是全局光标,整个桌面只有一个,当键鼠脚本执行到下一个键鼠事件时,键鼠脚本执行所控制的光标“抢夺”用户触发的键鼠操作指令,键鼠事件的执行会将用户的键鼠操作指令强行移至下一个键鼠脚本事件的位置上,此时,用户正在执行的键鼠操作指令 会被强制停止执行,导致在键鼠脚本回放过程中无法对键盘或鼠标进行操作。

有鉴于此,本发明实施例提供一种键鼠脚本回放的方法,该方法能够解决在托管模式下用户无法对键盘或鼠标进行操作的问题,如图1所示,该方法包括:

101、在托管模式下,检测用户触发的键鼠操作指令。

本发明实施例中,在键鼠脚本回放过程中需要判断是否存在键鼠操作指令,如果用户触发了键鼠操作指令,则执行步骤102,将其进行托管,以防对键鼠脚本的回放造成干扰。其中,该键鼠操作指令为用户手动触发键盘、鼠标所产生的操作指令。

102、若检测到键鼠操作指令,则通过播放引擎接管键鼠操作指令。

在检测到存在用户触发的键鼠操作指令后,不能确定该键鼠操作指令具体的位置,因此,在没有确定该键鼠操作指令的具体位置之前,需通过播放引擎将该键鼠操作指令进行接管,其目的在于,当用户触发键鼠操作指令时,避免对键鼠脚本的回放造成干扰。

其中,播放引擎还用于执行键鼠脚本。在键鼠脚本回放过程中,首先通过播放引擎对键鼠脚本进行解析,将其解析成一条条能够被计算机识别的机器指令,并通过播放引擎将解析后的键鼠脚本进行顺序执行,直到执行完整个键鼠脚本。

103、通过播放引擎将键鼠操作指令转换为消息指令,并通过播放引擎将消息指令发送给对应的窗口进行执行。

本发明实施例中,为避免用户手动触发的键鼠操作指令干扰正在执行的键鼠脚本,需要通过播放引擎将键鼠操作指令转换为消息指令,播放引擎将转换后的消息指令发送给该对应的窗口进行执行,实现托管模式下用户能够对键盘或鼠标进行操作。在获得键鼠操作指令时,播放引擎获取该键鼠操作指令的描述信息(action信息),将描述信息解析为特定应用程序编程接口(Application Programming Interface,API)可以识别的列表或参数,然后通过特定API对该列表或参数进行调用。实际应用中,上述特定API可以是“::SendMessage”和/或“::PostMessage”,本实施例 对此不作限制。

本实施例中,用户可以触发针对目的窗口的键鼠操作指令,也可以触发针对目的窗口之外的其他窗口的键鼠操作指令,本实施例对此不作限制。其中,目的窗口为键鼠脚本回放的对象窗口。

图2示出了本发明实施例提供的在托管模式下用户对键盘进行操作的示意图,如图2所示,计算机桌面中的“音乐”为通过键鼠操作指令选中状态下的应用程序。在执行键鼠操作指令时,在计算机可视界面内不会出现鼠标指针,但键鼠操作指令可通过键盘上的方向键、回车键、Home键等进行操作,能够满足用户操作键盘的需求。本实施例是以用户对键盘进行操作为例进行的说明,而在实际的应用中,还可以实现在托管模式下用户对鼠标进行的操作,具体的本发明实施例对此不进行限制。

需要说明的是,图2是以在个人电脑(Personal Computer,简称PC)上呈现的操作界面为例进行的说明,实际应用中,本发明实施例还可以但不限于应用在智能电视、手机、平板电脑或可穿戴电子设备上。

本发明提供的键鼠脚本回放的方法,在托管模式下进行键鼠脚本回放的过程中,当检测到用户触发的键鼠操作指令时,通过播放引擎接管该键鼠操作指令,将该键鼠操作指令转换为消息指令,并发送给对应的窗口进行执行。与现有技术相比,本发明实施例能够采用后台模式传递并执行用户触发的键鼠操作指令,由于后台模式是以向窗口发送消息指令为机制的,不涉及对全局光标的控制和抢夺,不会对托管模式下的回放过程造成干扰,因此,本发明实施例能够在键鼠脚本回放过程中,实现用户能够对鼠标或键盘进行操作。

进一步,在执行步骤101检测用户触发的键鼠操作指令时,本发明实施例可以采用但不局限于以下的方式实现,该方法如图3所示,包括:

301、接收底层发送的执行指令。

计算机接收底层发送的执行指令,该执行指令包括键鼠操作指令和键鼠脚本。

302、判断执行指令是否携带有事件标识。

本发明实施例中,在判断执行指令是否携带有事件标识之前,往往会 对键鼠脚本进行唯一的事件标识。事件标识用于对键鼠脚本中的键鼠事件进行标记,本发明实施例可以采用但不局限于以下的方式实现对键鼠事件进行标识,例如,根据用户操作的不同游戏类型对应有不同的事件标识,每个不同的游戏类型与事件标识一一对应,例如,事件标识可以通过字符、字符串、阿拉伯数字等表示;或者,也可以在用户首次进行脚本录制时,根据键鼠事件执行的先后顺序对键鼠事件进行标识,如使用游戏1-1、游戏1-2、游戏1-3…对键鼠事件进行标识。具体的,本发明实施例对标识键鼠事件的方法不进行限制。

303、若执行指令没有携带事件标识,则确定执行指令为键鼠操作指令。

通常,键鼠脚本中的键鼠事件都会携带有事件标识,而用户触发的键鼠操作指令则不携带事件标识,可以通过这一特点对键鼠操作指令进行识别。具体的,当判断执行指令中携带有事件标识时,确定执行指令为键鼠脚本模拟的键鼠操作;当判断执行指令中未携带事件标识时,则确定执行指令为键鼠操作指令。

在确定执行指令为键鼠操作指令时,本发明实施例还提供另一种实现方式,在执行步骤301接收底层发送的执行指令时,记录下执行指令的键盘鼠标的硬件标识,计算机可通过键盘鼠标的硬件标识确定接收到的执行指令为键鼠操作指令,其中,键盘的硬件鼠标的标识为键盘鼠标的生产厂家设置的唯一标识信息;而键鼠脚本为模拟键盘鼠标的操作,不存在键盘鼠标的硬件标识。

进一步的,在执行步骤103通过播放引擎将键鼠操作指令转换为消息指令之前,还可以判断键鼠操作指令对应的操作焦点是否位于目的窗口中。一般情况下,每个窗口都有窗口属性信息,包括唯一标识信息、大小尺寸信息,坐标信息等等,根据不同窗口中所对应的唯一标识信息即可判断键鼠操作指令对应的操作焦点是否位于目的窗口中。当操作焦点位于目的窗口中时,通过播放引擎屏蔽键鼠操作指令,避免键鼠操作指令干扰目的窗口的回放结果;当操作焦点不位于目的窗口中时,通过播放引擎将消息指令发送给目的窗口之外的其他窗口进行执行,由此可以在不影响目的窗口回放的基础上,保证用户能够对其他窗口进行操作控制。

进一步的,在判断键鼠操作指令对应的操作焦点是否位于目的窗口中时,可以采用但不局限于以下的方式实现。

方式一:

首先,获取操作焦点的坐标。其中,操作焦点包括鼠标指针和键盘光标。

当操作焦点为鼠标指针时,获取操作焦点的坐标,包括:获取windows消息中的结构体信息,从该结构体信息中直接获取鼠标指针的坐标。windows消息指windows发出的一个通知,告知应用程序某一事件发生了,windows消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型、鼠标指针的坐标、鼠标指针对应窗口的位置、大小、窗口句柄及背景颜色等等,其中,windows消息中的记录也称为结构体。因此,本实施例中可以通过windows消息直接获取到鼠标指针的坐标。

当操作焦点为键盘光标时,调用GetGUIThreadInfo接口获取活动窗口的窗口信息,并从该窗口信息中获得键盘光标的坐标,活动窗口为操作焦点当前所在的对象窗口。其中,获取的活动窗口的窗口信息,包括:键盘光标的坐标、键盘光标所在窗口的位置信息以及大小信息等。在调用GetGUIThreadInfo接口时,可以获取活动窗口的所有窗口信息,也可以根据用户自身的需求获取用户所需的窗口信息,具体的本发明实施例对此不进行限制。

在获得操作焦点的坐标后,根据坐标获取操作焦点所在窗口的窗口句柄。窗口是通过窗口句柄来标识的,窗口句柄是指使用的一个唯一的整数值,用来标识不同的窗口。其中,在获取操作焦点所在窗口的窗口句柄时,可以采用但不局限于以下的方式实现,例如,可以通过获取窗口句柄的API,如调用FindWindow、WindowFromPoint等接口获取操作焦点的坐标所在窗口的窗口句柄;或者,也可以通过获取窗口句柄的应用程序获取操作焦点的坐标所在窗口的窗口句柄,具体的实现方式本发明实施例对此不进行限制。

在获得窗口句柄后,将窗口句柄与目的窗口的窗口句柄进行比对。若比对结果一致,则确定操作焦点位于目的窗口中;若比对结果不一致,则 确定操作焦点不位于目的窗口中。

方式二:

首先,根据目的窗口的窗口位置信息和窗口大小信息确定目的窗口的区域范围。在确定目的窗口的区域范围之前,需要获取窗口位置信息和窗口大小信息,计算机可以通过下述几种方式获取窗口位置信息和窗口大小信息:

1、调用GetGUIThreadInfo接口获取目的窗口的窗口信息,其中,窗口信息包括窗口位置信息和窗口大小信息。本发明实施例中,通过调用GetGUIThreadInfo接口获取目的窗口的窗口信息与上述方式一中调用GetGUIThreadInfo接口获取活动窗口的窗口信息的实现方式相同,此处不再赘述。

2、读取缓存的窗口位置信息和窗口大小信息。

在本实现方式中,计算机先将窗口的位置信息和窗口大小信息进行缓存,在缓存窗口信息时,可以采用但不局限于下述方式实现,例如,可以将目的窗口的窗口位置信息和窗口大小信息默认设置为屏幕最大化,若用户不随意改变目的窗口的大小以及位置,便无需缓存目的窗口的窗口信息,从而能够降低计算机缓存的窗口位置信息和窗口大小信息的处理资源;或者,在预设缓存时间内对目的窗口的窗口位置信息和窗口大小信息进行缓存,可以设置预设缓存时间为50s、20s等。具体的本发明实施例对此不进行限制。

进一步的,为了减少对缓存区域的擦写次数,还可以在预设缓存时间内对目的窗口的窗口位置信息和窗口大小信息进行缓存时,将新获得的窗口信息与已缓存的窗口信息进行比对,当比对的结果不一致时,将新获取的窗口信息进行缓存,并将已缓存的窗口信息更新为新缓存的窗口信息;而当比对的结果一致时,则将新获得的窗口信息丢弃,此时缓存区域内仍是已缓存的窗口信息。示例性的,假设,在08:32:10的时刻上,计算机第一次缓存窗口位置信息和窗口大小信息为窗口位置信息1和窗口大小信息1,预设缓存时间为20s;在08:32:30的时刻上,计算机新获取窗口位置信息和窗口大小信息为窗口位置信息2和窗口大小信息2,将第一次缓存的窗 口信息与新获取的窗口信息进行比对,若比对结果不一致,则将在08:32:30的时刻上新获取的窗口信息进行第二次缓存,并将第一次缓存的窗口信息更新为第二次缓存的窗口信息,此时,缓存区域内的窗口信息为第二次缓存的窗口信息;若比对结果一致,则将在08:32:30的时刻上新获取的窗口信息丢弃,此时,缓存区域内的窗口信息为第一次缓存的窗口信息。假设此时缓存区域的窗口信息为第二次缓存的窗口信息,当计算机在08:32:50的时刻上,新获取窗口位置信息和窗口大小信息为窗口位置信息3和窗口大小信息3,将新获取的窗口信息与第二次缓存的窗口信息进行比对。如此重复,直至执行完整个键鼠脚本。

在确定目的窗口的区域范围之后,获取操作焦点的坐标。关于获取操作焦点的坐标的详细描述可参阅上述方式一中获取操作焦点的坐标的有关描述,此处不再赘述。

在获得操作焦点的坐标后,根据坐标及区域范围确定操作焦点是否位于目标窗口中。具体的,将操作焦点的坐标与区域范围进行比对,若操作焦点的坐标不在区域范围内,则确定操作焦点不位于目的窗口中;若操作焦点的坐标在区域范围内,则确定操作焦点位于目的窗口中。

进一步的,作为对上述方法的实现,本发明实施例还提供一种键鼠脚本回放的装置,如图4所示,该装置包括:

检测单元41,用于在托管模式下,检测用户触发的键鼠操作指令;

接管单元42,用于当检测单元41检测到键鼠操作指令时,通过播放引擎接管键鼠操作指令,其中,播放引擎用于执行键鼠脚本;

转换单元43,用于通过接管单元42中的播放引擎将键鼠操作指令转换为消息指令;

发送单元44,用于通过播放引擎将转换单元43转换的消息指令发送给对应的窗口进行执行。

进一步的,如图5所示,检测单元41,包括:

接收模块411,用于接收底层发送的执行指令;

判断模块412,用于判断接收模块411接收的执行指令是否携带有事件标识,事件标识用于对键鼠脚本中的键鼠事件进行标记;

确定模块413,用于当判断模块412判断的执行指令没有携带事件标识时,确定执行指令为键鼠操作指令。

进一步的,如图5所示,装置进一步包括:

判断单元45,用于在转换单元43将键鼠操作指令转换为消息指令之前,判断键鼠操作指令对应的操作焦点是否位于目的窗口中,目的窗口为键鼠脚本回放的对象窗口;

屏蔽单元46,用于当判断单元45判断的操作焦点位于目的窗口中时,通过播放引擎屏蔽键鼠操作指令;

发送单元44还用于,当判断单元45判断的操作焦点不位于目的窗口中时,通过播放引擎将消息指令发送给目的窗口之外的其他窗口进行执行。

进一步的,如图5所示,判断单元45,包括:

第一获取模块451,用于获取操作焦点的坐标;

第一获取模块451还用于,根据坐标获取操作焦点所在窗口的窗口句柄;

比对模块452,用于将第一获取模块451获取的窗口句柄与目的窗口的窗口句柄进行比对;

第一确定模块453,用于当比对模块452比对结果一致时,确定操作焦点位于目的窗口中;

第一确定模块453还用于,当比对模块452比对结果不一致时,确定操作焦点不位于目的窗口中。

进一步的,操作焦点为鼠标指针,第一获取模块451用于:获取windows消息中的结构体信息;从结构体信息中获取鼠标指针的坐标。

进一步的,操作焦点为键盘光标,第一获取模块451用于:调用GetGUIThreadInfo接口获取活动窗口的窗口信息,并从窗口信息中获得键盘光标的坐标,其中,活动窗口为操作焦点当前所在的对象窗口。

进一步的,第一获取模块451还用于:调用WindowFromPoint接口获取坐标所在窗口的窗口句柄。

进一步的,如图5所示,判断单元45还包括:

第二确定模块454,用于根据目的窗口的窗口位置信息和窗口大小信息 确定目的窗口的区域范围;

第二获取模块455,用于获取操作焦点的坐标;

第二确定模块454还用于,根据第二获取模块455获取的坐标及区域范围确定操作焦点是否位于目标窗口中。

第二获取模块455还用于,在第二确定模块454确定目的窗口的区域范围之前,调用GetGUIThreadInfo接口获取目的窗口的窗口信息,窗口信息包括窗口位置信息和窗口大小信息;

进一步的,如图5所示,判断单元45还包括:

读取模块456,用于读取缓存的第二获取模块455获取的窗口位置信息和窗口大小信息。

本发明提供的键鼠脚本回放的装置,在托管模式下进行键鼠脚本回放的过程中,当检测到用户触发的键鼠操作指令时,通过播放引擎接管该键鼠操作指令,将该键鼠操作指令转换为消息指令,并发送给对应的窗口进行执行。与现有技术相比,本发明实施例能够采用后台模式传递并执行用户触发的键鼠操作指令,由于后台模式是以向窗口发送消息指令为机制的,不涉及对全局光标的控制和抢夺,不会对托管模式下的回放过程造成干扰,因此,本发明实施例能够在键鼠脚本回放过程中,实现用户能够对鼠标或键盘进行操作。

本发明实施例公开了:

A1、一种键鼠脚本回放的方法,所述方法包括:

在托管模式下,检测用户触发的键鼠操作指令;

若检测到所述键鼠操作指令,则通过播放引擎接管所述键鼠操作指令,其中,所述播放引擎用于执行所述键鼠脚本;

通过所述播放引擎将所述键鼠操作指令转换为消息指令,并通过所述播放引擎将所述消息指令发送给对应的窗口进行执行。

A2、根据A1所述的方法,所述检测用户触发的键鼠操作指令,包括:

接收底层发送的执行指令;

判断所述执行指令是否携带有事件标识,所述事件标识用于对所述键鼠脚本中的键鼠事件进行标记;

若所述执行指令没有携带事件标识,则确定所述执行指令为所述键鼠操作指令。

A3、根据A1所述的方法,在所述通过所述播放引擎将所述键鼠操作指令转换为消息指令之前,所述方法进一步包括:

判断所述键鼠操作指令对应的操作焦点是否位于目的窗口中,所述目的窗口为键鼠脚本回放的对象窗口;

若所述操作焦点位于所述目的窗口中,则通过所述播放引擎屏蔽所述键鼠操作指令;

所述通过所述播放引擎将所述消息指令发送给对应的窗口进行执行,包括:

若所述操作焦点不位于所述目的窗口中,则通过所述播放引擎将所述消息指令发送给所述目的窗口之外的其他窗口进行执行。

A4、根据A3所述的方法,所述判断所述键鼠操作指令对应的操作焦点是否位于目的窗口中,包括:

获取所述操作焦点的坐标;

根据所述坐标获取所述操作焦点所在窗口的窗口句柄;

将所述窗口句柄与目的窗口的窗口句柄进行比对;

若比对结果一致,则确定所述操作焦点位于所述目的窗口中;

若比对结果不一致,则确定所述操作焦点不位于所述目的窗口中。

A5、根据A4所述的方法,所述操作焦点为鼠标指针,所述获取所述操作焦点的坐标包括:

获取windows消息中的结构体信息;

从所述结构体信息中获取所述鼠标指针的坐标。

A6、根据A4所述的方法,所述操作焦点为键盘光标,所述获取所述操作焦点的坐标包括:

调用GetGUIThreadInfo接口获取活动窗口的窗口信息,并从所述窗口信息中获得所述键盘光标的坐标,其中,所述活动窗口为操作焦点当前所在的对象窗口。

A7、根据A4所述的方法,所述根据所述坐标获取所述操作焦点所在窗 口的窗口句柄,包括:

调用WindowFromPoint接口获取所述坐标所在窗口的窗口句柄。

A8、根据A3所述的方法,所述判断所述键鼠操作指令对应的操作焦点是否位于目的窗口中,包括:

根据所述目的窗口的窗口位置信息和窗口大小信息确定所述目的窗口的区域范围;

获取所述操作焦点的坐标;

根据所述坐标及所述区域范围确定所述操作焦点是否位于所述目标窗口中。

A9、根据A8所述的方法,在根据所述目的窗口的窗口位置信息和窗口大小信息确定所述目的窗口的区域范围之前,所述方法进一步包括:

调用GetGUIThreadInfo接口获取所述目的窗口的窗口信息,所述窗口信息包括所述窗口位置信息和所述窗口大小信息;

或者,读取缓存的所述窗口位置信息和所述窗口大小信息。

B10、一种键鼠脚本回放的装置,所述装置包括:

检测单元,用于在托管模式下,检测用户触发的键鼠操作指令;

接管单元,用于当所述检测单元检测到所述键鼠操作指令时,通过播放引擎接管所述键鼠操作指令,其中,所述播放引擎用于执行所述键鼠脚本;

转换单元,用于通过所述接管单元中的所述播放引擎将所述键鼠操作指令转换为消息指令;

发送单元,用于通过所述播放引擎将所述转换单元转换的所述消息指令发送给对应的窗口进行执行。

B11、根据B10所述的装置,所述检测单元,包括:

接收模块,用于接收底层发送的执行指令;

判断模块,用于判断所述接收模块接收的所述执行指令是否携带有事件标识,所述事件标识用于对所述键鼠脚本中的键鼠事件进行标记;

确定模块,用于当所述判断模块判断的所述执行指令没有携带事件标识时,确定所述执行指令为所述键鼠操作指令。

B12、根据B10所述的装置,所述装置进一步包括:

判断单元,用于在所述转换单元将所述键鼠操作指令转换为消息指令之前,判断所述键鼠操作指令对应的操作焦点是否位于目的窗口中,所述目的窗口为键鼠脚本回放的对象窗口;

屏蔽单元,用于当所述判断单元判断的所述操作焦点位于所述目的窗口中时,通过所述播放引擎屏蔽所述键鼠操作指令;

所述发送单元还用于,当所述判断单元判断的操作焦点不位于所述目的窗口中时,通过所述播放引擎将所述消息指令发送给所述目的窗口之外的其他窗口进行执行。

B13、根据B12所述的装置,所述判断单元,包括:

第一获取模块,用于获取所述操作焦点的坐标;

所述第一获取模块还用于,根据所述坐标获取所述操作焦点所在窗口的窗口句柄;

比对模块,用于将所述第一获取模块获取的所述窗口句柄与目的窗口的窗口句柄进行比对;

第一确定模块,用于当所述比对模块比对结果一致时,确定所述操作焦点位于所述目的窗口中;

所述第一确定模块还用于,当所述比对模块比对结果不一致时,确定所述操作焦点不位于所述目的窗口中。

B14、根据B13所述的装置,所述操作焦点为鼠标指针,所述第一获取模块用于:获取windows消息中的结构体信息;从所述结构体信息中获取所述鼠标指针的坐标。

B15、根据B13所述的装置,所述操作焦点为键盘光标,所述第一获取模块用于:调用GetGUIThreadInfo接口获取活动窗口的窗口信息,并从所述窗口信息中获得所述键盘光标的坐标,其中,所述活动窗口为操作焦点当前所在的对象窗口。

B16、根据B13所述的装置,所述第一获取模块还用于:调用WindowFromPoint接口获取所述坐标所在窗口的窗口句柄。

B17、根据B12所述的装置,所述判断单元还包括:

第二确定模块,用于根据所述目的窗口的窗口位置信息和窗口大小信息确定所述目的窗口的区域范围;

第二获取模块,用于获取所述操作焦点的坐标;

所述第二确定模块还用于,根据所述第二获取模块获取的所述坐标及所述区域范围确定所述操作焦点是否位于所述目标窗口中。

B18、根据B17所述的装置,所述第二获取模块还用于,在所述第二确定模块确定所述目的窗口的区域范围之前,调用GetGUIThreadInfo接口获取所述目的窗口的窗口信息,所述窗口信息包括所述窗口位置信息和所述窗口大小信息;

所述判断单元还包括:

读取模块,用于读取缓存的所述第二获取模块获取的所述窗口位置信息和所述窗口大小信息。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上 提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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