本发明专利技术公开了一种脚本执行方法、系统及浏览器。其中系统包括:运行于页面进程中的代理对象、运行于独立进程中的活动对象以及分别在所述代理对象和活动对象上创建的一对通信窗口;该系统适用于由活动对象执行页面进程中的脚本,所述活动对象和代理对象通过所述一对通信窗口进行通信;所述代理对象包括:发送模块;调度标识获取模块;拦截模块;所述活动对象包括:接收模块,适于接收所述代理对象中的发送模块发送的脚本以及拦截模块发送的指令;执行模块,适于通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。本发明专利技术实现了不同进程之间脚本的执行。
【技术实现步骤摘要】
本专利技术涉及计算机网络
,具体涉及一种脚本执行方法、系统及浏览器。
技术介绍
IPC (Inter-Process Communication,进程间通信)是指至少两个进程或线程间传 送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位。每个进程都有 自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行 协调工作,才有了进程间通信。不同的进程可以运行在同一计算机上或通过网络连接的不 同计算机上。一般来说,在以下情况下需要实现进程间通信(I)数据传输一个进程需要将它的数据发送给另一个进程,发送的数据量在一个 字节到几兆字节之间。(2)共享数据多个进程想要操作共享数据,一个进程对共享数据的修改,别的进 程应该立刻看到。(3)通知事件一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了 某种事件(如进程终止时要通知父进程)。(4)资源共享多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁 和同步机制。(5)进程控制有些进程希望完全控制另一个进程的执行(如Debug进程),此时控 制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。但是,现有技术还未提供关于进程间脚本执行的方案,利用现有的方法还不能实 现进程间脚本的交互执行。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上 述问题的脚本执行系统、浏览器和相应的脚本执行方法。根据本专利技术的一个方面,提供了一种脚本执行方法,该方法适用于由运行于独立 进程中的活动对象执行运行于页面进程中代理对象的脚本,所述代理对象和活动对象通过 预先建立的通信窗口进行通信,所述方法包括所述代理对象通过通信窗口将脚本发送给 所述活动对象;所述代理对象通过调用所述活动对象的调度接口,获取所述脚本中待执行 方法的调度标识;所述代理对象拦截页面进程中执行所述脚本中待执行方法的指令,将所 述指令发送给所述活动对象;所述活动对象通过执行所述指令,执行所述脚本中待执行方 法,而后将执行结果返回给代理对象。根据本专利技术的另一方面,提供了一种脚本执行系统,所述系统包括运行于页面进 程中的代理对象、运行于独立进程中的活动对象以及分别在所述代理对象和活动对象上创 建的一对通信窗口 ;该系统适用于由活动对象执行页面进程中的脚本,所述活动对象和代理对象通过所述一对通信窗口进行通信;所述代理对象包括发送模块,适于通过通信窗 口将脚本发送给所述活动对象;调度标识获取模块,适于通过调用所述活动对象的调度接 口,获取所述脚本中待执行方法的调度标识;拦截模块,适于拦截页面进程中执行所述脚本 中待执行方法的指令,将所述指令发送给所述活动对象;所述活动对象包括接收模块,适 于接收所述代理对象中的发送模块发送的脚本以及拦截模块发送的指令;执行模块,适于 通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。根据本专利技术的再一个方面,提供了一种浏览器,包括上述脚本执行系统。根据本专利技术的一个方面提供的方案,在代理对象将脚本发送给活动对象之后,代 理对象调用活动对象的调度接口获取脚本中待执行方法的调度标识;在代理对象将调度标 识反馈给页面后,代理对象拦截页面进程执行脚本中待执行方法的指令,将指令发送给活 动对象,由活动对象执行该指令,并将执行指令后获得的执行结果返回给代理对象,由此实 现了不同进程之间脚本的执行,并且实现了运行于页面进程中的页面对运行于独立进程中 的活动对象的控制。根据本专利技术的一个方面提供的方案,在活动对象将脚本发送给代理对象之后,代 理对象查询页面进程中与脚本执行有关的接口,根据该接口获取脚本执行的方法,进而根 据脚本执行的方法执行活动对象发送过来的脚本,由此实现了不同进程之间脚本的执行, 并且实现了运行于独立进程中的活动对象对运行于页面进程中的页面的控制。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段, 而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够 更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术 的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了本专利技术中Flash插件代理对象和Flash插件活动对象的创建过程的示 意图2示出了根据本专利技术一个实施例的脚本执行方法的流程图3示出了根据本专利技术另一个实施例的脚本执行方法的流程图4示出了根据本专利技术一个实施例的脚本执行系统的结构框图5示出了根据本专利技术另一个实施例的脚本执行系统的结构框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例 所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。本专利技术提供的脚本执行方法是指页面进程与独立进程之间的脚本执行方法。其中 页面进程运行Web页面的进程,独立进程是独立于页面进程的另一进程。在页面有ActiveX插件的情况下,页面进程运行ActiveX插件代理对象,独立进程运行ActiveX插件活动对 象,该ActiveX插件活动对象是真正的ActiveX插件的对象。在以下实施例中,以ActiveX 插件为Flash插件为例进行说明,但本专利技术不仅限于此。在介绍页面进程和独立进程之间的脚本执行方法之前,首先介绍Flash插件代理 对象和Flash插件活动对象的创建过程。图1示出了本专利技术中Flash插件代理对象和Flash 插件活动对象的创建过程的示意图。如图1所示,页面进程中运行有Web页面和Flash插 件代理对象,独立进程中运行有空页面和Flash插件活动对象。其中,运行于页面进程中的Flash代理对象是通过拦截浏览器的页面进程创建 Flash活动对象的过程,替换实际要创建的Flash活动对象而创建的。具体来说,在页面 中有Flash的情况下,当浏览器创建Flash插件时,会根据Flash插件CLSID (类标识,可 通过CLSIDFromProID获得)或ProgID (组件的字符串标识符)查询注册表,查看系统是否 已安装该Flash插件,若安装则继续创建过程。在页面进程继续创建Flash插件时,拦截 CoGetClassObject,创建Flash插件代理对象,该Flash插件代理对象包括一系列接口,包 括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调 用IClassFactory的CreateInstance时,将所创建的Flash插件代理对象返回给页面进程 的IUnknown指针。由此Flash插件代理对象创建完成。运行于独立进程中的Flash插件活动对象是在页面进程激活Flash插件代理对 象时,在独立于页面进程的独立进程中创建的。具体来说,在页面进程激活Flash插件代 理对象时,提取出该Flash插件的属性、URL、大小等本文档来自技高网...
【技术保护点】
一种脚本执行方法,该方法适用于由运行于独立进程中的活动对象执行运行于页面进程中代理对象的脚本,所述代理对象和活动对象通过预先建立的通信窗口进行通信,所述方法包括:所述代理对象通过通信窗口将脚本发送给所述活动对象;所述代理对象通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识;所述代理对象拦截页面进程中执行所述脚本中待执行方法的指令,将所述指令发送给所述活动对象;所述活动对象通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。
【技术特征摘要】
1.一种脚本执行方法,该方法适用于由运行于独立进程中的活动对象执行运行于页面进程中代理对象的脚本,所述代理对象和活动对象通过预先建立的通信窗口进行通信,所述方法包括 所述代理对象通过通信窗口将脚本发送给所述活动对象; 所述代理对象通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识; 所述代理对象拦截页面进程中执行所述脚本中待执行方法的指令,将所述指令发送给所述活动对象; 所述活动对象通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。2.根据权利要求1所述的方法,所述代理对象通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识的步骤包括 所述代理对象通过调用所述活动对象的调度接口,让所述活动对象执行获取所述脚本中待执行方法的调度标识的方法,而后所述活动对象通过通信窗口将所述调度标识返回给所述代理对象。3.根据权利要求1或2所述的方法,所述运行于页面进程中的代理对象是通过拦截浏览器的页面进程创建活动对象的过程,替换实际要创建的活动对象而创建的; 所述运行于独立进程中的活动对象是在页面进程激活所述代理对象时,在独立于浏览器页面进程的独立进程中创建的; 在所述活动对象和代理对象中分别创建的所述通信窗口用于使活动对象和代理对象进行通信。4.根据权利要求3所述的方法,运行于所述页面进程中的代理对象为多个,运行于所述独立进程中的活动对象为多个,所述代理对象和活动对象一一对应,所述代理对象的通信窗口和与所述代理对象对应的活动对象的通信窗口具有对应的属性,通过该两个通信窗口实现活动对象和代理对象的通信。5.一种脚本执行系统,所述系统包括运行于页面进程中的代理对象、运行于独立进程中的活动对象以及分别在所述代理对象和活动对...
【专利技术属性】
技术研发人员:李锦伟,贺跃松,陈志,付俣,任寰,
申请(专利权)人:北京奇虎科技有限公司,奇智软件北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。