本发明专利技术实施例公开了一种控件捕捉方法,包括:获取正在运行的程序;检测从所述正在运行的程序中选择的目标程序;在所述目标程序的运行进程中加载目标DLL文件,以显示工具主窗口;当检测到通过所述工具主窗口输入的窗口句柄获取操作时,获取所述目标程序对应的目标窗口的窗口句柄,并将所述窗口句柄转换为Qt指针;若所述Qt指针不为空,根据所述Qt指针遍历所述目标窗口的所有子控件,并在所述工具主窗口中输出所述目标窗口的控件列表;当检测到针对所述目标窗口中的目标控件的操作时,在所述工具主窗口中输出所述目标控件的控件属性。本发明专利技术实施例还公开了一种控件捕捉设备。采用本发明专利技术,可以实现针对基于Qt的图形用户界面程序的控件的识别。
【技术实现步骤摘要】
一种控件捕捉方法和设备
本专利技术涉及互联网
,尤其涉及一种控件捕捉方法和设备。
技术介绍
在图形用户界面(GraphicalUserInterface,GUI)编程过程中,经常需要对界面进行微调,但每修改一次代码,就需要重新编译生成新的程序文件,步骤重复,效率低下。利用Spy++等工具,可以对界面控件进行实时捕捉、监控、修改,避免了反复查看修改源代码的繁琐。Spy++是基于Win32的实用工具,可以方便的查看Win32程序窗口的属性、子控件结构、窗口的消息等,但是由于基于Qt的图形用户界面(基于Qt开发的程序的图形用户界面)通常是用QWidget和QGraphicsItem叠加实现,只有根窗口的QWidget是真窗口,具有窗口句柄,其它的子控件QGraphicsItem则没有窗口句柄的,因此,Spy++无法识别基于Qt的图形用户界面的子控件。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种控件捕捉方法和设备,以实现针对基于Qt的图形用户界面的程序的控件的识别。为了解决上述技术问题,本专利技术实施例提供了一种控件捕捉方法,包括:获取正在运行的程序;检测从所述正在运行的程序中选择的目标程序;在所述目标程序的运行进程中加载目标DLL文件,以显示工具主窗口;当检测到通过所述工具主窗口输入的窗口句柄获取操作时,获取所述目标程序对应的目标窗口的窗口句柄,并将所述窗口句柄转换为Qt指针;若所述Qt指针不为空,根据所述Qt指针遍历所述目标窗口的所有子控件,并在所述工具主窗口中输出所述目标窗口的控件列表;其中,所述目标窗口的控件列表包括所述目标窗口以及所述目标窗口的所有子控件;当检测到针对所述目标窗口中的目标控件的操作时,在所述工具主窗口中输出所述目标控件的控件属性;其中,所述目标控件包括所述目标窗口或所述目标窗口的子控件。其中,所述在目标程序的进程对象中加载目标DLL文件,包括:在所述目标程序的进程对象中启动一个线程,通过所述线程以所述目标DLL文件的访问路径为输入参数调用指定API,以加载所述目标DLL文件。其中,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:根据针对所述目标控件的控件属性的修改操作,修改所述目标子控件的控件属性。其中,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:当检测到针对目标控件的窗口消息监听指令时,以所述目标控件,以及指定事件为输入参数重载事件过滤函数,以监听该目标控件的窗口消息。其中,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:当检测到针对目标控件的信号与槽监听指令时,在信号发生起始时刻、信号发生结束时刻,以及槽被调用起始时刻、槽被调用结束时刻,运行预先定义的回调函数,以监听目标控件的信号与槽。相应地,本专利技术实施例还提供了一种控件捕捉设备,包括:获取模块,用于获取正在运行的程序;检测模块,用于检测从所述正在运行的程序中选择的目标程序;加载模块,用于在所述目标程序的运行进程中加载目标DLL文件,以显示工具主窗口;所述获取模块,还用于当检测到通过所述工具主窗口输入的窗口句柄获取操作时,获取所述目标程序对应的目标窗口的窗口句柄;转换模块,用于将所述窗口句柄转换为Qt指针;输出模块,用于当所述Qt指针不为空时,根据所述Qt指针遍历所述目标窗口的所有子控件,并在所述工具主窗口中输出所述目标窗口的控件列表;其中,所述目标窗口的控件列表包括所述目标窗口以及所述目标窗口的所有子控件;所述输出模块,还用于当检测到针对所述目标窗口中的目标控件的操作时,在所述工具主窗口中输出所述目标控件的控件属性;其中,所述目标控件包括所述目标窗口或所述目标窗口的子控件。其中,所述加载模块,具体用于在所述目标程序的进程对象中启动一个线程,通过所述线程以所述目标DLL文件的访问路径为输入参数调用指定API,以加载所述目标DLL文件。其中,所述设备还包括:修改模块,用于根据针对所述目标控件的控件属性的修改操作,修改所述目标子控件的控件属性。其中,所述设备还包括:第一监听模块,用于当所述检测模块检测到针对目标控件的窗口消息监听指令时,以所述目标控件,以及指定事件为输入参数重载事件过滤函数,以监听该目标控件的窗口消息。其中,所述设备还包括:第二监听模块,用于当所述检测模块检测到针对目标控件的信号与槽监听指令时,在信号发生起始时刻、信号发生结束时刻,以及槽被调用起始时刻、槽被调用结束时刻,运行预先定义的回调函数,以监听目标控件的信号与槽。实施本专利技术实施例,具有如下有益效果:通过在从正在运行的程序中选择的目标程序的运行进程中加载目标DLL文件,显示工具主窗口,从而当检测到通过工具主窗口输入的窗口句柄获取操作时,获取该目标程序对应的目标窗口的窗口句柄,并将该窗口句柄转换为Qt指针,从而在Qt指针不为空时,在工具主窗口中输出目标窗口的控件列表;当检测到针对目标窗口中的目标控件的操作时,在工具主窗口中输出目标控件的控件属性,实现了针对基于Qt的图形用户界面程序的控件的识别。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种控件捕捉方法的流程示意图;图1A为本专利技术实施例的一种目标窗口的示意图;图2为本专利技术实施例提供的另一种控件捕捉方法的流程示意图;图2A为本专利技术实施例提供的一种工具主窗口的示意图;图3为本专利技术实施例提供的一种控件捕捉设备的结构示意图;图4为本专利技术实施例提供的另一种控件捕捉设备的结构示意图;图5为本专利技术实施例提供的另一种控件捕捉设备的结构示意图;图6为本专利技术实施例提供的另一种控件捕捉设备的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,为本专利技术实施例提供的一种控件捕捉方法的流程示意图,可以包括以下步骤:S101、获取正在运行的程序。本专利技术实施例描述的控件捕捉方法可以应用于Qt界面辅助工具中,该Qt界面辅助工具可以运行在WindowsXP或更新版本的操作系统中。但值得说明的是,上述方法不限于应用于Qt界面辅助工具中,其也可以应用于其它具有Qt界面辅助功能的工具中,本专利技术实施例不做限定。为了便于描述,以下以上述方法应用于Qt界面辅助工具为例进行描述。本专利技术实施例中,用户运行上述工具之后,该工具可以获取正在运行的程序。例如,该工具可以通过Process32First和Process32Next函数遍历当前正在运行的程序。S102、检测从正在运行的程序中选择的目标程序。本专利技术实施例中,Qt界面辅助工具获取到正在运行的程序之后,可以向用户展示正在运行的程序,用户可以根据需求从正在运行的程序中选择目标程序。S103、在目标程序的运行进程中加载目标DLL文件,以显示工具主窗口。本专利技术实施例中,Q本文档来自技高网...
【技术保护点】
一种控件捕捉方法,其特征在于,包括:获取正在运行的程序;检测从所述正在运行的程序中选择的目标程序;在所述目标程序的运行进程中加载目标DLL文件,以显示工具主窗口;当检测到通过所述工具主窗口输入的窗口句柄获取操作时,获取所述目标程序对应的目标窗口的窗口句柄,并将所述窗口句柄转换为Qt指针;若所述Qt指针不为空,根据所述Qt指针遍历所述目标窗口的所有子控件,并在所述工具主窗口中输出所述目标窗口的控件列表;其中,所述目标窗口的控件列表包括所述目标窗口以及所述目标窗口的所有子控件;当检测到针对所述目标窗口中的目标控件的操作时,在所述工具主窗口中输出所述目标控件的控件属性;其中,所述目标控件包括所述目标窗口或所述目标窗口的子控件。
【技术特征摘要】
1.一种控件捕捉方法,其特征在于,包括:获取正在运行的程序;检测从所述正在运行的程序中选择的目标程序;在所述目标程序的运行进程中加载目标DLL文件,以显示工具主窗口;当检测到通过所述工具主窗口输入的窗口句柄获取操作时,获取所述目标程序对应的目标窗口的窗口句柄,并将所述窗口句柄转换为Qt指针;若所述Qt指针不为空,根据所述Qt指针遍历所述目标窗口的所有子控件,并在所述工具主窗口中输出所述目标窗口的控件列表;其中,所述目标窗口的控件列表包括所述目标窗口以及所述目标窗口的所有子控件;当检测到针对所述目标窗口中的目标控件的操作时,在所述工具主窗口中输出所述目标控件的控件属性;其中,所述目标控件包括所述目标窗口或所述目标窗口的子控件。2.如权利要求1所述的方法,其特征在于,所述在目标程序的进程对象中加载目标DLL文件,包括:在所述目标程序的进程对象中启动一个线程,通过所述线程以所述目标DLL文件的访问路径为输入参数调用指定API,以加载所述目标DLL文件。3.如权利要求1所述的方法,其特征在于,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:根据针对所述目标控件的控件属性的修改操作,修改目标子控件的控件属性。4.如权利要求1所述的方法,其特征在于,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:当检测到针对目标控件的窗口消息监听指令时,以所述目标控件,以及指定事件为输入参数重载事件过滤函数,以监听该目标控件的窗口消息。5.如权利要求1所述的方法,其特征在于,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:当检测到针对目标控件的信号与槽监听指令时,在信号发生起始时刻、信号发生结束时刻,以及槽被调用起始时刻、槽被调用结束时刻,运行预先定义的回调函数,以监听目标控件的信号与槽。6.一种...
【专利技术属性】
技术研发人员:林刘生,蔡青峰,
申请(专利权)人:广州华多网络科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。