CN105843697B - 一种浏览器控件的中断恢复方法及系统 - Google Patents

一种浏览器控件的中断恢复方法及系统 Download PDF

Info

Publication number
CN105843697B
CN105843697B CN201610182600.3A CN201610182600A CN105843697B CN 105843697 B CN105843697 B CN 105843697B CN 201610182600 A CN201610182600 A CN 201610182600A CN 105843697 B CN105843697 B CN 105843697B
Authority
CN
China
Prior art keywords
moving object
independent process
thread
agent
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610182600.3A
Other languages
English (en)
Other versions
CN105843697A (zh
Inventor
李锦伟
贺跃松
陈志�
付俣
任寰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201610182600.3A priority Critical patent/CN105843697B/zh
Publication of CN105843697A publication Critical patent/CN105843697A/zh
Application granted granted Critical
Publication of CN105843697B publication Critical patent/CN105843697B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种浏览器控件的中断恢复方法及系统,涉及网络通信领域。所述方法包括:截获浏览器的页面进程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,代理对象在页面进程中运行;在独立于浏览器页面进程的独立进程中,创建实际要创建的活动对象,活动对象在独立进程中运行;代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。所述方法及系统,能够及时发现活动对象的中断,并在发现活动对象中断后重新创建活动对象,从而缩短了活动对象中断后的恢复时间,提高了用户的使用效率。

Description

一种浏览器控件的中断恢复方法及系统
本发明专利申请为申请日2012年12月25日,申请号201210572070.5,名称为“一种浏览器控件的中断恢复方法及系统”的中国发明专利申请的分案申请。
技术领域
本发明涉及网络通信技术领域,特别涉及一种浏览器控件的中断恢复方法及系统。
背景技术
ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。ActiveX控件技术是国际上通用的基于Windows平台的软件技术,除了在线杀毒控件之外,许多软件均采用此种方式开发,例如Flash动画播放控件、Microsoft MediaPlayer控件、CNNIC通用网址控件、网络实名控件等。
ActiveX控件需要嵌入到网页中,控件和页面会在同一个进程下运行。因此,当ActiveX控件出现崩溃后,会导致整个网页退出,正在书写的邮件博客等工作会丢失,影响了页面操作的稳定性。同时,现有的崩溃恢复机制是强制重新启动一个页面进程,这种恢复机制往往需要花费较多的时间,影响用户的使用效率。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种浏览器控件的中断恢复方法及系统。
依据本发明的一个方面,提供了一种浏览器控件的中断恢复方法,其包括步骤:
截获浏览器的页面进程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行;
在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行;
代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
可选地,所述代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象的步骤,具体包括:
代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃;
如果活动对象卡死,则代理对象停止与所述活动对象的通信并向独立进程发送激活信息,在独立进程中重新创建活动对象,
如果独立进程崩溃,则创建新的独立进程,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
可选地,所述代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃的步骤,具体包括:
代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃。
可选地,所述代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃的步骤中,
如果根据所述运行状态信息发现以下至少一项:活动对象所在线程的消息循环不活动,活动对象的窗口挂起,活动对象线程的一直忙,则判定活动对象卡死;
如果根据所述运行状态信息发现以下至少一项:独立进程中的主窗口不存在,活动对象中的窗口不存在,则判定独立进程崩溃。
可选地,所述方法还包括步骤:
代理对象定期询问活动对象的运行信息,并保存所述运行信息;
所述代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象,进一步为:
代理对象向独立进程发送所述激活信息和所述运行信息;
根据所述激活信息,在独立进程中重新创建活动对象;
根据所述运行信息,获取原活动对象的中断位置,令新创建的活动对象在所述中断位置处继续运行。
可选地,所述代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象,进一步包括:
所述代理对象通过与独立进程通信判断活动对象是否中断,如果是,提示用户活动对象中断;
接收用户的重激活指令;
代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
可选地,所述在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行,之后还包括步骤:
代理对象通过与独立进程通信,调用活动对象,和/或,
代理对象通过与独立进程通信,被活动对象调用。
可选地,页面进程为每个页面创建一个页面线程,截获页面线程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面线程中运行;
独立进程为每个页面创建一个独立于页面线程的对象线程,在所述对象线程中创建所述实际要创建的活动对象,所述活动对象在对象线程中运行;
代理对象通过与对象线程通信判断活动对象是否中断,如果是,代理对象向对象线程发送激活信息,在对象线程中重新创建活动对象。
可选地,所述方法还包括:
当活动对象出现问题时,对运行所述活动对象的对象线程执行挂起、降低权限或终止操作。
可选地,所述方法还包括:
独立进程创建活动对象时,代理对象将页面进程或页面线程的通信句柄和代理对象标识作为通信标识,传送给独立进程或对象线程;
独立进程创建活动对象后,活动对象将独立进程或对象线程的通信句柄和活动对象标识作为通信标识,传送给代理对象。
可选地,所述独立进程为每个页面创建一个独立于页面线程的对象线程,包括:
独立进程创建主线程,主线程为每个页面创建一个独立于页面线程的对象线程,所述主线程用于维护全局配置。
可选地,所述活动对象包括ActiveX对象。
根据本发明的另一方面,提供了一种浏览器控件的中断恢复系统,其包括:
页面进程模块,适于截获浏览器的页面进程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行;
独立进程模块,适于在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行;
恢复模块,适于令代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
可选地,所述恢复模块包括:
判断子模块,适于令代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃;
卡死子模块,适于在活动对象卡死时,令代理对象停止与所述活动对象的通信并向独立进程发送激活信息,在独立进程中重新创建活动对象;
崩溃子模块,适于在独立进程崩溃时,创建新的独立进程,令代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
可选地,所述判断子模块,适于令代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃。
可选地,所述判断子模块中,
如果根据所述运行状态信息发现以下至少一项:活动对象所在线程的消息循环不活动,活动对象的窗口挂起,活动对象线程的一直忙,则判定活动对象卡死;
如果根据所述运行状态信息发现以下至少一项:独立进程中的主窗口不存在,活动对象中的窗口不存在,则判定独立进程崩溃。
可选地,所述恢复模块还适于令代理对象定期询问活动对象的运行信息,并保存所述运行信息;以及,
还适于在活动对象中断时,令代理对象向独立进程发送所述激活信息和所述运行信息,根据所述激活信息在独立进程中重新创建活动对象,并且,根据所述运行信息,获取原活动对象的中断位置,令新创建的活动对象在所述中断位置处继续运行。
可选地,所述系统还包括:
交互模块,适于在活动对象中断的情况下,提示用户活动对象中断,以及接收用户的重激活指令,并将所述重激活指令发送给所述恢复模块。
可选地,所述系统还包括:
调用模块,适于令代理对象通过与独立进程通信,调用活动对象,和/或,代理对象通过与独立进程通信,被活动对象调用。
可选地,所述页面进程模块,还适于令页面进程为每个页面创建一个页面线程,截获页面线程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面线程中运行;
所述独立进程模块,还适于令独立进程为每个页面创建一个独立于页面线程的对象线程,在所述对象线程中创建所述实际要创建的活动对象,所述活动对象在对象线程中运行;
所述恢复模块,还适于令代理对象通过与对象线程通信判断活动对象是否中断,如果是,代理对象向对象线程发送激活信息,在对象线程中重新创建活动对象。
可选地,所述系统还包括:
错误处理模块,适于当活动对象出现问题时,对运行所述活动对象的对象线程执行挂起、降低权限或终止操作。
可选地,所述系统还包括:
代理对象通信标识传送模块,适于令独立进程模块创建活动对象时,代理对象将页面进程或页面线程的通信句柄和代理对象标识作为通信标识,传送给独立进程或对象线程;
活动对象通信标识传送模块,适于令独立进程模块创建活动对象后,活动对象将独立进程或对象线程的通信句柄和活动对象标识作为通信标识,传送给代理对象。
可选地,所述页面进程模块,还适于令独立进程创建主线程,主线程为每个页面创建一个对象线程,所述主线程用于维护全局配置。
本发明所述浏览器控件的中断恢复方法及系统,在页面进程中创建代理对象,在独立进程中创建活动对象,借助代理对象与独立进程和/或其活动对象之间的通信,及时发现活动对象的中断,并在发现活动对象中断后重新创建活动对象,从而缩短了活动对象中断后的恢复时间,提高了用户的使用效率。另外,通过保存活动对象的运行信息,可以令重新创建的活动对象在原活动对象的中断位置处开始运行,进一步提高了用户的使用效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的所述浏览器控件的中断恢复方法流程图;
图2示出了根据本发明一个实施例的所述浏览器控件的中断恢复方法应用于多页面时的流程图;
图3示出了根据本发明一个实施例的浏览器控件的中断恢复系统的模块结构示意图;
图4示出了根据本发明一个实施例的恢复模块的内部模块结构示意图;
图5示出了根据本发明另一个实施例的浏览器控件的中断恢复系统的模块结构示意图;
图6示出了根据本发明再一个实施例的浏览器控件的中断恢复系统的模块结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的所述浏览器控件的中断恢复方法流程图,如图1所示,所述方法包括步骤:
S100:截获浏览器的页面进程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行。
其中,所述的活动对象就是真实的浏览器控件,例如真实的ActiveX对象,即ActiveX控件;所述的代理对象可以是模拟的浏览器控件,例如模拟的ActiveX控件,所述代理对象在页面进程中运行。
具体举例说明本发明如下:
在网页中有ActiveX控件的情况下,在浏览器创建ActiveX控件时,会根据控件CLSID或者ProgID查询注册表,其中可以通过CLSIDFromProgID获取CLSID,由此查看系统是否已安装相应控件,若安装则会继续创建过程。浏览器通过调用CoGetClassObject得到相应控件的IUnknown指针,然后通过标准接口进行相互操作。CoGetClassObject执行过程为,通过CLSID去注册表查询ActiveX路径,获得ActiveX路径后,调用LoadLibrary加载ActiveX控件,调用其导出函数DllGetClassObject获得类厂指针(IClassFactory),然后调用IClassFactory的CreateInstance方法得到ActiveX控件对应的IUnknown指针。
在加载ActiveX控件时,拦截CoGetClassObject,创建一个ActiveX控件代理对象,该ActiveX控件代理对象包括一系列接口,例如IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调用IClassFactory的CreateInstance时,将所创建的ActiveX控件代理对象返回给ActiveX控件的IUnknown指针。
S200:在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行。
仍具体举例说明本发明如下:在页面激活所述ActiveX控件时,提取出该控件的属性、URL、大小等相关信息,然后创建一个独立进程。具体来说,创建一个文件(document),在其中插入一个对象,该独立进程调用CoGetClassObject,拦截该CoGetClassObject,再创建另一个ActiveX控件活动对象,该ActiveX控件活动对象包括一系列接口,例如IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调用IClassFactory的CreateInstance时,将所创建的该另一个ActiveX控件活动对象返回给独立进程的ActiveX控件的IUnknown指针。
S300:代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象,结束流程;否则,直接结束流程。
具体举例说明本发明如下:在所创建的两个ActiveX控件对象中分别创建一个与该控件对象关联的窗口以用来进行通信。具体来说两个控件对象可以针对大小、焦点、刷新、脚本以及其他信息进行交互。根据本发明的方法可以拦截以上两个进程中的所有请求,通过预先创建的两个ActiveX控件对象来实现这两个进程之间的信息交互。由此ActiveX控件的具体计算过程在独立进程中进行,因而不会影响原网页的进程。
所述步骤S300进一步包括:
S310:代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃。具体地,代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃。如果根据所述运行状态信息发现以下至少一项:活动对象所在线程的消息循环不活动,活动对象的窗口挂起,活动对象线程的一直忙,则判定活动对象卡死;如果根据所述运行状态信息发现以下至少一项:独立进程中的主窗口不存在,活动对象中的窗口不存在,则判定独立进程崩溃。
代理对象定期询问独立进程和/或其活动对象的运行状态信息,具体来说可以用很多方式实现这一监控动作,举例来说,可以在开启的独立进程中为每一个活动对象绑定一个消息窗口;令页面进程的代理对象定期地查询该消息窗口,以监控该活动对象是否正常运行。S320:如果活动对象卡死,则代理对象停止与所述活动对象的通信并向独立进程发送激活信息,在独立进程中重新创建活动对象。
S330:如果独立进程崩溃,则创建新的独立进程,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
通过上述方法步骤的执行,能够及时识别活动对象的中断,并在活动对象中断后对其及时重新激活,缩短响应时间。
另外,所述步骤S200之后还可以包括步骤:
P1:代理对象定期询问活动对象的运行信息,并保存所述运行信息。
相应地,所述步骤S300中,所述代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象,进一步为:
代理对象向独立进程发送所述激活信息和所述运行信息;
根据所述激活信息,在独立进程中重新创建活动对象;
根据所述运行信息,获取原活动对象的中断位置,令新创建的活动对象在所述中断位置处继续运行。
其中,所述激活信息主要是:活动对象的属性、URL、位置、大小等信息;所述运行信息是活动对象的运行进度信息。通过采用所述步骤P1,以及对所述步骤S300进行相应的改变,可以保证活动对象能够在中断位置处开始重新运行,相比现有技术中完全的重新启动,显然进一步提高了响应效率。
所述步骤S300中还可以由用户选择是否重新激活已经中断的活动对象以提高与用户的交互性能,具体地,其可以进一步包括:
所述代理对象通过与独立进程通信判断活动对象是否中断,如果是,提示用户活动对象中断;
接收用户的重激活指令;
代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
所述步骤S300之后还可以包括步骤:
S400:代理对象通过与独立进程通信,调用活动对象,和/或,代理对象通过与独立进程通信,被活动对象调用。
通常一个浏览器往往可以打开很多个页面来浏览不同的网页,参见图2,所述方法还可以应用于多页面的情况,此时可以多线程方式对应多个页面运行多个活动对象,具体地,所述方法步骤如下:
S100’:页面进程为每个页面创建一个页面线程,截获页面线程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面线程中运行.
S200’:独立进程为每个页面创建一个独立于页面线程的对象线程,在所述对象线程中创建所述实际要创建的活动对象,所述活动对象在对象线程中运行。该步骤中,独立进程创建主线程,主线程为每个页面创建一个独立于页面线程的对象线程,所述主线程用于维护全局配置。
并且,该步骤中,独立进程创建活动对象时,代理对象将页面进程或页面线程的通信句柄和代理对象标识作为通信标识,传送给独立进程或对象线程;独立进程创建活动对象后,活动对象将独立进程或对象线程的通信句柄和活动对象标识作为通信标识,传送给代理对象。
S300’:代理对象通过与对象线程通信判断活动对象是否中断,如果是,代理对象向对象线程发送激活信息,在对象线程中重新创建活动对象。
所述活动对象包括ActiveX对象,以ActiveX对象为例,则ActiveX对象在对象线程中运行,当ActiveX对象出现问题时,例如ActiveX对象陷入死循环时,可以对运行所述ActiveX对象的对象线程执行挂起操作,使得所述对象线程暂时不能运行;或者对运行所述ActiveX对象的对象线程执行降低权限操作;或者对运行所述ActiveX对象的对象线程执行终止操作,终止所述的对象线程。
在本申请所述的方法中,例如,针对IE浏览器中ActiveX控件的执行过程中,可以创建模拟的ActiveX类厂,取代真实的ActiveX类厂,在页面进程或页面线程模拟标准方式,创建代理对象,例如,参考如下的模型:
class CAxClassFactory:public IClassFactory
{
……
}
可以创建ActiveX代理类,用于完成真实ActiveX类的所有接口,并转发对ActiveX对象的初始化、传送数据、传送状态和执行回调等操作,例如,参考如下的模型:
ActiveX控件需要放在ActiveX容器中在浏览器的页面进程或页面线程中运行,因此代理对象要放入到真实容器中在页面进程或页面线程中运行,所述的真实容器就是真实的ActiveX容器,所以可以创建模拟容器即模拟的ActiveX容器,在独立进程或对象线程中实现页面环境,将ActiveX对象放入到真实容器中在独立进程或对象线程中运行,例如,参考如下的模型:
图3示出了根据本发明一个实施例的浏览器控件的中断恢复系统的模块结构示意图,如图3所示,所述系统包括:
页面进程模块100,适于截获浏览器的页面进程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行。
独立进程模块200,适于在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行。
恢复模块300,适于令代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
其中,图4示出了根据本发明一个实施例的恢复模块的内部模块结构示意图,如图4所示,所述恢复模块300包括:
判断子模块310,适于令代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃。
其中,所述判断子模块310,适于令代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃。具体地,如果根据所述运行状态信息发现以下至少一项:活动对象所在线程的消息循环不活动,活动对象的窗口挂起,活动对象线程的一直忙,则判定活动对象卡死;如果根据所述运行状态信息发现以下至少一项:独立进程中的主窗口不存在,活动对象中的窗口不存在,则判定独立进程崩溃。
卡死子模块320,适于在活动对象卡死时,令代理对象停止与所述活动对象的通信并向独立进程发送激活信息,在独立进程中重新创建活动对象;
崩溃子模块330,适于在独立进程崩溃时,创建新的独立进程,令代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
另外,所述恢复模块300还适于令代理对象定期询问活动对象的运行信息,并保存所述运行信息;以及,
还适于在活动对象中断时,令代理对象向独立进程发送所述激活信息和所述运行信息,根据所述激活信息在独立进程中重新创建活动对象,并且,根据所述运行信息,获取原活动对象的中断位置,令新创建的活动对象在所述中断位置处继续运行。
图5示出了根据本发明另一个实施例的浏览器控件的中断恢复系统的模块结构示意图,如图5所示,本实施例所述系统与上一实施例所述系统基本相同,其不同之处在于,该系统还包括:
交互模块400,适于在活动对象中断的情况下,提示用户活动对象中断,以及接收用户的重激活指令,并将所述重激活指令发送给所述恢复模块。
调用模块500,适于令代理对象通过与独立进程通信,调用活动对象,和/或,代理对象通过与独立进程通信,被活动对象调用。
图6示出了根据本发明再一个实施例的浏览器控件的中断恢复系统的模块结构示意图,如图6所示,本实施例所述系统与上一实施例所述系统基本相同,其不同之处仅在于:
所述页面进程模块100,还适于令页面进程为每个页面创建一个页面线程,截获页面线程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面线程中运行。所述页面进程模块100,还适于令独立进程创建主线程,主线程为每个页面创建一个对象线程,所述主线程用于维护全局配置。
所述独立进程模块200,还适于令独立进程为每个页面创建一个独立于页面线程的对象线程,在所述对象线程中创建所述实际要创建的活动对象,所述活动对象在对象线程中运行。
所述恢复模块300,还适于令代理对象通过与对象线程通信判断活动对象是否中断,如果是,代理对象向对象线程发送激活信息,在对象线程中重新创建活动对象。
并且,所述系统还包括:
错误处理模块600,适于当活动对象出现问题时,对运行所述活动对象的对象线程执行挂起、降低权限或终止操作。
代理对象通信标识传送模块700,适于令独立进程模块创建活动对象时,代理对象将页面进程或页面线程的通信句柄和代理对象标识作为通信标识,传送给独立进程或对象线程。
活动对象通信标识传送模块800,适于令独立进程模块创建活动对象后,活动对象将独立进程或对象线程的通信句柄和活动对象标识作为通信标识,传送给代理对象。
本发明实施例所述浏览器控件的中断恢复方法及系统,在页面进程中创建代理对象,在独立进程中创建活动对象,借助代理对象与独立进程和/或其活动对象之间的通信,及时发现活动对象的中断,并在发现活动对象中断后重新创建活动对象,从而缩短了活动对象中断后的恢复时间,提高了用户的使用效率。另外,通过保存活动对象的运行信息,可以令重新创建的活动对象在原活动对象的中断位置处开始运行,进一步提高了用户的使用效率。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的浏览器控件的中断恢复系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (23)

1.一种浏览器控件的中断恢复方法,其包括步骤:
截获浏览器的页面进程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行;所述活动对象是浏览器控件;
在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行;
代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
2.如权利要求1所述的方法,其特征在于,所述代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象的步骤,具体包括:
代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃;
如果活动对象卡死,则代理对象停止与所述活动对象的通信并向独立进程发送激活信息,在独立进程中重新创建活动对象,
如果独立进程崩溃,则创建新的独立进程,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
3.如权利要求2所述的方法,其特征在于,所述代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃的步骤,具体包括:
代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃。
4.如权利要求3所述的方法,其特征在于,所述代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃的步骤中,
如果根据所述运行状态信息发现以下至少一项:活动对象所在线程的消息循环不活动,活动对象的窗口挂起,活动对象线程的一直忙,则判定活动对象卡死;
如果根据所述运行状态信息发现以下至少一项:独立进程中的主窗口不存在,活动对象中的窗口不存在,则判定独立进程崩溃。
5.如权利要求1所述的方法,其特征在于,所述方法还包括步骤:
代理对象定期询问活动对象的运行信息,并保存所述运行信息;
所述代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象,进一步为:
代理对象向独立进程发送所述激活信息和所述运行信息;
根据所述激活信息,在独立进程中重新创建活动对象;
根据所述运行信息,获取原活动对象的中断位置,令新创建的活动对象在所述中断位置处继续运行。
6.如权利要求1所述的方法,其特征在于,所述代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象,进一步包括:
所述代理对象通过与独立进程通信判断活动对象是否中断,如果是,提示用户活动对象中断;
接收用户的重激活指令;
代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
7.如权利要求1所述的方法,其特征在于,所述在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行,之后还包括步骤:
代理对象通过与独立进程通信,调用活动对象,和/或,
代理对象通过与独立进程通信,被活动对象调用。
8.如权利要求1所述的方法,其特征在于,
页面进程为每个页面创建一个页面线程,截获页面线程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面线程中运行;
独立进程为每个页面创建一个独立于页面线程的对象线程,在所述对象线程中创建所述实际要创建的活动对象,所述活动对象在对象线程中运行;
代理对象通过与对象线程通信判断活动对象是否中断,如果是,代理对象向对象线程发送激活信息,在对象线程中重新创建活动对象。
9.根据权利要求8所述的方法,其特征在于,还包括:
当活动对象出现问题时,对运行所述活动对象的对象线程执行挂起、降低权限或终止操作。
10.根据权利要求8所述的方法,其特征在于,还包括:
独立进程创建活动对象时,代理对象将页面进程或页面线程的通信句柄和代理对象标识作为通信标识,传送给独立进程或对象线程;
独立进程创建活动对象后,活动对象将独立进程或对象线程的通信句柄和活动对象标识作为通信标识,传送给代理对象。
11.根据权利要求8所述的方法,其特征在于,所述独立进程为每个页面创建一个独立于页面线程的对象线程,包括:
独立进程创建主线程,主线程为每个页面创建一个独立于页面线程的对象线程,所述主线程用于维护全局配置。
12.如权利要求1所述的方法,其特征在于,所述活动对象包括ActiveX对象。
13.一种浏览器控件的中断恢复系统,其包括:
页面进程模块,适于截获浏览器的页面进程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行;所述活动对象是浏览器控件;
独立进程模块,适于在独立于浏览器页面进程的独立进程中,创建所述实际要创建的活动对象,所述活动对象在独立进程中运行;
恢复模块,适于令代理对象通过与独立进程和/或其活动对象通信判断活动对象是否中断,如果是,代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
14.如权利要求13所述的系统,其特征在于,所述恢复模块包括:
判断子模块,适于令代理对象通过与独立进程和/或其活动对象通信判断活动对象是否卡死和/或独立进程是否崩溃;
卡死子模块,适于在活动对象卡死时,令代理对象停止与所述活动对象的通信并向独立进程发送激活信息,在独立进程中重新创建活动对象;
崩溃子模块,适于在独立进程崩溃时,创建新的独立进程,令代理对象向独立进程发送激活信息,在独立进程中重新创建活动对象。
15.如权利要求14所述的系统,其特征在于,所述判断子模块,适于令代理对象定期询问独立进程和/或其活动对象的运行状态信息,并根据所述运行状态信息判断活动对象是否卡死和/或独立进程是否崩溃。
16.如权利要求15所述的系统,其特征在于,所述判断子模块中,
如果根据所述运行状态信息发现以下至少一项:活动对象所在线程的消息循环不活动,活动对象的窗口挂起,活动对象线程的一直忙,则判定活动对象卡死;
如果根据所述运行状态信息发现以下至少一项:独立进程中的主窗口不存在,活动对象中的窗口不存在,则判定独立进程崩溃。
17.如权利要求13所述的系统,其特征在于,
所述恢复模块还适于令代理对象定期询问活动对象的运行信息,并保存所述运行信息;以及,
还适于在活动对象中断时,令代理对象向独立进程发送所述激活信息和所述运行信息,根据所述激活信息在独立进程中重新创建活动对象,并且,根据所述运行信息,获取原活动对象的中断位置,令新创建的活动对象在所述中断位置处继续运行。
18.如权利要求13所述的系统,其特征在于,所述系统还包括:
交互模块,适于在活动对象中断的情况下,提示用户活动对象中断,以及接收用户的重激活指令,并将所述重激活指令发送给所述恢复模块。
19.如权利要求13所述的系统,其特征在于,所述系统还包括:
调用模块,适于令代理对象通过与独立进程通信,调用活动对象,和/或,代理对象通过与独立进程通信,被活动对象调用。
20.如权利要求13所述的系统,其特征在于,
所述页面进程模块,还适于令页面进程为每个页面创建一个页面线程,截获页面线程创建活动对象的过程,创建代理对象替换实际要创建的活动对象,所述代理对象在页面线程中运行;
所述独立进程模块,还适于令独立进程为每个页面创建一个独立于页面线程的对象线程,在所述对象线程中创建所述实际要创建的活动对象,所述活动对象在对象线程中运行;
所述恢复模块,还适于令代理对象通过与对象线程通信判断活动对象是否中断,如果是,代理对象向对象线程发送激活信息,在对象线程中重新创建活动对象。
21.如权利要求20所述的系统,其特征在于,所述系统还包括:
错误处理模块,适于当活动对象出现问题时,对运行所述活动对象的对象线程执行挂起、降低权限或终止操作。
22.如权利要求20所述的系统,其特征在于,所述系统还包括:
代理对象通信标识传送模块,适于令独立进程模块创建活动对象时,代理对象将页面进程或页面线程的通信句柄和代理对象标识作为通信标识,传送给独立进程或对象线程;
活动对象通信标识传送模块,适于令独立进程模块创建活动对象后,活动对象将独立进程或对象线程的通信句柄和活动对象标识作为通信标识,传送给代理对象。
23.如权利要求20所述的系统,其特征在于,所述页面进程模块,还适于令独立进程创建主线程,主线程为每个页面创建一个对象线程,所述主线程用于维护全局配置。
CN201610182600.3A 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统 Active CN105843697B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610182600.3A CN105843697B (zh) 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610182600.3A CN105843697B (zh) 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统
CN201210572070.5A CN103064750B (zh) 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201210572070.5A Division CN103064750B (zh) 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统

Publications (2)

Publication Number Publication Date
CN105843697A CN105843697A (zh) 2016-08-10
CN105843697B true CN105843697B (zh) 2019-05-24

Family

ID=48107383

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610182600.3A Active CN105843697B (zh) 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统
CN201210572070.5A Active CN103064750B (zh) 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201210572070.5A Active CN103064750B (zh) 2012-12-25 2012-12-25 一种浏览器控件的中断恢复方法及系统

Country Status (1)

Country Link
CN (2) CN105843697B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014101455A1 (zh) * 2012-12-25 2014-07-03 北京奇虎科技有限公司 浏览器活动对象的执行方法、系统及浏览器
CN105843697B (zh) * 2012-12-25 2019-05-24 北京奇虎科技有限公司 一种浏览器控件的中断恢复方法及系统
CN104461829B (zh) * 2014-12-15 2016-08-24 北京奇虎科技有限公司 基于窗口应用的计算设备优化方法及设备
CN108958980B (zh) * 2018-07-23 2021-07-09 Oppo(重庆)智能科技有限公司 防止Activity生命周期异常的方法、电子装置及计算机可读存储介质
CN110879757B (zh) * 2018-09-05 2024-02-27 广州弘度信息科技有限公司 客户端异常运行时的重启方法、装置和计算机设备
CN110781080B (zh) * 2019-10-11 2023-06-30 北京小米移动软件有限公司 程序调试方法及装置、存储介质
CN113986447B (zh) * 2021-12-24 2022-03-29 畅捷通信息技术股份有限公司 一种本地应用服务与浏览器的交互方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192174A (zh) * 2006-11-30 2008-06-04 英业达股份有限公司 磁盘阵列装置容量扩充中断后恢复处理方法及系统
US7752495B2 (en) * 2004-07-09 2010-07-06 International Business Machines Corporation System and method for predictive processor failure recovery
CN101996106A (zh) * 2010-12-17 2011-03-30 南京中兴力维软件有限公司 一种对软件运行状态进行监控的方法
CN102156663A (zh) * 2011-03-22 2011-08-17 北京书生国际信息技术有限公司 一种实现插件的方法和装置
CN102314510A (zh) * 2011-09-15 2012-01-11 奇智软件(北京)有限公司 一种浏览器控件执行方法及系统
CN103064750B (zh) * 2012-12-25 2016-04-27 北京奇虎科技有限公司 一种浏览器控件的中断恢复方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752495B2 (en) * 2004-07-09 2010-07-06 International Business Machines Corporation System and method for predictive processor failure recovery
CN101192174A (zh) * 2006-11-30 2008-06-04 英业达股份有限公司 磁盘阵列装置容量扩充中断后恢复处理方法及系统
CN101996106A (zh) * 2010-12-17 2011-03-30 南京中兴力维软件有限公司 一种对软件运行状态进行监控的方法
CN102156663A (zh) * 2011-03-22 2011-08-17 北京书生国际信息技术有限公司 一种实现插件的方法和装置
CN102314510A (zh) * 2011-09-15 2012-01-11 奇智软件(北京)有限公司 一种浏览器控件执行方法及系统
CN103064750B (zh) * 2012-12-25 2016-04-27 北京奇虎科技有限公司 一种浏览器控件的中断恢复方法及系统

Also Published As

Publication number Publication date
CN103064750B (zh) 2016-04-27
CN103064750A (zh) 2013-04-24
CN105843697A (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
CN105843697B (zh) 一种浏览器控件的中断恢复方法及系统
CN106133683B (zh) 计算系统中的架构模式配置
EP2368189B1 (en) Debugging pipeline
CN101266563B (zh) 故障防护计算机支持助理
US7870537B2 (en) System and method for real-time applications modification
US7114159B2 (en) Processing resource for use in a distributed processing framework system and methods for implementing the same
US8756577B2 (en) Collaborative software debugging in a distributed system with private debug sessions
US20070168985A1 (en) Thread debugging device, thread debugging method and information storage medium
US20160004628A1 (en) Parallel test execution framework for multiple web browser testing
CN102207896A (zh) 虚拟机崩溃文件生成技术
US10817819B2 (en) Workflow compilation
CN103197949B (zh) 用于利用具有至少两个虚拟机的硬件平台的资源的方法和装置
CN103336705A (zh) 脚本处理和工作流系统间的自动转码和语义自适应
WO2009055753A2 (en) Processing model-based commands for distributed applications
US20080244337A1 (en) Method and System for Automated Handling of Errors in Execution of System Management Flows Consisting of System Management Tasks
US20120278790A1 (en) Collaborative Software Debugging In A Distributed System With Real-Time Variable Modification Indicators
CN114064152B (zh) 基于动态加载的嵌入式多核调试系统及其调试方法
CN105117346A (zh) 虚拟化平台的分布式系统自动化测试方法及系统
CN103235755A (zh) 一种bios远程网络调试方法
CN105740139A (zh) 一种基于虚拟环境的嵌入式软件调试方法
CN108427640A (zh) 一种在用户态下调试驱动程序的方法
CN107479984A (zh) 基于消息的分布式空间数据处理系统
CN103077092B (zh) 浏览器控件恢复方法及系统
CN114047949A (zh) 一种应用系统国产平台迁移适配方法
CN110941503A (zh) 故障处理方法、装置及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220715

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right