《浏览器活动对象的创建方法、装置及浏览器.pdf》由会员分享,可在线阅读,更多相关《浏览器活动对象的创建方法、装置及浏览器.pdf(21页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103077194 A(43)申请公布日 2013.05.01CN103077194A*CN103077194A*(21)申请号 201210572420.8(22)申请日 2012.12.25G06F 17/30(2006.01)G06F 9/54(2006.01)(71)申请人北京奇虎科技有限公司地址 100088 北京市西城区新街口外大街28号D座112室(德胜园区)申请人奇智软件(北京)有限公司(72)发明人李锦伟 贺跃松 陈志 付俣任寰(74)专利代理机构北京市浩天知识产权代理事务所 11276代理人靳春鹰 宋菲(54) 发明名称浏览器活动对象的创建方法、装。
2、置及浏览器(57) 摘要本发明公开了一种浏览器活动对象的创建方法、装置及浏览器。其中根据本发明的一个方面提供的浏览器活动对象的创建方法包括:在浏览器创建活动对象之前,阻止创建所述活动对象;根据用户发起的执行所述活动对象实现的功能的请求,继续创建所述活动对象,而后执行所述活动对象实现的功能。该方法与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求执行活动对象实现的功能时,无需刷新页面,实现了活动对象实现的功能的即点即执行。(51)Int.Cl.权利要求书2页 说明书12页 附图6页(19)中华人民共和国国家知识产权局(12)发明专利申。
3、请权利要求书2页 说明书12页 附图6页(10)申请公布号 CN 103077194 ACN 103077194 A1/2页21.一种浏览器活动对象的创建方法,包括:在浏览器创建活动对象之前,阻止创建所述活动对象;根据用户发起的执行所述活动对象实现的功能的请求,继续创建所述活动对象,而后执行所述活动对象实现的功能。2.根据权利要求1所述的方法,所述在浏览器创建活动对象之前,阻止创建所述活动对象的步骤包括:在浏览器的页面进程中阻止创建活动对象。3.根据权利要求2所述的方法,所述根据用户发起的执行所述活动对象实现的功能的请求,继续创建所述活动对象,而后执行所述活动对象实现的功能的步骤包括:截获浏览。
4、器的页面进程创建活动对象的操作,在浏览器的页面进程创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行;在独立于所述浏览器的页面进程的独立进程中,创建所述活动对象;通过代理对象与独立进程通信调用活动对象,和/或,代理对象与独立进程通信被活动对象调用,执行所述活动对象实现的功能。4.根据权利要求1至3任一项所述的方法,所述阻止创建所述活动对象的步骤包括:获取所述活动对象的类标识,停止执行根据所述活动对象的类标识查询注册表的操作。5.根据权利要求4所述的方法,所述继续创建所述活动对象的步骤包括:根据所述活动对象的类标识,继续执行查询注册表的操作。6.一种浏览器活动对象的创建装置,包括。
5、:阻止模块,适于在浏览器创建活动对象之前,阻止创建所述活动对象;第一创建模块,适于根据用户发起的执行所述活动对象实现的功能的请求,继续创建所述活动对象;执行模块,适于在所述第一创建模块创建所述活动对象之后,执行所述活动对象实现的功能。7.根据权利要求6所述的装置,所述装置包括页面进程模块,所述阻止模块、第一创建模块和执行模块都是所述页面进程模块的子模块;所述阻止模块具体适于在页面进程中阻止创建活动对象。8.根据权利要求6所述的装置,所述装置包括页面进程模块和独立进程模块;所述阻止模块是所述页面进程模块的子模块,所述第一创建模块和执行模块是所述独立进程模块的子模块;所述页面进程模块还包括:第二创。
6、建模块,适于根据用户发起的执行所述活动对象实现的功能的请求,截获浏览器的页面进程加载活动对象的操作,在浏览器的页面进程创建代理对象替换实际要创建的活动对象,所述代理对象在页面进程中运行;所述第一创建模块具体适于在独立于所述浏览器的页面进程的独立进程中,创建所述活动对象;所述装置还包括分别在所述页面进程模块和所述独立进程模块中创建的通信窗口,所述执行模块具体适于通过代理对象经由所述通信窗口与独立进程通信调用活动对象,和/或,代理对象经由所述通信窗口与独立进程通信被活动对象调用,执行所述活动对象实现的功能。9.根据权利要求6至8任一项所述的装置,所述阻止模块具体适于获取所述活动对象权 利 要 求 。
7、书CN 103077194 A2/2页3的类标识,停止执行根据所述活动对象的类标识查询注册表的操作。10.根据权利要求7所述的装置,所述第一创建模块具体适于根据所述活动对象的类标识,继续执行查询注册表的操作。11.一种包括权利要求6至10任一项所述的浏览器活动对象的创建装置的浏览器。权 利 要 求 书CN 103077194 A1/12页4浏览器活动对象的创建方法、 装置及浏览器技术领域0001 本发明涉及计算机网络技术领域,具体涉及一种浏览器活动对象的创建方法、装置及浏览器。背景技术0002 ActiveX插件以前也叫做OLE(Object Linking and Embedding,对象链。
8、接与嵌入)控件或OCX(OLE Control eXtension,对象类别扩充)控件,它是一些软件组件或对象,可以将其嵌入到WEB网页或其它应用程序中。当在浏览器中加载ActiveX插件时,也可称该ActiveX插件为活动对象。如果ActiveX插件被嵌入到网页中,在用户打开网页时,会自动触发ActiveX插件的加载和播放。目前,很多网页上都嵌入有各种音视频插件,例如Flash插件,其内容可能是一些广告或用户并不关心的内容。只要用户打开网页就会在第一时间自动加载播放这些Flash内容。对于用户来说,这种不必要的插件播放造成了用户资源的浪费,例如浪费电力、带宽和系统资源,而且还延长了页面打开时。
9、间。0003 现有技术提供了一种拦截Flash创建的方法,使用自带的swf,替换需要创建的Flash来实现,swf是Flash本地的一种支持矢量和点阵图形的动画文件格式。但是由于在页面的创建过程中可能需要与Flash进行交互,如果将Flash替换为swf,则因无法完成交互而无法创建Flash。当用户需要重新播放Flash时,必须刷新页面,重新创建Flash才能进行播放。发明内容0004 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的浏览器活动对象的创建方法和相应的浏览器活动对象的创建装置及浏览器。0005 根据本发明的一个方面,提供了一种浏览器活动对象的创建方法。
10、,包括:在浏览器创建活动对象之前,阻止创建所述活动对象;根据用户发起的执行所述活动对象实现的功能的请求,继续创建所述活动对象,而后执行所述活动对象实现的功能。0006 根据本发明的一个方面,提供了一种浏览器活动对象的创建装置,包括:阻止模块,适于在浏览器创建活动对象之前,阻止创建所述活动对象;第一创建模块,适于根据用户发起的执行所述活动对象实现的功能的请求,继续创建所述活动对象;执行模块,适于在所述第一创建模块创建所述活动对象之后,执行所述活动对象实现的功能。0007 根据本发明的一方面,提供了一种包括上述浏览器活动对象的创建装置的浏览器。0008 根据本发明的一个方面提供的方案,在浏览器的页。
11、面进程创建活动对象之前,默认阻止创建该活动对象;在用户发起执行活动对象实现的功能的请求后,继续创建活动对象,并在活动对象创建完成后,执行活动对象实现的功能。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求执行活动对象实现的功能时,无需刷新页面,实现了活动对象实现的功能的即点即执说 明 书CN 103077194 A2/12页5行。0009 根据本发明的另一个方面提供的方案,在浏览器创建活动对象之后,通过拦截线程消息循环中的定时消息或对活动对象的属性进行修改,阻止执行活动对象实现的功能;在用户发起执行活动对象实现的功能的请求后,通过。
12、取消拦截线程消息循环中的定时消息或对活动对象的属性进行再修改,继续执行活动对象实现的功能。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求执行活动对象实现的功能时,无需刷新页面,实现了活动对象实现的功能的即点即执行。0010 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明0011 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用。
13、于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:0012 图1示出了根据本发明第一个实施例的浏览器活动对象的创建方法的流程图;0013 图2示出了根据本发明第二个实施例的浏览器活动对象的创建方法的流程图;0014 图3示出了根据本发明第三个实施例的浏览器活动对象的创建方法的流程图;0015 图4示出了根据本发明第四个实施例的浏览器活动对象的创建方法的流程图;0016 图5示出了根据本发明第五个实施例的浏览器活动对象的创建装置的结构框图;0017 图6示出了根据本发明第六个实施例的浏览器活动对象的创建装置的结构框图;0018 图7。
14、示出了根据本发明第七个实施例的浏览器活动对象的创建装置的结构框图;0019 图8示出了根据本发明第八个实施例的浏览器活动对象的创建装置的结构框图。具体实施方式0020 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。0021 在以下几个实施例中,以创建Flash插件为例进行说明,但本发明不仅限于是Flash插件,还可以是其它ActiveX插件,如百度影音、QVOD(快播)等插件。0022。
15、 图1示出了根据本发明第一个实施例的浏览器活动对象的创建方法100的流程图。如图1所示,方法100始于步骤S101,其中在浏览器的页面进程创建Flash插件之前,阻止创建该Flash插件。具体来说,在页面中有Flash插件的情况下,浏览器的页面进程通过CLSIDFromProgID方法获取Flash插件的类标识(CLSID)或者组件的字符串标识符(ProgID),按照现有流程,随后页面进程根据Flash插件的CLSID或ProgID查询注册表,用以查看系统是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。但本方法与现有流程不同的是,在获取CLSID或ProgID后,判断其是否为。
16、Flash插件的CLSID或说 明 书CN 103077194 A3/12页6ProgID,若是则停止执行查询注册表的动作,这样该Flash插件就不会被创建。需要说明的是,停止执行查询注册表的动作是阻止创建Flash插件的一种可选的实施方式,本方法也可在查询注册表确认已安装Flash插件之后,阻止进一步创建该Flash插件。通过本步骤,虽然页面中有Flash插件,但在页面打开后由于阻止创建该Flash插件,页面中并不会播放对应的Flash内容。0023 随后,方法100进入步骤S102,其中根据用户发起的执行Flash插件功能的请求,继续创建Flash插件,在创建完成后执行Flash插件的功能。
17、,即播放对应的Flash内容。在页面打开后,如果用户想要观看Flash内容,可以点击播放Flash,页面进程收到用户点击播放Flash的请求,不再阻止Flash插件的创建,继续创建Flash插件。以之前停止执行查询注册表的动作为例,页面进程根据Flash插件的CLSID或ProgID继续执行查询注册表的操作,用以查看系统是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。在Flash插件创建完成后,按照默认的属性就会播放对应的Flash内容,由此实现了Flash插件对应的Flash内容的即点即播。0024 根据本实施例提供的浏览器活动对象的创建方法,在浏览器的页面进程创建Flas。
18、h插件之前,默认阻止创建该Flash插件;在用户发起播放Flash的请求后,继续创建Flash插件,并在Flash插件创建完成后,播放对应的Flash内容,由此实现了Flash插件对应的Flash内容的即点即播。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求播放Flash内容时,无需刷新页面,实现了Flash内容的即点即播。而且,本实施例提供的方法在加载页面时,默认阻止创建Flash插件,将有限的资源用于加载页面,提升了页面的加载速度。0025 图2示出了根据本发明第二个实施例的浏览器活动对象的创建方法200的流程图。与上述第一。
19、个实施例不同的是,在用户发起执行活动对象实现的功能的请求之后,通过在页面进程中创建代理对象,而在独立进程中继续创建活动对象,使得真实的Flash插件与页面进程分离。如图2所示,方法200始于步骤S201,在浏览器的页面进程创建Flash插件之前,阻止创建该Flash插件。在页面中有Flash插件的情况下,浏览器的页面进程通过CLSIDFromProgID方法获取Flash插件的CLSID或者ProgID,在获取CLSID或ProgID后,判断其是否为Flash插件的CLSID或ProgID,若是则停止执行查询注册表的动作,这样该Flash插件就不会被创建。停止执行查询注册表的动作是阻止创建Fl。
20、ash插件的一种可选的实施方式,本方法也可在查询注册表确认已安装Flash插件之后,阻止进一步创建该Flash插件。通过本步骤,虽然页面中有Flash插件,但在页面打开后由于阻止创建该Flash插件,页面中并不会播放对应的Flash内容。0026 随后,方法200进入步骤S202,其中根据用户发起的执行Flash插件功能的请求,截获浏览器的页面进程创建Flash插件活动对象的操作,在浏览器的页面进程创建Flash插件代理对象替换实际要创建的Flash插件活动对象,该Flash插件代理对象在页面进程中运行。具体来说,在页面打开后,如果用户想要观看Flash内容,可以点击播放Flash,页面进程收。
21、到用户点击播放Flash的请求,不再阻止Flash插件的创建,继续创建Flash插件。以之前停止执行查询注册表的动作为例,页面进程根据Flash插件的CLSID或ProgID继续执行查询注册表的操作,用以查看系统是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。这里,在页面进程准备进一步创建Flash插件时,拦说 明 书CN 103077194 A4/12页7截CoGetClassObject,创建Flash插件代理对象,该Flash插件代理对象包括一系列接口,包括IUnknown指针(本文也称为接口指针)将会调用的很多标准接口,例如IOleObject、IViewObject。
22、等。然后在调用IClassFactory的CreateInstance时,将所创建的Flash插件代理对象返回给页面进程的IUnknown指针。0027 随后,方法200进入步骤S203,其中创建独立于页面进程的独立进程,在该独立进程中,创建Flash插件活动对象,这里的Flash插件活动对象才是真正的Flash插件。具体地,在页面进程激活Flash插件代理对象时,提取出该Flash插件的属性、URL、大小等相关信息,然后创建一个独立进程。具体来说,创建一个文件(document),在其中插入一个对象(object),该独立进程调用CoGetClassObject,拦截该CoGetClassO。
23、bject,创建一个Flash插件活动对象。该Flash插件活动对象包括一系列的接口,包括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调用IClassFactory的CreateInstance时,将所创建的Flash插件活动对象返回给独立进程的IUnknown指针。接着,在Flash插件代理对象和Flash插件活动对象中分别创建与插件对象关联的窗口,用于使Flash插件代理对象和Flash插件活动对象进行通信。通过这两个窗口,两个对象可以针对Flash的大小、焦点、刷新、脚本以及其它信息进行交互。0028 随后,方法200进入步骤S2。
24、04,通过Flash插件代理对象与独立进程通信调用Flash插件活动对象,和/或,Flash插件代理对象与独立进程通信被Flash插件活动对象调用,执行Flash插件活动对象实现的功能。在Flash插件活动对象创建完成后,根据用户点击播放Flash的请求,通过Flash插件代理对象与独立进程通信调用Flash插件活动对象,使Flash插件活动对象播放对应的Flash内容,由此实现了Flash插件对应的Flash内容的即点即播。0029 根据本实施例提供的浏览器活动对象的创建方法,在浏览器的页面进程创建Flash插件之前,默认阻止创建该Flash插件;在用户发起播放Flash的请求后,在独立进程。
25、中创建真正的Flash插件,并在真正的Flash插件创建完成后,通过调用真正的Flash插件播放对应的Flash内容,由此实现了Flash插件对应的Flash内容的即点即播。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求播放Flash内容时,无需刷新页面,实现了Flash内容的即点即播。而且,本实施例提供的方法在加载页面时,默认阻止创建Flash插件,将有限的资源用于加载页面,提升了页面的加载速度。进一步的,在本方法中,通过在页面进程中运行代理对象,而在独立进程中运行活动对象,使得真正的Flash插件与页面进程分离,从而使Fla。
26、sh插件出现问题时不会影响页面进程,提高了浏览器的稳定性,尤其是当Flash插件出现病毒等安全性问题时,也不会对页面进程产生影响,提高了浏览器的安全性;同时,页面进程出现问题不会影响Flash插件的正常运行,提高了插件的稳定性。0030 图3示出了根据本发明第三个实施例的浏览器活动对象的创建方法300的流程图。如图3所示,方法300始于步骤S301,其中在浏览器的页面进程创建Flash插件之后,通过拦截线程消息循环中的定时消息或通过对Flash插件的属性进行修改,阻止执行Flash插件实现的功能,即阻止Flash插件播放对应的Flash内容。在页面中有Flash插件的情况下,浏览器的页面进程通。
27、过CLSIDFromProgID方法获取Flash插件的CLSID或者ProgID,随后页面进程根据Flash插件的CLSID或ProgID查询注册表,用以查看系统说 明 书CN 103077194 A5/12页8是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。页面进程通过调用CoGetClassObject得到Flash插件的IUnknown指针,根据IUnknown指针调用标准接口进行相关操作,由此完成Flash插件的创建。其中CoGetClassObject执行过程为:通过CLSID去注册表查询ActiveX路径,获得ActiveX路径后,调用LoadLibrary加载。
28、Flash插件,调用导出函数DllGetClassObject获得类厂指针(IClassFactory),然后调用IClassFactory的CreatInstance方法得到Flash插件对应的IUnknown指针。在得到IUnknown指针的情况下,通过调用相关接口可以获取Flash插件的默认属性,并对其进行修改。通常情况下,Flash插件的默认属性为播放,此时将Flash插件的默认属性由播放修改为暂停或停止,就达到了阻止Flash插件播放Flash内容的目的。具体来说,根据Flash插件的IUnknown指针,可以查找到记录Flash插件属性的函数,调用该函数就可对Flash插件的属性进。
29、行修改。对Flash插件的属性进行修改是阻止Flash插件播放Flash内容的一种可选的实现方式,这种实现方式适用于播放动画的Flash插件。本方法还提供了另一种阻止Flash插件播放Flash内容的实现方式,即拦截线程消息循环中的定时消息,这种实现方式的适用范围更广,播放动画和视频的Flash插件都适用。具体来说,线程消息循环中的定时消息(如0x401消息)是Flash插件的驱动消息,Flash插件只有定时接收到该定时消息,才会执行其相应的功能,本方法通过拦截该定时消息,使Flash插件接收不到这个消息,那么Flash插件就不会播放对应的Flash内容。0031 可选地,在步骤S301之后,。
30、方法300进入步骤S302,其中拦截Flash插件的绘制函数,调用自定义的绘制函数绘制自定义界面,在浏览器的指定位置显示该自定义界面。在经过步骤S301阻止播放Flash内容后,在浏览器的原本该显示Flash内容的指定位置就会出现停止播放的界面,本方法可以将该停止播放的界面替换为自定义界面,例如空屏、自定义图片或自定义Flash等。具体采用的方法就是拦截Flash插件的绘制函数,该绘制函数用于绘制停止播放的界面,调用自定义的绘制函数绘制自定义界面并显示。0032 随后,方法300进入步骤S303,其中根据用户发起的执行Flash插件实现的功能的请求,通过取消拦截线程循环中的定时消息或者通过对F。
31、lash插件的属性进行再修改,继续执行Flash插件实现的功能,即继续播放Flash内容。若在步骤S301中通过对Flash插件的属性进行修改来阻止Flash插件播放Flash内容,本步骤则对Flash插件的属性进行再修改,即将Flash插件的属性由暂停或停止修改为播放,这样Flash插件就可以继续播放对应的Flash内容。若在步骤S301中通过拦截定时消息阻止Flash插件播放Flash内容,本步骤则取消拦截该定时消息,使Flash插件继续播放对应的Flash内容。0033 根据本实施例提供的浏览器活动对象的创建方法,在浏览器的页面进程创建Flash插件之后,通过拦截线程消息循环中的定时消息。
32、或对Flash插件的属性进行修改,阻止Flash插件播放Flash内容;在用户发起播放Flash的请求后,通过取消拦截线程消息循环中的定时消息或对Flash插件的属性进行再修改,使Flash插件继续播放Flash内容,由此实现了Flash插件对应的Flash内容的即点即播。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求播放Flash内容时,无需刷新页面,实现了Flash内容的即点即播。而且,本方法在阻止Flash插件播放Flash内容时,已经创建了Flash插件,在用户再发起播放Flash的请求后,不需要再创建Flash插件,可。
33、以直接启动播放,响应时间较短。说 明 书CN 103077194 A6/12页90034 图4示出了根据本发明第四个实施例的浏览器活动对象的创建方法400的流程图。与上述第三个实施例不同的是,本实施例是在页面进程中创建代理对象,而在独立进程中继续创建活动对象,使得真实的Flash插件与页面进程分离。如图4所示,方法400始于步骤S401,截获浏览器的页面进程创建Flash插件活动对象的操作,在浏览器的页面进程创建Flash插件代理对象替换实际要创建的Flash插件活动对象,该Flash插件代理对象在页面进程中运行。具体来说,在页面中有Flash插件的情况下,在页面进程准备创建Flash插件时,。
34、拦截CoGetClassObject,创建Flash插件代理对象,该Flash插件代理对象包括一系列接口,包括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调用IClassFactory的CreateInstance时,将所创建的Flash插件代理对象返回给页面进程的IUnknown指针。0035 随后,方法400进入步骤S402,其中创建独立于页面进程的独立进程,在该独立进程中,创建Flash插件活动对象,这里的Flash插件活动对象才是真正的Flash插件。具体地,在页面进程激活Flash插件代理对象时,提取出该Flash插件的属性、。
35、URL、大小等相关信息,然后创建一个独立进程。具体来说,创建一个文件(document),在其中插入一个对象(object),该独立进程调用CoGetClassObject,拦截该CoGetClassObject,创建一个Flash插件活动对象。该Flash插件活动对象包括一系列的接口,包括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调用IClassFactory的CreateInstance时,将所创建的Flash插件活动对象返回给独立进程的IUnknown指针。接着,在Flash插件代理对象和Flash插件活动对象中分别创建与插件对。
36、象关联的窗口,用于使Flash插件代理对象和Flash插件活动对象进行通信。通过这两个窗口,两个对象可以针对Flash的大小、焦点、刷新、脚本以及其它信息进行交互。0036 随后,方法400进入步骤S403,其中通过拦截线程消息循环中的定时消息或通过对Flash插件活动对象的属性进行修改,阻止执行Flash插件活动对象实现的功能,即阻止Flash插件播放对应的Flash内容。本步骤的相关内容与实施例三类似,不同之处在于本步骤是在独立进程中执行的,而实施例三的相应步骤是在页面进程中执行的。0037 可选地,在步骤S403之后,方法400进入步骤S404,其中调用自定义的绘制函数绘制自定义界面,在。
37、浏览器的指定位置显示该自定义界面。在经过步骤S403阻止播放Flash内容后,在浏览器的原本该显示Flash内容的指定位置就会出现停止播放的界面,本方法可以将该停止播放的界面替换为自定义界面,如空屏、自定义图片或自定义Flash等。具体可以采用以下两种方法:0038 1)在独立进程中拦截Flash插件活动对象的绘制函数,调用自定义的绘制函数绘制自定义界面,通过Flash插件代理对象与独立进程通信调用Flash插件活动对象,在浏览器的指定位置显示自定义界面。具体来说,在独立进程中拦截Flash插件活动对象的绘制函数,该绘制函数用于绘制停止播放的界面,调用自定义的绘制函数绘制自定义界面,通过Fla。
38、sh插件代理对象与独立进程通信调用Flash插件活动对象,将该自定义界面通过创建的窗口发送给Flash插件代理对象,在指定位置显示该自定义界面。0039 2)在页面进程中拦截Flash插件代理对象与独立进程通信调用Flash插件活动对象的动作,调用自定义的绘制函数绘制自定义界面,在浏览器的指定位置显示自定义界面。具体来说,在独立进程中通过调用Flash插件活动对象的绘制函数绘制停止播放的界面,说 明 书CN 103077194 A7/12页10通过Flash插件代理对象与独立进程通信调用Flash插件活动对象,可将该停止播放的界面通过创建的窗口发送给Flash插件代理对象,此时在页面进程中拦截。
39、该动作,调用自定义的绘制函数绘制自定义界面,在指定位置显示该自定义界面。0040 随后,方法400进入步骤S405,其中根据用户发起的执行Flash插件实现的功能的请求,通过取消拦截线程循环中的定时消息或者通过对Flash插件的属性进行再修改,继续执行Flash插件实现的功能,即继续播放Flash内容。其中继续执行Flash插件实现的功能是通过Flash插件代理对象与独立进程通信调用Flash插件活动对象,和/或,Flash插件代理对象与独立进程通信被Flash插件活动对象调用而实现的。而取消拦截线程循环中的定时消息或者通过对Flash插件的属性进行再修改是在独立进程中进行的。0041 根据本。
40、实施例提供的浏览器活动对象的创建方法,在浏览器的页面进程创建Flash插件代理对象,在独立进程中创建真正的Flash插件,并在真正的Flash插件创建完成后,通过拦截线程消息循环中的定时消息或对Flash插件的属性进行修改,阻止Flash插件播放Flash内容;在用户发起播放Flash的请求后,通过取消拦截线程消息循环中的定时消息或对Flash插件的属性进行再修改,使Flash插件继续播放Flash内容,由此实现了Flash插件对应的Flash内容的即点即播。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求播放Flash内容时,无。
41、需刷新页面,实现了Flash内容的即点即播。而且,本方法在阻止Flash插件播放Flash内容时,已经创建了Flash插件,在用户再发起播放Flash的请求后,不需要再创建Flash插件,可以直接启动播放,响应时间较短。进一步的,在本方法中,通过在页面进程中运行代理对象,而在独立进程中运行活动对象,使得真正的Flash插件与页面进程分离,从而使Flash插件出现问题时不会影响页面进程,提高了浏览器的稳定性,尤其是当Flash插件出现病毒等安全性问题时,也不会对页面进程产生影响,提高了浏览器的安全性;同时,页面进程出现问题不会影响Flash插件的正常运行,提高了插件的稳定性。0042 图5示出了。
42、根据本发明第五个实施例的浏览器活动对象的创建装置的结构框图。如图5所示,该装置包括阻止模块510、第一创建模块520和执行模块530。进一步的,阻止模块510、第一创建模块520和执行模块530都是页面进程模块500的子模块。0043 其中,阻止模块510适于在浏览器创建活动对象之前,在页面进程中阻止创建活动对象。第一创建模块520根据用户发起的执行活动对象实现的功能的请求,继续在页面进程中创建活动对象。执行模块530适于在第一创建模块520创建活动对象之后,执行活动对象实现的功能。0044 以Flash插件为例,在页面创建Flash插件之前,页面进程通过CLSIDFromProgID方法获取。
43、Flash插件的CLSID或者ProgID,判断其是否为Flash插件的CLSID或ProgID,若是阻止模块510阻止第一创建模块520的动作,使其停止执行查询注册表,从而阻止创建Flash插件。在页面进程收到用户点击播放Flash的请求后,阻止模块510解除阻止,第一创建模块520根据Flash插件的CLSID或ProgID继续执行查询注册表的操作,用以查看系统是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。在Flash插件创建完成后,执行模块530按照默认的属性就会播放对应的Flash内容,由此实现了Flash插件对应的Flash内容的即点即播。0045 根据本实施例提供的浏览器活动对象的创建装置,在浏览器的页面进程创建说 明 书CN 103077194 A10。