应用程序中窗口的控制方法和装置的制造方法

文档序号:10534297阅读:149来源:国知局
应用程序中窗口的控制方法和装置的制造方法
【专利摘要】本申请公开了一种应用程序中窗口的控制方法。该方法包括创建所述应用程序中父窗口对应的子窗口时,创建所述子窗口对应的代理窗口,设置所述子窗口的父窗口属性为所述代理窗口,设置所述代理窗口的父窗口属性为所述父窗口;所述代理窗口所在的线程通过异步消息与所述子窗口所在的线程通信;所述代理窗口所在线程检测所述子窗口的状态;当确定所述子窗口处于无响应状态时,将所述代理窗口的父窗口属性设置为无父窗口;通过移除所述代理窗口,将所述子窗口从当前显示界面移除。应用本申请实施例,能够及时地处理处于无响应状态的子窗口,并且避免处于无响应状态的子窗口所在的进程被杀死,减少系统资源的浪费。
【专利说明】
应用程序中窗口的控制方法和装置
技术领域
[0001]本发明涉及计算机技术领域,尤其涉及一种应用程序中窗口的控制方法和装置。
【背景技术】
[0002]在windows操作系统中,窗口是用户界面的重要组成部分。当用户开始运行一个应用程序时,应用程序创建并显示一个窗口。当用户操作窗口中的对象时,应用程序会做出相应的反应。在应用程序运行的过程中,多个窗口会被创建。不同窗口之间的关联包括父子关系,拥有和被拥有的关系等。Windows操作系统会根据窗口之间的关联来管理窗口。

【发明内容】

[0003]本发明实施例提供了一种应用程序中窗口的控制方法和装置,能够及时地处理处于无响应状态的子窗口,并且避免处于无响应状态的子窗口所在的进程被杀死,减少系统资源的浪费。
[0004]本发明实施例的技术方案是这样实现的:
[0005]—种应用程序中窗口的控制方法,包括:
[0006]创建所述应用程序中父窗口对应的子窗口时,创建所述子窗口对应的代理窗口,设置所述子窗口的父窗口属性为所述代理窗口,设置所述代理窗口的父窗口属性为所述父窗口 ;所述代理窗口所在的线程通过异步消息与所述子窗口所在的线程通信;
[0007]所述代理窗口所在线程检测所述子窗口的状态;
[0008]当确定所述子窗口处于无响应状态时,将所述代理窗口的父窗口属性设置为无父窗口;通过移除所述代理窗口,将所述子窗口从当前显示界面移除。
[0009]—种应用程序中窗口的控制装置,包括:
[0010]管理模块,用于在创建所述应用程序中父窗口对应的子窗口时,创建所述子窗口对应的代理窗口,设置所述子窗口的父窗口属性为所述代理窗口,设置所述代理窗口的父窗口属性为所述父窗口 ;所述代理窗口所在的线程通过异步消息与所述子窗口所在的线程通信;
[0011 ]检测模块,用于通过所述代理窗口所在线程检测所述子窗口的状态;
[0012]移除模块,用于当所述检测模块确定所述子窗口处于无响应状态时,将所述代理窗口的父窗口属性设置为无父窗口 ;通过移除所述代理窗口,将所述子窗口从当前显示界面移除。
[0013]根据本发明实施例提供的应用程序中窗口的控制方法和装置,代理窗口能够及时发现子窗口处于无响应状态,将代理窗口的设置为无父窗口,并通过移除代理窗口,将子窗口从当前显示界面中移除。由于父窗口与代理窗口不存在父子关系,子窗口的无响应状态不会对父窗口的正常运行造成影响,避免父窗口进入无响应状态。另外,由于无需直接将处于无响应状态的子窗口所在的进程杀死,从而避免了系统进程资源的浪费。
[0014]进一步的,如果子窗口只是暂时处于无响应状态,一段时间后会恢复正常,通过应用本发明实施例,能够在该子窗口恢复正常时,在当前显示界面中恢复该子窗口,从而有效地避免暂时处于无响应状态的子窗口被误杀,无需重复创建相同的子窗口,节约了系统资源。
【附图说明】
[0015]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0016]图1为本发明一个实施例提供的应用程序中窗口的控制方法的流程图。
[0017]图2为本发明一个实施例提供的应用程序中窗口的控制装置的结构的示意图。
[0018]图3为本发明一个实施例提供的应用程序中窗口的控制方法的流程图。
[0019]图4为本发明一个实施例中网页窗口处于正常状态时的窗口的结构图。
[0020]图5为本发明一个实施例中网页窗口处于无响应状态时的窗口的结构图。
[0021]图6为本发明一个实施例提供的应用程序中窗口的控制装置的结构的示意图。
【具体实施方式】
[0022]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023]本发明的发明人在研究过程中发现,为了避免处于无响应状态的子窗口导致其父窗口无法进行响应,在现有窗口管理方法中,利用独立的进程创建子窗口,当该子窗口处于无响应状态时,直接将该子窗口所在的进程杀死。通常,在应用程序运行的过程中需要创建的子窗口的数量较多,如果每个子窗口都利用独立的进程来创建会导致大量系统进程资源被占用。并且,由于需要维护的进程数量较多,实现较复杂。另外,如果子窗口只是暂时处于无响应状态并且能够恢复正常的话,由于子窗口所在的进程已经被杀死,该子窗口无法被恢复,需要再次创建该子窗口,导致了系统资源的浪费。
[0024]有鉴于此,本发明实施例提供了一种应用程序中窗口的控制方法。在该控制方法中,创建应用程序中父窗口对应的子窗口时,创建该子窗口对应的代理窗口,设置该子窗口的父窗口为该代理窗口,设置该代理窗口的父窗口为该父窗口;其中,该代理窗口所在的线程通过异步消息与该子窗口所在的线程通信;该代理窗口所在线程检测所述子窗口的状态;当确定该子窗口处于无响应状态时,将该代理窗口设置为无父窗口 ;通过移除该代理窗口,将该子窗口从当前显示界面移除。
[0025]图1为本发明实施例提供的一种应用程序中窗口的控制方法的流程图。如图1所示,该方法包括如下步骤。
[0026]步骤11,创建应用程序中父窗口对应的子窗口时,创建该子窗口对应的代理窗口;设置该子窗口的父窗口属性为该代理窗口,设置该代理窗口的父窗口属性为该父窗口 ;该代理窗口所在的线程通过异步消息与该子窗口所在的线程通信。
[0027]在本发明实施例中,创建了应用程序中的父窗口之后,在需要创建该父窗口对应的子窗口时,不仅创建子窗口,还创建子窗口对应的代理窗口。将子窗口的父窗口属性设置为代理窗口,并将代理窗口的父窗口属性设置为该父窗口。
[0028]在本发明实施例中,代理窗口与子窗口位于不同的线程,代理窗口所在的线程通过异步消息与该子窗口所在的线程通信。另外,根据不同需要,代理窗口所在的线程与父窗口所在的线程可以相同也可以不同。在子窗口处于正常状态时,父窗口所在的线程也通过异步消息与该子窗口所在的线程通信。
[0029]另外,在窗口的显示控制中,通常子窗口叠加在父窗口之上。在本发明实施例中,该父窗口、代理窗口和子窗口的叠加顺序为该父窗口位于最底层,代理窗口位于中间层,子窗口位于最上层。
[0030]步骤12,代理窗口所在线程检测该子窗口的状态。
[0031]在本步骤中,代理窗口所在线程确定是否在预定时长内收到了子窗口发送的消息。当在预定时长内收到子窗口发送的消息,则确定该子窗口处于正常状态,当在预定时长内未收到子窗口发送的消息,则确定该子窗口处于无响应状态。在本发明一个实施例中,子窗口发送的消息可以是心跳消息。
[0032]在本发明一个实施例中,当代理窗口所在线程在预定时长内未收到子窗口发送的心跳消息时,代理窗口所在线程还可以进一步发送同步消息给子窗口,当未收到该同步消息的反馈时,确认子窗口处于无响应状态。
[0033]在本发明实施例中,代理窗口所在的线程主要用于检测子窗口的状态,对子窗口的其它控制操作可以由该子窗口的父窗口所在的线程进行。例如,当父窗口的大小改变时,父窗口所在线程通过发送异步消息调整子窗口的大小。
[0034]步骤13,当确定子窗口处于无响应状态时,将代理窗口的父窗口属性设置为无父窗口 ;通过移除代理窗口,将子窗口从当前显示界面移除。
[0035]在本步骤中,当确定子窗口处于无响应状态时,代理窗口的父窗口属性设置为无父窗口,即代理窗口和该父窗口之间不再具有父子关系,从而使该父窗口不会受到处于无响应状态的子窗口的影响。另外,通过将子窗口从当前显示界面移除,用户无法针对该子窗口进行操作,避免了子窗口的无响应状态的加剧。
[0036]在本步骤中,由于代理窗口与子窗口之间是父子关系,通过移除代理窗口的操作,可以同时将代理窗口和子窗口从当前显示界面移除。在本发明实施例中,移除代理窗口的方式可以是将代理窗口隐藏,或者将代理窗口移动到当前显示界面的之外。
[0037]在本发明实施例中,当确定子窗口处于无响应状态时,除了上述步骤13所述的操作,代理窗口所在线程还可以进一步在该子窗口所在的位置创建伪(ghost)窗口,并在伪窗口中显示该子窗口处于无响应状态时的图像,从而避免了在代理窗口和子窗口被移除后,由于没有子窗口内容的叠加造成的子窗口原来所在位置显示空白内容,从而为用户提供更好的浏览窗口内容的体验。如果用户针对该伪窗口的操作次数超过预定阈值,可以向用户显示该子窗口无响应的提示信息,避免用户继续针对伪窗口进行操作。
[0038]可见,根据本发明实施例提供的应用程序中窗口的控制方法,代理窗口能够及时发现子窗口处于无响应状态,将代理窗口的设置为无父窗口,并通过移除代理窗口,将子窗口从当前显示界面中移除。由于父窗口与代理窗口不存在父子关系,子窗口的无响应状态不会对父窗口的正常运行造成影响,避免父窗口进入无响应状态。另外,由于无需直接将处于无响应状态的子窗口所在的进程杀死,从而避免了系统进程资源的浪费。
[0039]在本发明实施例中,该方法还可以进一步包括如下步骤。
[0040]步骤14,当确定子窗口在预定时长内恢复到正常状态时,将代理窗口的父窗口属性设置为该父窗口;通过恢复代理窗口,在当前显示界面中恢复该子窗口。
[0041 ]在本步骤中,由于代理窗口与子窗口之间是父子关系,通过恢复代理窗口的操作,可以在当前显示界面中同时恢复代理窗口和子窗口。在本发明实施例中,根据移除代理窗口方式的不同,恢复代理窗口的方式可以是显示代理窗口,或者将代理窗口移动到当前显示界面的之内。
[0042]在本发明实施例中,如果在子窗口处于无响应状态时创建了伪窗口,则在本步骤中,当确定该子窗口在预定时长内恢复到正常状态时,销毁该伪窗口。
[0043]在本发明实施例中,如果代理窗口和子窗口位于不同的进程,当该子窗口在预定时长内未恢复到正常状态时,删除该子窗口所在的进程。
[0044]可见,根据本发明实施例提供的应用程序中窗口的控制方法,如果子窗口只是暂时处于无响应状态,一段时间后会恢复正常,通过应用本发明实施例,能够在该子窗口恢复正常时,在当前显示界面中恢复该子窗口,从而有效地避免暂时处于无响应状态的子窗口被误杀,无需重复创建相同的子窗口,节约了系统资源。
[0045]图2是本发明一个实施例中应用程序中窗口的控制装置的结构示意图。如图2所示,该应用程序中窗口的控制装置200包括处理器210、非易失性计算机可读存储器220和接口 230。这些组件通过总线240进行通信。处理器210可以通过接口 230获取用户针对窗口的操作,通过读取存储器220中的程序模块来实现本发明实施例提供的方案。
[0046]在本发明一个实施例中,存储在存储器220中的程序模块包括管理模块601,检测模块602,移除模块603。本文后续会对模块601?603的具体功能和工作原理做详述。
[0047]处理器210可以通过执行存储在存储器220中的程序模块,在创建应用程序中父窗口对应的子窗口时,创建子窗口对应的代理窗口,设置子窗口的父窗口属性为代理窗口,设置代理窗口的父窗口属性为父窗口 ;代理窗口所在的线程通过异步消息与子窗口所在的线程通信;代理窗口所在线程检测子窗口的状态;当确定子窗口处于无响应状态时,将代理窗口的父窗口属性设置为无父窗口 ;通过移除代理窗口,将子窗口从当前显示界面移除。
[0048]下面以浏览器为例,对本发明实施例提供的应用程序中窗口的控制方法进行说明。
[0049]图3为本发明一个实施例提供的应用程序中窗口的控制方法的流程图。在本实施例中,应用程序为浏览器,父窗口为浏览器的主窗口,也称为框架主窗口,子窗口主窗口中的至少一个网页窗口。
[0050]步骤31,在主窗口中创建网页窗口的同时,创建网页窗口对应的代理窗口,设置网页窗口的父窗口属性为代理窗口,设置代理窗口的父窗口属性为主窗口 ;代理窗口所在的线程通过异步消息与网页窗口所在的线程通信。
[0051 ] 在本发明实施例中,如图4所示,通过网页线程I创建网页窗口 1,通过网页线程2创建网页窗口2。通过主线程创建主窗口和与网页窗口 I和网页窗口 2分别对应的代理窗口 I和代理窗口 2。主窗口和代理窗口,以及代理窗口和网页窗口之间的父子关系用箭头表示。主线程与网页线程之间使用异步消息进行通信。例如,主线程在设置网页窗口 I状态时,不直接调用Win32API,而是向网页线程发送异步消息,网页线程根据收到的消息设置网页窗口 I的状态。又例如,当主窗口大小改变时,主线程向网页线程发送异步消息,网页线程根据收到的调整网页窗口 I和网页窗口 2的大小。
[0052]在本发明实施例中,位于最底层的主窗口的大小与浏览器的显示界面相同,除了为网页窗口预留的位置之外,还包括地址栏,工具栏等。位于中间层的代理窗口的大小与和位于最上层的网页窗口的大小相同。
[0053]步骤32,主线程检测网页窗口 I和网页窗口2的状态。
[0054]在本步骤中,主线程确定是否在预定时长内接收到网页窗口I和网页窗口 2发送的心跳消息。在本发明实施例中,该预定时长可以根据实际需要设置,例如该预定时长可以设置为3秒,则在本步骤中,如果主线程在3秒内没有收到网页窗口 2发送的心跳消息,则确定该网页窗口 2处于无响应状态,执行步骤33。
[0055]步骤33,当确定网页窗口 2处于无响应状态时,将代理窗口 2的父窗口属性设置为无父窗口,将代理窗口 2移动到当前显示界面之外,在网页窗口 2所在的位置创建伪窗口,并在伪窗口中显示网页窗口 2处于无响应状态时的图像。
[0056]在本发明实施例中,如图5所示,将代理窗口2的父窗口属性从主窗口修改为空缺(NULL),同时根据windows操作系统的窗口规则,将代理窗口的窗口属性由WS_CHILD改为WS_P0PUP,从而使主窗口脱离和代理窗口 2之间联系,避免主窗口受到代理窗口和网页窗口的影响。
[0057]在本步骤中,主线程将代理窗口2移动到当前显示界面之外,例如将代理窗口 2移动的距离设置为较大的值,使代理窗口 2移出显示屏幕。由于代理窗口 2是网页窗口 2的父窗口,网页窗口 2随着代理窗口 2同时移出显示屏幕。同时,主线程在网页窗口 2所在的位置创建伪窗口,其中伪窗口的父窗口属性为主窗口。主线程截取网页窗口2处于无响应状态时的图像,例如位图文件(bitmap),将该bitmap绘制到伪窗口中。经过上述处理,在网页窗口2无法响应之后,对于用户来说,显示界面显示的内容是不变的,不影响用户浏览网页窗口的内容。但是由于伪窗口中只是进行了图片显示,不会对用户的操作做出任何反应,因此用户的操作也就不会对网页窗口造成影响,避免了用户的操作使网页窗口2的无响应状态加剧。
[0058]另外,在本发明实施例中,为了避免用户频繁针对伪窗口进行无效操作,当接收到的用户针对伪窗口的操作的次数超过预定阈值时,向用户显示网页窗口2无响应的提示信息。例如,当用户针对伪窗口的操作超过3次后,向用户显示提示信息“当前窗口无响应,请稍候” O
[0059]步骤34,当确定网页窗口2在预定时长内恢复到正常状态时,将代理窗口 2的父窗口属性设置为主窗口,主线程将代理窗口 2移动到伪窗口所在位置,并销毁伪窗口。
[0060]在本发明实施例中,该预定时长可以根据需要设置,例如设置为10秒。主线程在确定网页窗口 2处于无响应状态之后,如果在10秒内再次收到了网页窗口 2的心跳消息,则确定网页窗口 2在预定时长内恢复到正常状态。主线程将代理窗口 2的父窗口属性从NULL修改为主窗口,以及将代理窗口 2的属性由WS_P0PUP改为WS_CHILD。
[0061 ]在本步骤中,主线程将代理窗口 2移动到伪窗口所在位置,同时销毁伪窗口。相应地,网页窗口 2作为代理窗口 2的子窗口也移动到原位置,进行正常显示。
[0062]步骤35,当网页窗口2在预定时长内未恢复到正常状态时,删除网页窗口 2所在的进程。
[0063]在本发明实施例中,如果网页窗口2在预定时长内未恢复到正常状态,可以不对该网页窗口 2所在线程进行处理。如果网页窗口 2和代理窗口 2位于不同进程,可以直接删除该网页窗口 2所在进程,释放系统资源。
[0064]在本实施例中,网页窗口2和代理窗口2位于不同进程,如果网页窗口2在10秒内未恢复到正常状态,将网页窗口 2所在的进程删除。
[0065]从上述实施例可以看出,在网页窗口处于无响应状态后,父窗口的状态不会受到影响。并且由于无需直接将处于无响应状态的子窗口所在的进程杀死,从而避免了系统进程资源的浪费。进一步的,如果子窗口只是暂时处于无响应状态,通过应用本发明实施例,能够在该子窗口恢复正常时,在当前显示界面中恢复该子窗口,从而有效地避免暂时处于无响应状态的子窗口被误杀,无需重复创建相同的子窗口,节约了系统资源。
[0066]图6为本发明一个实施例提供的应用程序中窗口的控制装置的结构的示意图。如图6所述,该应用程序中窗口的控制装置600包括管理模块601,检测模块602,移除模块603。
[0067]管理模块601用于在创建应用程序中父窗口对应的子窗口时,创建子窗口对应的代理窗口,设置子窗口的父窗口属性为代理窗口,设置代理窗口的父窗口属性为父窗口 ;代理窗口所在的线程通过异步消息与子窗口所在的线程通信。
[0068]检测模块602用于通过代理窗口所在线程检测子窗口的状态。
[0069]移除模块603用于当检测模块确定子窗口处于无响应状态时,将代理窗口的父窗口属性设置为无父窗口;通过移除代理窗口,将子窗口从当前显示界面移除。
[0070]在本发明一个实施例中,该管理模块601进一步用于当检测模块602确定子窗口在预定时长内恢复到正常状态时,将代理窗口的父窗口属性设置为父窗口 ;通过恢复代理窗口,在当前显示界面中恢复子窗口。
[0071]在本发明一个实施例中,管理模块601进一步用于当检测模块602确定子窗口处于无响应状态时,在子窗口所在的位置创建伪窗口,并在伪窗口中显示子窗口处于无响应状态时的图像;当确定子窗口在预定时长内恢复到正常状态时,销毁伪窗口。
[0072]在本发明一个实施例中,管理模块601进一步用于当接收到的用户针对伪窗口的操作的次数超过预定阈值时,向用户显示子窗口无响应的提示信息。
[0073]在本发明一个实施例中,检测模块602利用代理窗口所在的线程,通过确定是否在预定时长内接收到子窗口发送的心跳消息检测子窗口的状态。
[0074]在本发明一个实施例中,代理窗口和子窗口位于不同的进程,管理模块601进一步用于当子窗口在预定时长内未恢复到正常状态时,删除子窗口所在的进程。
[0075]根据本发明实施例提供的应用程序中窗口的控制装置,在网页窗口处于无响应状态后,父窗口的状态不会受到影响。并且由于无需直接将处于无响应状态的子窗口所在的进程杀死,从而避免了系统进程资源的浪费。进一步的,如果子窗口只是暂时处于无响应状态,通过应用本发明实施例,能够在该子窗口恢复正常时,在当前显示界面中恢复该子窗口,从而有效地避免暂时处于无响应状态的子窗口被误杀,无需重复创建相同的子窗口,节约了系统资源。
[0076]上述实施例提供的控制方法和控制装置实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0077]另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0078]另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和/或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
[0079]因此本发明还提供了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。
[0080]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0081]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1.一种应用程序中窗口的控制方法,其特征在于,所述方法包括: 创建所述应用程序中父窗口对应的子窗口时,创建所述子窗口对应的代理窗口,设置所述子窗口的父窗口属性为所述代理窗口,设置所述代理窗口的父窗口属性为所述父窗口 ;所述代理窗口所在的线程通过异步消息与所述子窗口所在的线程通信; 所述代理窗口所在线程检测所述子窗口的状态; 当确定所述子窗口处于无响应状态时,将所述代理窗口的父窗口属性设置为无父窗口 ;通过移除所述代理窗口,将所述子窗口从当前显示界面移除。2.根据权利要求1所述的方法,其特征在于,进一步包括: 当确定所述子窗口在预定时长内恢复到正常状态时,将所述代理窗口的父窗口属性设置为所述父窗口;通过恢复所述代理窗口,在所述当前显示界面中恢复所述子窗口。3.根据权利要求1所述的方法,其特征在于,进一步包括: 当确定所述子窗口处于无响应状态时,在所述子窗口所在的位置创建伪窗口,并在所述伪窗口中显示所述子窗口处于无响应状态时的图像; 当确定所述子窗口在预定时长内恢复到正常状态时,销毁所述伪窗口。4.根据权利要求3所述的方法,其特征在于,所述在所述伪窗口中显示所述子窗口处于无响应状态时的图像包括:截取所述子窗口处于无响应状态时的图像;将所述截取的图像绘制到所述伪窗口。5.根据权利要求3所述的方法,其特征在于,进一步包括: 当接收到的用户针对所述伪窗口的操作的次数超过预定阈值时,向所述用户显示所述子窗口无响应的提示信息。6.根据权利要求1所述的方法,其特征在于,所述代理窗口所在线程检测所述子窗口的状态包括: 所述代理窗口所在的线程确定是否在预定时长内接收到所述子窗口发送的心跳消息。7.根据权利要求1所述的方法,其特征在于,所述代理窗口和所述子窗口位于不同的进程;所述方法进一步包括: 当所述子窗口在预定时长内未恢复到正常状态时,删除所述子窗口所在的进程。8.一种应用程序中窗口的控制装置,其特征在于,所述装置包括: 管理模块,用于在创建所述应用程序中父窗口对应的子窗口时,创建所述子窗口对应的代理窗口,设置所述子窗口的父窗口属性为所述代理窗口,设置所述代理窗口的父窗口属性为所述父窗口;所述代理窗口所在的线程通过异步消息与所述子窗口所在的线程通?目; 检测模块,用于通过所述代理窗口所在线程检测所述子窗口的状态; 移除模块,用于当所述检测模块确定所述子窗口处于无响应状态时,将所述代理窗口的父窗口属性设置为无父窗口 ;通过移除所述代理窗口,将所述子窗口从当前显示界面移除。9.如权利要求8所述的控制装置,其特征在于,所述管理模块进一步用于当所述检测模块确定所述子窗口在预定时长内恢复到正常状态时,将所述代理窗口的父窗口属性设置为所述父窗口 ;通过恢复所述代理窗口,在所述当前显示界面中恢复所述子窗口。10.如权利要求8所述的控制装置,其特征在于,所述管理模块进一步用于当所述检测模块确定所述子窗口处于无响应状态时,在所述子窗口所在的位置创建伪窗口,并在所述伪窗口中显示所述子窗口处于无响应状态时的图像;当确定所述子窗口在预定时长内恢复到正常状态时,销毁所述伪窗口。11.如权利要求10所述的控制装置,其特征在于,所述管理模块进一步用于当接收到的用户针对所述伪窗口的操作的次数超过预定阈值时,向所述用户显示所述子窗口无响应的提不?目息。12.如权利要求8所述的控制装置,其特征在于,所述检测模块利用所述代理窗口所在的线程,通过确定是否在预定时长内接收到所述子窗口发送的心跳消息检测所述子窗口的状态。13.如权利要求8所述的控制装置,其特征在于,所述代理窗口和所述子窗口位于不同的进程;所述管理模块进一步用于当所述子窗口在预定时长内未恢复到正常状态时,删除所述子窗口所在的进程。
【文档编号】G06F3/0484GK105892817SQ201610201181
【公开日】2016年8月24日
【申请日】2016年4月1日
【发明人】尚子峰
【申请人】腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1