一种控件捕捉方法和设备的制造方法

文档序号:8282105阅读:248来源:国知局
一种控件捕捉方法和设备的制造方法
【技术领域】
[0001]本发明涉及互联网技术领域,尤其涉及一种控件捕捉方法和设备。
【背景技术】
[0002]在图形用户界面(Graphical User Interface,⑶I)编程过程中,经常需要对界面进行微调,但每修改一次代码,就需要重新编译生成新的程序文件,步骤重复,效率低下。利用Spy++等工具,可以对界面控件进行实时捕捉、监控、修改,避免了反复查看修改源代码的繁琐。
[0003]Spy++是基于Win32的实用工具,可以方便的查看Win32程序窗口的属性、子控件结构、窗口的消息等,但是由于基于Qt的图形用户界面(基于Qt开发的程序的图形用户界面)通常是用QWidget和QGraphicsItem叠加实现,只有根窗口的QWidget是真窗口,具有窗口句柄,其它的子控件QGraphicsItem则没有窗口句柄的,因此,Spy++无法识别基于Qt的图形用户界面的子控件。

【发明内容】

[0004]本发明实施例所要解决的技术问题在于,提供一种控件捕捉方法和设备,以实现针对基于Qt的图形用户界面的程序的控件的识别。
[0005]为了解决上述技术问题,本发明实施例提供了一种控件捕捉方法,包括:
[0006]获取正在运行的程序;
[0007]检测从所述正在运行的程序中选择的目标程序;
[0008]在所述目标程序的运行进程中加载目标DLL文件,以显示工具主窗口 ;
[0009]当检测到通过所述工具主窗口输入的窗口句柄获取操作时,获取所述目标程序对应的目标窗口的窗口句柄,并将所述窗口句柄转换为Qt指针;
[0010]若所述Qt指针不为空,根据所述Qt指针遍历所述目标窗口的所有子控件,并在所述工具主窗口中输出所述目标窗口的控件列表;其中,所述目标窗口的控件列表包括所述目标窗口以及所述目标窗口的所有子控件;
[0011 ] 当检测到针对所述目标窗口中的目标控件的操作时,在所述工具主窗口中输出所述目标控件的控件属性;其中,所述目标控件包括所述目标窗口或所述目标窗口的子控件。
[0012]其中,所述在目标程序的进程对象中加载目标DLL文件,包括:
[0013]在所述目标程序的进程对象中启动一个线程,通过所述线程以所述目标DLL文件的访问路径为输入参数调用指定API,以加载所述目标DLL文件。
[0014]其中,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:
[0015]根据针对所述目标控件的控件属性的修改操作,修改所述目标子控件的控件属性。
[0016]其中,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:
[0017]当检测到针对目标控件的窗口消息监听指令时,以所述目标控件,以及指定事件为输入参数重载事件过滤函数,以监听该目标控件的窗口消息。
[0018]其中,所述在所述工具主窗口中输出所述目标控件的控件属性之后,还包括:
[0019]当检测到针对目标控件的信号与槽监听指令时,在信号发生起始时刻、信号发生结束时刻,以及槽被调用起始时刻、槽被调用结束时刻,运行预先定义的回调函数,以监听目标控件的信号与槽。
[0020]相应地,本发明实施例还提供了一种控件捕捉设备,包括:
[0021]获取模块,用于获取正在运行的程序;
[0022]检测模块,用于检测从所述正在运行的程序中选择的目标程序;
[0023]加载模块,用于在所述目标程序的运行进程中加载目标DLL文件,以显示工具主窗口 ;
[0024]所述获取模块,还用于当检测到通过所述工具主窗口输入的窗口句柄获取操作时,获取所述目标程序对应的目标窗口的窗口句柄;
[0025]转换模块,用于将所述窗口句柄转换为Qt指针;
[0026]输出模块,用于当所述Qt指针不为空时,根据所述Qt指针遍历所述目标窗口的所有子控件,并在所述工具主窗口中输出所述目标窗口的控件列表;其中,所述目标窗口的控件列表包括所述目标窗口以及所述目标窗口的所有子控件;
[0027]所述输出模块,还用于当检测到针对所述目标窗口中的目标控件的操作时,在所述工具主窗口中输出所述目标控件的控件属性;其中,所述目标控件包括所述目标窗口或所述目标窗口的子控件。
[0028]其中,所述加载模块,具体用于在所述目标程序的进程对象中启动一个线程,通过所述线程以所述目标DLL文件的访问路径为输入参数调用指定API,以加载所述目标DLL文件。
[0029]其中,所述设备还包括:
[0030]修改模块,用于根据针对所述目标控件的控件属性的修改操作,修改所述目标子控件的控件属性。
[0031]其中,所述设备还包括:
[0032]第一监听模块,用于当所述检测模块检测到针对目标控件的窗口消息监听指令时,以所述目标控件,以及指定事件为输入参数重载事件过滤函数,以监听该目标控件的窗口消息。
[0033]其中,所述设备还包括:
[0034]第二监听模块,用于当所述检测模块检测到针对目标控件的信号与槽监听指令时,在信号发生起始时刻、信号发生结束时刻,以及槽被调用起始时刻、槽被调用结束时刻,运行预先定义的回调函数,以监听目标控件的信号与槽。
[0035]实施本发明实施例,具有如下有益效果:
[0036]通过在从正在运行的程序中选择的目标程序的运行进程中加载目标DLL文件,显示工具主窗口,从而当检测到通过工具主窗口输入的窗口句柄获取操作时,获取该目标程序对应的目标窗口的窗口句柄,并将该窗口句柄转换为Qt指针,从而在Qt指针不为空时,在工具主窗口中输出目标窗口的控件列表;当检测到针对目标窗口中的目标控件的操作时,在工具主窗口中输出目标控件的控件属性,实现了针对基于Qt的图形用户界面程序的控件的识别。
【附图说明】
[0037]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0038]图1为本发明实施例提供的一种控件捕捉方法的流程示意图;
[0039]图1A为本发明实施例的一种目标窗口的示意图;
[0040]图2为本发明实施例提供的另一种控件捕捉方法的流程示意图;
[0041]图2A为本发明实施例提供的一种工具主窗口的不意图;
[0042]图3为本发明实施例提供的一种控件捕捉设备的结构示意图;
[0043]图4为本发明实施例提供的另一种控件捕捉设备的结构示意图;
[0044]图5为本发明实施例提供的另一种控件捕捉设备的结构示意图;
[0045]图6为本发明实施例提供的另一种控件捕捉设备的结构示意图。
【具体实施方式】
[0046]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047]如图1所示,为本发明实施例提供的一种控件捕捉方法的流程示意图,可以包括以下步骤:
[0048]S101、获取正在运行的程序。
[0049]本发明实施例描述的控件捕捉方法可以应用于Qt界面辅助工具中,该Qt界面辅助工具可以运行在Windows XP或更新版本的操作系统中。但值得说明的是,上述方法不限于应用于Qt界面辅助工具中,其也可以应用于其它具有Qt界面辅助功能的工具中,本发明实施例不做限定。为了便于描述,以下以上述方法应用于Qt界面辅助工具为例进行描述。
[0050]本发明实施例中,用户运行上述工具之后,该工具可以获取正在运行的程序。例如,该工具可以通过Process32First和Process32Next函数遍历当前正在运行的程序。
[0051]S102、检测从正在运行的程序中选择的目标程序。
[0052]本发明实施例中,Qt界面辅助工具获取到正在运行的程序之后,可以向用户展示正在运行的程序,用户可以根据需求从正在运行的程序中选择目标程序。
[0053]S103、在目标程序的运行进程中加载目标DLL文件,以显示工具主窗口。
[0054]本发明实施例中,Qt界面辅助工具检测到从正在运行的进程中选择的目标程序之后,可以在该目标程序的运行进程中加载目标DLL文件,以显示工具主窗口。
[0055]具体的,Qt界面辅助工具可以在目标程序的运行进程中启动一个线程,并通过该线程以目标DLL文件的访问路径为输入参数调用指定API,以加载该目标DLL文件。其中,该指定API为系统提供的用于加载DLL文件的API。
[0056]S104、当检测到通过工具主窗口输入的窗口句柄获取操作时,获取该目标程序对应的目标窗口的窗口句柄,并将该窗口句柄转换为Qt指针。
[0057]本发明实施例中,用户可以通过工具主窗口中的指定功能按钮输入窗口句柄获取操作,该窗口句柄获取操作可以为用户通过鼠标按下工具主窗口中的指定功能按钮,并将光标移动到目标程序对应的目标窗口。其中,可以突出显示(如高亮显示)当前光标所选中的区域,例如,当光标处于目标窗口中任一子控件所在区域时,高亮显示该子控件;当光标未处于目标窗口中任一子控件所在区域(但仍在目标窗口中)时,高亮显示目标窗口。
[0058]举例来说,以目标程序为YY程序为例,上述窗口句柄获取操作可以为用户通过鼠标按下工具主窗口中的指定功能按钮(如“查找”),并将光标移动到YY程序对应的目标窗口
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1