一种消息处理方法及装置的制造方法

文档序号:8922457阅读:726来源:国知局
一种消息处理方法及装置的制造方法
【技术领域】
[0001]本发明涉及信息技术领域,尤其涉及一种消息处理方法及装置。
【背景技术】
[0002]Windows的消息发送方式可以分为两种:一种为同步方式,即通过调用SendMessage函数将消息发送给目标窗口后,待目标窗口处理完该消息后,将响应消息返回给模拟程序对应的进程,以便模拟程序对应的进程执行下一个模拟操作;一种为异步方式,即通过调用PostMessage将消息发送给目标窗口后,模拟程序对应的进程直接执行下一个模拟操作。例如,目标窗口中已显示有一个第一菜单栏,预期的效果为:当用户在目标窗口中且该第一菜单栏以外的空白区域点击右键时,在目标窗口在该第一菜单栏以外的空白区域建立第二菜单栏。然而,现有技术在采用异步方式时,模拟程序不等待目标窗口处理上述右键点击发出的点击消息,就去操作第二菜单栏。此时找到的弹出菜单可能是第一菜单栏,也可能刚好遇到第一菜单消失而第二菜单未出现,导致找不到第一菜单或第二菜单。这两种情况都不是模拟程序预期的效果。
[0003]因此,采用同步方式处理Windows的消息时,当目标窗口出现“卡死”现象时,会导致模拟程序对应的进程也会因等待目标窗口处理消息而出现“卡死”现象;采用异步方式处理Windows的消息时,模拟程序不等待目标窗口处理完消息即执行下一个模拟操作,从而影响下一个模拟操作执行后的效果。

【发明内容】

[0004]本发明的实施例提供一种消息处理方法及装置,能够解决因目标窗口出现“卡死”现象导致的模拟程序对应的进程而出现的“卡死”问题,以及解决当模拟程序不等目标窗口处理完消息便执行下一个模拟操作,导致因执行过快影响下一个模拟操作执行后的效果的问题。
[0005]第一方面,本发明的实施例提供一种消息处理方法,包括:
[0006]以寄送方式发送模拟操作对应的消息到目标窗口,以便所述目标窗口接收并处理所述消息;
[0007]以寄送方式发送计时消息到所述目标窗口创建的辅助窗口,所述辅助窗口与所述目标窗口在同一个进程中,并且所述辅助窗口与所述目标窗口对应的消息队列相同;
[0008]设置预设时间,当在所述预设时间内获知所述辅助窗口接收到所述计时消息时,继续执行下一个模拟操作。
[0009]第二方面,本发明的实施例提供一种消息处理装置,包括:
[0010]发送单元,用于以寄送方式发送模拟操作对应的消息到目标窗口,以便所述目标窗口接收并处理所述消息;
[0011]设置单兀,用于设置预设时间;
[0012]所述发送单元,还用于以寄送方式发送计时消息到所述目标窗口创建的辅助窗口,所述辅助窗口与所述目标窗口在同一个进程中,并且所述辅助窗口与所述目标窗口对应的消息队列相同;
[0013]第一处理单元,用于当在所述设置单元设置的所述预设时间内获知所述辅助窗口接收到所述计时消息时,继续执行下一个模拟操作。
[0014]本发明提供的消息处理方法及装置,能够通过以寄送方式发送模拟操作对应的消息到目标窗口 ;以寄送方式发送计时消息到所述目标窗口创建的辅助窗口,所述辅助窗口与所述目标窗口在同一个进程中,并且所述辅助窗口与所述目标窗口对应的消息队列相同;设置预设时间,当在所述预设时间内获知所述辅助窗口接收到所述计时消息时,继续执行下一个模拟操作。由于系统设置中即时消息的优先级低于模拟操作对应的消息,因此通过获知辅助窗口接收到处理优先级较低的计时消息,从而执行下一个模拟操作,使得可以解决因目标窗口出现“卡死”现象导致的模拟程序对应的进程而出现的“卡死”现象,以及解决当模拟程序不等目标窗口处理完消息便执行下一个模拟操作,导致因执行过快影响下一个模拟操作执行后的效果的问题
【附图说明】
[0015]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0016]图1为本发明实施例提供的一种消息处理方法的流程图;
[0017]图2为本发明实施例提供的另一种消息处理方法的流程图;
[0018]图3为本发明实施例提供的另一种消息处理方法的流程图;
[0019]图4为本发明实施例提供的一种消息处理装置的框图;
[0020]图5为本发明实施例提供的另一种消息处理装置的框图。
【具体实施方式】
[0021]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022]本发明实施例提供一种消息处理方法,该方法的执行主体可以为模拟程序对应的进程,如图1所示,该方法包括:
[0023]步骤101,以寄送方式发送模拟操作对应的消息到目标窗口,以便所述目标窗口接收并处理所述消息。
[0024]可选的,在本步骤之前,模拟程序对应的进程可以通过现有技术的技术方案使目标窗口创建一个辅助窗口,此辅助窗口用于接收以及处理来自模拟程序对应的进程发送的消息。当然还可以采用其他的技术实现,本实施例不限制采用的技术,可以使得目标窗口创建辅助窗口的技术。
[0025]可选的,以寄送方式发送模拟操作对应的消息到目标窗口,即通过调用PostMessage函数将模拟操作对应的消息发送给目标窗口。
[0026]可选的,例如,模拟操作为模拟点击操作,则模拟操作对应的消息可以为点击消肩、O
[0027]步骤102,以寄送方式发送计时消息到所述目标窗口创建的辅助窗口,所述辅助窗口与所述目标窗口在同一个进程中,并且所述辅助窗口与所述目标窗口对应的消息队列相同。
[0028]可选的,以寄送方式发送计时消息到所述目标窗口创建的辅助窗口,即通过调用PostMessage函数将计时消息发送给辅助窗口。
[0029]可选的,模拟操作对应的消息的处理优先级比计时消息的处理优先级高,因此当所述辅助窗口与所述目标窗口对应的消息队列中存在模拟操作对应的消息以及计时消息时,优先处理模拟操作对应的消息。
[0030]进一步可选的,所述辅助窗口与所述目标窗口对应的进程会通过一段循环代码读取消息队列中的各个消息,并将消息发送给对应的窗口,例如,将模拟操作对应的消息发送给目标窗口,将计时消息发送给辅助窗口。
[0031]步骤103,设置预设时间,当在所述预设时间内获知所述辅助窗口接收到所述计时消息时,继续执行下一个模拟操作。
[0032]可选的,由于模拟操作对应的消息的处理优先级比计时消息的处理优先级高,因此模拟程序对应的进程获知所述辅助窗口接收到所述计时消息时,说明目标窗口已经接收到模拟操作对应的消息,或者,说明目标窗口已经接收并且处理完成所述模拟操作对应的消息,或者,说明目标窗口在处理所述模拟操作对应的消息过程中产生的其他消息也已经被其他相关窗口接收并处理,因此,模拟程序对应的进程可以继续执行下一个模拟操作。
[0033]当在设置的预设时间内,模拟程序对应的进程未获知所述辅助窗口接收到所述计时消息时,也继续执行下一个模拟操作,即模拟程序对应的进程不再等待所述辅助窗口接收所述计时消息。
[0034]本发明提供的消息处理方法,能够通过以寄送方式发送模拟操作对应的消息到目标窗口 ;以寄送方式发送计时消息到所述目标窗口创建的辅助窗口,所述辅助窗口与所述目标窗口在同一个进程中,并且所述辅助窗口与所述目标窗口对应的消息队列相同;设置预设时间,当在所述预设时间内获知所述辅助窗口接收到所述计时消息时,继续执行下一个模拟操作。由于系统设置中即时消息的优先级低于模拟操作对应的消息,因此通过获知辅助窗口接收到处理优先级较低的计时消息,从而执行下一个模拟操作,使得可以解决因目标窗口出现“卡死”现象导致的模拟程序对应的进程而出现的“卡死”现象,以及解决当模拟程序不等目标窗口处理完消息便执行下一个模拟操作,导致因执行过快影响下一个模拟操作执行后的效果的问题。
[0035]本发明实施例提供另一种消息处理方法,如图2所示,该方法包括:
[0036]步骤201,模拟程序对应的进程通过现有技术方案使所述目标窗口所在的进程创建所述辅助窗口。
[0037]步骤202,模拟程序对应的进程以寄送方式发送模拟操作对应的消息到目标窗口,以便所述目标窗口接收并处理所述消息。
[0038]可选的,模拟程序对应的进程以调用PostMessage
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1