一种进程间的通信方法和装置制造方法

文档序号:6522945阅读:155来源:国知局
一种进程间的通信方法和装置制造方法
【专利摘要】本发明公开了一种进程间通信的方法,包括:主进程创建子进程宿主对象;主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令;子进程启动并接收来自主进程的第一命令;所述子进程创建对应的子进程对象;所述子进程对象向所述主进程发送启动应答消息;主进程根据收到的启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;所述主进程和所述子进程建立通信通道进行数据传输。基于这样的进程间通信机制,即使主进程需要运行更多的子进程,也不会增加进程间通信的复杂度,有效降低了运行和维护多个进程间通信的成本。
【专利说明】一种进程间的通信方法和装置
【技术领域】
[0001]本发明涉及人机交互【技术领域】,具体涉及一种进程间的通信方法和装置。
【背景技术】
[0002]进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,就有了进程间通信(Inter-Process Communication, IPC)。所谓IPC通信就是指进程间的信息传播或交换。
[0003]一般而言,主程序在运行过程中会运行对应的主进程,基于不同任务的需要往往还需要同时启动并运行多个对应的子进程,而随着子进程数量的增加,进程间通信的复杂度也随之提高。这样一来,如何有效控制多进程通信时的复杂度,减少数据传输错误和异常就成为本领域技术人员在实施进程间通信时需要解决的技术问题。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种进程间的通信方法和装置。
[0005]依据本发明的一个方面,提供了一种进程间的通信方法,所述方法包括:
[0006]主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
[0007]主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
[0008]子进程启动并接收来自主进程的第一命令;
[0009]所述子进程创建对应的子进程对象,并对所述子进程对象进行初始化;
[0010]所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
[0011]主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
[0012]所述主进程和所述子进程建立通信通道进行数据传输。
[0013]可选地,所述主进程和所述子进程建立通信通道进行数据传输,具体包括:
[0014]所述主进程通过主进程通信接口句柄接收来自子进程的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程发送数据;
[0015]所述子进程通过子进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
[0016]可选地,所述方法还包括:
[0017]主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;[0018]当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
[0019]可选地,所述主进程创建子进程宿主对象之前还包括:
[0020]主进程创建新的浏览器子窗口 ;
[0021]主进程创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
[0022]所述主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识,具体包括:
[0023]主进程调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
[0024]所述主进程通过所述子进程宿主对象向对应的子进程发送的第二命令包括:
[0025]渲染对象创建命令和对应的渲染对象标识;
[0026]所述子进程解析并执行所述第二命令,具体包括:
[0027]子进程判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
[0028]创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
[0029]创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
[0030]所述方法还包括:
[0031]若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
[0032]可选地,
[0033]所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:
[0034]子进程渲染对象导航命令和对应的目标网页标识;
[0035]所述子进程解析并执行所述第二命令,还包括:
[0036]子进程判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
[0037]子进程使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
[0038]可选地,所述主进程通过子进程宿主对象向子进程发送的第一命令还包括:
[0039]登录"[目息标识;
[0040]所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:
[0041]网页填充命令;
[0042]所述子进程解析并执行所述第二命令,还包括:
[0043]子进程判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及:
[0044]子进程使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。[0045]可选地,
[0046]所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:窗口调整命令和对应的窗口大小参数;
[0047]所述子进程解析并执行所述第二命令,还包括:
[0048]子进程判断所述第二命令中是否包括窗口调整命令,若包括,则从所述第二命令中获得窗口大小参数,以及
[0049]子进程使用所述子进程浏览器渲染对象的窗口设置方法按照所述窗口大小参数设置子进程浏览器窗体大小。
[0050]根据本发明的另一方面,提供了一种进程间通信装置,所述装置包括:
[0051]包括主进程模块、子进程模块和数据通道;
[0052]所述主进程模块包括:
[0053]子进程宿主对象模块,用于创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
[0054]子进程启动模块,用于使用所述子进程宿主对象模块创建的子进程宿主对象启动子进程模块;
[0055]第一命令发送模块,用于向所述子进程启动模块启动的子进程模块发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
[0056]所述子进程模块包括:
[0057]第一命令接收模块,用于接收来自主进程模块的第一命令;
[0058]子进程对象模块,用于创建子进程对象,并对所述子进程对象进行初始化;
[0059]所述子进程对象模块,还用于向主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
[0060]所述主进程模块还包括:
[0061]第一消息响应模块,用于收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
[0062]所述数据通道,用于主进程模块和子进程模块进行数据传输。
[0063]其中,所述数据通道,具体用于:
[0064]所述主进程模块通过主进程通信接口句柄接收来自子进程模块的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程模块发送数据;
[0065]所述子进程模块通过子进程通信接口句柄接收来自主进程模块的数据,并通过主进程通信接口句柄向主进程模块发送数据。
[0066]可选地,
[0067]所述主进程模块还包括:
[0068]第二命令发送模块,用于判断与子进程模块的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程模块发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
[0069]所述子进程模块还包括:
[0070]第二命令执行模块,用于当子进程模块接收到来自主进程模块的第二命令后,解析并执行所述第二命令。
[0071]可选地,
[0072]所述主进程模块还包括:
[0073]子窗口模块,用于创建新的浏览器子窗口 ;
[0074]子进程渲染宿主对象模块,用于创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
[0075]所述子进程宿主对象模块,具体用于:
[0076]主进程模块调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
[0077]所述第二命令发送模块通过所述子进程宿主对象向对应的子进程模块发送的第二命令包括:
[0078]渲染对象创建命令和对应的渲染对象标识;
[0079]所述第二命令执行模块,具体用于:
[0080]判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
[0081]创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
[0082]创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程模块发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
[0083]所述主进程模块还包括:
[0084]第二消息响应模块,用于若主进程模块收到来自子进程模块的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
[0085]可选地,
[0086]所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
[0087]子进程渲染对象导航命令和对应的目标网页标识;
[0088]所述第二命令执行模块,还用于:
[0089]判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
[0090]使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
[0091]可选地,所述第一命令发送模块通过子进程宿主对象向子进程模块发送的第一命令还包括:
[0092]登录彳目息标识;
[0093]所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
[0094]网页填充命令;
[0095]所述第二命令执行模块,还用于:
[0096]判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及:
[0097]使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
[0098]可选地,
[0099]所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:窗口调整命令和对应的窗口大小参数;
[0100]所述第二命令执行模块,还用于:
[0101]判断所述第二命令中是否包括窗口调整命令,若包括,则从所述第二命令中获得窗口大小参数,以及
[0102]使用所述子进程浏览器渲染对象的窗口设置方法按照所述窗口大小参数设置子进程浏览器窗体大小。
[0103]现有的进程间通信,随着子进程数量的增加,主进程与子进程之间的通信复杂度也急剧增加,使得控制和维护成本居高不下。本发明实施例通过定义子进程宿主对象模型,并由主进程创建和管理子进程宿主对象,通过分配唯一的子进程标识建立子进程宿主对象和子进程对象之间的对应关系,通过交换进程通信接口句柄建立主进程与子进程之间的数据通道,使得主进程仅仅使用子进程标识确定子进程宿主对象就能够实现对应的子进程对象的数据传输。基于这样的进程间通信机制,即使主进程需要运行更多的子进程,也不会增加进程间通信的复杂度,有效降低了运行和维护多个进程间通信的成本。
[0104]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】

【附图说明】
[0105]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0106]图1示出了根据本发明一个实施例的一种进程间通信方法的步骤流程图;
[0107]图2示出了根据本发明一个实施例的一种进程间通信方法的步骤流程图;
[0108]图3示出了根据本发明一个实施例的一种进程间通信方法的时序流程图;
[0109]图4示出了根据本发明一个实施例的一种进程间通信装置的结构示意图。
【具体实施方式】
[0110]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0111]实施例一
[0112]参照图1,图1示出了本发明实施例提供的一种进程间通信方法,所述方法包括:[0113]S101,主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识。
[0114]本发明实施例中,主进程创建并管理子进程宿主对象,每个子进程宿主对象对应一个子进程,并拥有与所对应子进程相同的子进程标识。
[0115]S102,主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄。
[0116]子进程宿主对象中提供了创建和启动子进程的方法,并提供了数据通信接口用于向子进程发送第一命令。
[0117]具体而言,主进程以命令行的方式通过调用子进程宿主对象提供的进程创建方法创建一个新的子进程,所述命令行包括所述第一命令。
[0118]其中,所谓句柄是操作系统中的一个唯一的整数值,用来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。通过句柄可以访问相应对象的信息。
[0119]S103,子进程启动并接收来自主进程的第一命令。
[0120]S104,所述子进程创建对应的子进程对象,并对所述子进程对象进行初始化。
[0121]调用子进程对象提供的初始化方法对所述子进程对象进行初始化,在所述初始化方法中对所接收到的第一命令中携带的子进程标识、主进程通信接口句柄等命令行参数进行保存。
[0122]S105,所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识。
[0123]子进程对象初始化完成后,使用IPC向主进程发送启动应答消息。
[0124]S106,主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄。
[0125]至此,主进程中的每个子进程宿主对象就拥有了与其对应的子进程对象的子进程通信接口句柄,而每个子进程也获得了对应主进程的通信接口句柄。基于获得的子进程通信接口句柄,子进程宿主对象对外提供与对应的子进程对象进行进程间通信的通信接口,使得主进程能够通过调用所述通信接口向对应的子进程发送数据。
[0126]S107,所述主进程和所述子进程建立通信通道进行数据传输。
[0127]其中,所述主进程和所述子进程建立通信通道通信通道进行数据传输,具体包括:
[0128]所述主进程通过主进程通信接口句柄接收来自子进程的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程发送数据;
[0129]所述子进程通过子进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
[0130]本发明实施例通过定义子进程宿主对象模型,并由主进程创建和管理子进程宿主对象,通过分配唯一的子进程标识建立子进程宿主对象和子进程对象之间的对应关系,通过交换进程通信接口句柄建立主进程与子进程之间的数据通道,使得主进程仅仅使用子进程标识确定子进程宿主对象就能够实现对应的子进程对象的数据传输。基于这样的进程间通信机制,即使主进程需要运行更多的子进程,也不会增加进程间通信的复杂度,有效降低了运行和维护多个进程间通信的成本。
[0131]在所述实施例一的另一扩展实施例中,所述方法还包括:
[0132]S108,主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数。
[0133]S109,当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
[0134]当主进程与子进程之间的数据通道建成后,主进程可根据实施需要向子进程发送第二命令,例如监听命令、销毁子进程命令等。需要说明的是,本领域技术人员可根据实际需要组织第二命令的指令内容和包含的参数,本发明对此不作具体限制。
[0135]在数据通道建成前,主进程缓存第二命令及其携带的参数,当检测到数据通道建成后,则将之前缓存的第二命令及其携带的参数一起发送给对应的子进程。通过上述缓存机制,能够将第二命令毫无遗漏地发往子进程,保证了通信的完整性。
[0136]实施例二
[0137]参照图2,图2示出了本发明实施例提供的一种进程间通信方法,所述方法包括:
[0138]S201,主进程创建新的浏览器子窗口。
[0139]S202,主进程创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识。
[0140]S203,主进程调用所述子进程渲染宿主对象的方法,在所述方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识。
[0141]S204,主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄。
[0142]S205,子进程启动并接收来自主进程的第一命令。
[0143]S206,子进程创建对应的子进程对象,并对所述子进程对象进行初始化。
[0144]子进程对象初始化的同时保存第一命令及其携带的参数。
[0145]S207,所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识。
[0146]S208,主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄。
[0147]子进程宿主对象通过设置的子进程通信接口句柄即可访问对应的子进程对象。
[0148]S209,所述主进程和所述子进程建立通信通道进行数据传输。
[0149]S210,主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令,所述第二命令包括:渲染对象创建命令和对应的渲染对象标识;若所述数据通道未建成,则缓存所述第二命令携带的命令参数。
[0150]S211,当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
[0151]其中,子进程解析并执行所述第二命令具体包括:
[0152]子进程判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:[0153]创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
[0154]创建子进程浏览器渲染对象,并使用子进程对象的发送方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄。
[0155]S212,若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
[0156]若应用程序中需要打开运行多个浏览器子窗口时,主进程中创建并管理多个子进程渲染对象宿主,每个子进程渲染对象宿主对应一个子进程渲染对象,而每一个子进程渲染对象下面管理着一个子进程浏览器渲染对象,所述子进程浏览器渲染对象封装了浏览器的webtoowser及其对应的操作,通过将子进程浏览器渲染对象的子进程浏览器窗口句柄的父窗口设置为其对应的浏览器子窗口,即相当于在该浏览器子窗口中内嵌了一个IE浏览器窗口。
[0157]主进程通过渲染对象标识或子进程标识确定对应的子进程渲染对象宿主,并通过该子进程渲染对象宿主宿主对应的子进程渲染对象对浏览器子窗口中的内嵌webtoowser进行访问和操作。
[0158]本发明实施例中,所述主进程创建浏览器子窗口以及子进程浏览器渲染对象封装浏览器的webbrowser只是本发明优选的方法,本领域技术人员应当理解,在实施本发明时,按照子窗口所承载内容和目的的不同,主进程可创建任意类型的子窗口和对应的子进程窗口渲染对象,该子进程窗口渲染对象可封装不同的对象及操作,本发明对此不作具体限制,例如创建一个视频播放子窗口、CAD画图子窗口、或其他第三方软件控制子窗口等。
[0159]在上述实施例二的另一扩展实施例中,所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:子进程渲染对象导航命令和对应的目标网页标识;
[0160]所述子进程解析并执行所述第二命令,还包括:
[0161]子进程判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:子进程使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
[0162]其中,目标网页标识具体可以是一个网页URL,例如一个网站的登录页面URL,当用户点击该网页URL的链接时,主进程创建一个浏览器子窗口,并在该浏览器子窗口中加载该网页URL对应的网页元素。
[0163]在上述实施例的另一扩展实施例中,所述主进程通过子进程宿主对象向子进程发送的第一命令还包括:登录信息标识;
[0164]所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:网页填充命令;
[0165]所述子进程解析并执行所述第二命令,还包括:
[0166]子进程判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及子进程使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。[0167]实施例三
[0168]本实施例以具体的数据对象模型为例,对本发明提供的一种进程间通信方法进行描述,涉及的数据对象模型定义如下:
[0169]CApplication 应用程序
[0170]-CMainProcess 主进程
[0171]-CChiIdProcess 子进程
[0172]其中,主进程CMainProcess提供的数据模型如表1所示;子进程CChiIdProcess
提供的数据模型如表2所示:
[0173]
【权利要求】
1.一种进程间通信的方法,包括: 主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄; 子进程启动并接收来自主进程的第一命令; 所述子进程创建对应的子进程对象,并对所述子进程对象进行初始化; 所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识; 主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄; 所述主进程和所述子进程建立通信通道进行数据传输。
2.如权利要求1所述的方法,其特征在于,所述主进程和所述子进程建立通信通道进行数据传输,具体包括: 所述主进程通过主进程通信接口句柄接收来自子进程的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程发送数据; 所述子进程通过子进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
3.如权利要求1所 述的方法,其特征在于,所述方法还包括: 主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数; 当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
4.如权利要求3所述的方法,其特征在于,所述主进程创建子进程宿主对象之前还包括: 主进程创建新的浏览器子窗口; 主进程创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识; 所述主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识,具体包括: 主进程调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识; 所述主进程通过所述子进程宿主对象向对应的子进程发送的第二命令包括: 渲染对象创建命令和对应的渲染对象标识; 所述子进程解析并执行所述第二命令,具体包括: 子进程判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及: 创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识; 创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄; 所述方法还包括: 若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
5.如权利要求4所述的方法,其特征在于, 所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括: 子进程渲染对象导航命令和对应的目标网页标识; 所述子进程解析并执行所述第二命令,还包括: 子进程判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及: 子进程使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
6.一种进程间通信装置,包括主进程模块、子进程模块和数据通道; 所述主进程模块包括: 子进程宿主对象模块,用于创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识; 子进程启动模块,用于使用所述子进程宿主对象模块创建的子进程宿主对象启动子进程模块; 第一命令发送模块,用于向所述子进程启动模块启动的子进程模块发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄; 所述子进程模块包括: 第一命令接收模块,用于接收来自主进程模块的第一命令; 子进程对象模块,用于创建子进程对象,并对所述子进程对象进行初始化; 所述子进程对象模块,还用于向主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识; 所述主进程模块还包括: 第一消息响应模块,用于收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄; 所述数据通道,用于主进程模块和子进程模块进行数据传输。
7.如权利要求6所述的装置,其特征在于,所述数据通道,具体用于: 所述主进程模块通过主进程通信接口句柄接收来自子进程模块的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程模块发送数据; 所述子进程模块通过子进程通信接口句柄接收来自主进程模块的数据,并通过主进程通信接口句柄向主进程模块发送数据。
8.如权利要求9所述的装置,其特征在于, 所述主进程模块还包括: 第二命令发送模块,用于判断与子进程模块的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程模块发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数; 所述子进程模块还包括: 第二命令执行模块,用于当子进程模块接收到来自主进程模块的第二命令后,解析并执行所述第二命令。
9.如权利要求8所述的装置,其特征在于, 所述主进程模块还包括: 子窗口模块,用于创建新的浏览器子窗口 ; 子进程渲染宿主对象模块,用于创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识; 所述子进程宿主对象模块,具体用于: 主进程模块调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识; 所述第二命令发送模块通过所述子进程宿主对象向对应的子进程模块发送的第二命令包括: 渲染对象创建命令和对应的渲染对象标识; 所述第二命令执行模块,具体用于: 判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及: 创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识; 创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程模块发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄; 所述主进程模块还包括: 第二消息响应模块,用于若主进程模块收到来自子进程模块的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
10.如权利要求9所述的装置,其特征在于, 所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括: 子进程渲染对象导航命令和对应的目标网页标识; 所述第二命令执行模块,还用于: 判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及: 使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
【文档编号】G06F9/54GK103631664SQ201310661786
【公开日】2014年3月12日 申请日期:2013年12月9日 优先权日:2013年12月9日
【发明者】李超, 张菊元 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1