CN103631664A - 一种进程间的通信方法和装置 - Google Patents
一种进程间的通信方法和装置 Download PDFInfo
- Publication number
- CN103631664A CN103631664A CN201310661786.7A CN201310661786A CN103631664A CN 103631664 A CN103631664 A CN 103631664A CN 201310661786 A CN201310661786 A CN 201310661786A CN 103631664 A CN103631664 A CN 103631664A
- Authority
- CN
- China
- Prior art keywords
- sub
- command
- module
- subprocess
- rendering
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 922
- 238000004891 communication Methods 0.000 title claims abstract description 123
- 230000008569 process Effects 0.000 claims abstract description 352
- 230000004044 response Effects 0.000 claims abstract description 87
- 230000005540 biological transmission Effects 0.000 claims abstract description 18
- 238000009877 rendering Methods 0.000 claims description 200
- 230000007246 mechanism Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000011423 initialization method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种进程间通信的方法,包括:主进程创建子进程宿主对象;主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令;子进程启动并接收来自主进程的第一命令;所述子进程创建对应的子进程对象;所述子进程对象向所述主进程发送启动应答消息;主进程根据收到的启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;所述主进程和所述子进程建立通信通道进行数据传输。基于这样的进程间通信机制,即使主进程需要运行更多的子进程,也不会增加进程间通信的复杂度,有效降低了运行和维护多个进程间通信的成本。
Description
技术领域
本发明涉及人机交互技术领域,具体涉及一种进程间的通信方法和装置。
背景技术
进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,就有了进程间通信(Inter-Process Communication,IPC)。所谓IPC通信就是指进程间的信息传播或交换。
一般而言,主程序在运行过程中会运行对应的主进程,基于不同任务的需要往往还需要同时启动并运行多个对应的子进程,而随着子进程数量的增加,进程间通信的复杂度也随之提高。这样一来,如何有效控制多进程通信时的复杂度,减少数据传输错误和异常就成为本领域技术人员在实施进程间通信时需要解决的技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种进程间的通信方法和装置。
依据本发明的一个方面,提供了一种进程间的通信方法,所述方法包括:
主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
子进程启动并接收来自主进程的第一命令;
所述子进程创建对应的子进程对象,并对所述子进程对象进行初始化;
所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
所述主进程和所述子进程建立通信通道进行数据传输。
可选地,所述主进程和所述子进程建立通信通道进行数据传输,具体包括:
所述主进程通过主进程通信接口句柄接收来自子进程的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程发送数据;
所述子进程通过子进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
可选地,所述方法还包括:
主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
可选地,所述主进程创建子进程宿主对象之前还包括:
主进程创建新的浏览器子窗口;
主进程创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
所述主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识,具体包括:
主进程调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
所述主进程通过所述子进程宿主对象向对应的子进程发送的第二命令包括:
渲染对象创建命令和对应的渲染对象标识;
所述子进程解析并执行所述第二命令,具体包括:
子进程判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
所述方法还包括:
若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
可选地,
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:
子进程渲染对象导航命令和对应的目标网页标识;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
子进程使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
可选地,所述主进程通过子进程宿主对象向子进程发送的第一命令还包括:
登录信息标识;
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:
网页填充命令;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及:
子进程使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
可选地,
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:窗口调整命令和对应的窗口大小参数;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括窗口调整命令,若包括,则从所述第二命令中获得窗口大小参数,以及
子进程使用所述子进程浏览器渲染对象的窗口设置方法按照所述窗口大小参数设置子进程浏览器窗体大小。
根据本发明的另一方面,提供了一种进程间通信装置,所述装置包括:
包括主进程模块、子进程模块和数据通道;
所述主进程模块包括:
子进程宿主对象模块,用于创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
子进程启动模块,用于使用所述子进程宿主对象模块创建的子进程宿主对象启动子进程模块;
第一命令发送模块,用于向所述子进程启动模块启动的子进程模块发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
所述子进程模块包括:
第一命令接收模块,用于接收来自主进程模块的第一命令;
子进程对象模块,用于创建子进程对象,并对所述子进程对象进行初始化;
所述子进程对象模块,还用于向主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
所述主进程模块还包括:
第一消息响应模块,用于收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
所述数据通道,用于主进程模块和子进程模块进行数据传输。
其中,所述数据通道,具体用于:
所述主进程模块通过主进程通信接口句柄接收来自子进程模块的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程模块发送数据;
所述子进程模块通过子进程通信接口句柄接收来自主进程模块的数据,并通过主进程通信接口句柄向主进程模块发送数据。
可选地,
所述主进程模块还包括:
第二命令发送模块,用于判断与子进程模块的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程模块发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
所述子进程模块还包括:
第二命令执行模块,用于当子进程模块接收到来自主进程模块的第二命令后,解析并执行所述第二命令。
可选地,
所述主进程模块还包括:
子窗口模块,用于创建新的浏览器子窗口;
子进程渲染宿主对象模块,用于创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
所述子进程宿主对象模块,具体用于:
主进程模块调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
所述第二命令发送模块通过所述子进程宿主对象向对应的子进程模块发送的第二命令包括:
渲染对象创建命令和对应的渲染对象标识;
所述第二命令执行模块,具体用于:
判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程模块发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
所述主进程模块还包括:
第二消息响应模块,用于若主进程模块收到来自子进程模块的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
可选地,
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
子进程渲染对象导航命令和对应的目标网页标识;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
可选地,所述第一命令发送模块通过子进程宿主对象向子进程模块发送的第一命令还包括:
登录信息标识;
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
网页填充命令;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及:
使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
可选地,
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:窗口调整命令和对应的窗口大小参数;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括窗口调整命令,若包括,则从所述第二命令中获得窗口大小参数,以及
使用所述子进程浏览器渲染对象的窗口设置方法按照所述窗口大小参数设置子进程浏览器窗体大小。
现有的进程间通信,随着子进程数量的增加,主进程与子进程之间的通信复杂度也急剧增加,使得控制和维护成本居高不下。本发明实施例通过定义子进程宿主对象模型,并由主进程创建和管理子进程宿主对象,通过分配唯一的子进程标识建立子进程宿主对象和子进程对象之间的对应关系,通过交换进程通信接口句柄建立主进程与子进程之间的数据通道,使得主进程仅仅使用子进程标识确定子进程宿主对象就能够实现对应的子进程对象的数据传输。基于这样的进程间通信机制,即使主进程需要运行更多的子进程,也不会增加进程间通信的复杂度,有效降低了运行和维护多个进程间通信的成本。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种进程间通信方法的步骤流程图;
图2示出了根据本发明一个实施例的一种进程间通信方法的步骤流程图;
图3示出了根据本发明一个实施例的一种进程间通信方法的时序流程图;
图4示出了根据本发明一个实施例的一种进程间通信装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
参照图1,图1示出了本发明实施例提供的一种进程间通信方法,所述方法包括:
S101,主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识。
本发明实施例中,主进程创建并管理子进程宿主对象,每个子进程宿主对象对应一个子进程,并拥有与所对应子进程相同的子进程标识。
S102,主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄。
子进程宿主对象中提供了创建和启动子进程的方法,并提供了数据通信接口用于向子进程发送第一命令。
具体而言,主进程以命令行的方式通过调用子进程宿主对象提供的进程创建方法创建一个新的子进程,所述命令行包括所述第一命令。
其中,所谓句柄是操作系统中的一个唯一的整数值,用来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。通过句柄可以访问相应对象的信息。
S103,子进程启动并接收来自主进程的第一命令。
S104,所述子进程创建对应的子进程对象,并对所述子进程对象进行初始化。
调用子进程对象提供的初始化方法对所述子进程对象进行初始化,在所述初始化方法中对所接收到的第一命令中携带的子进程标识、主进程通信接口句柄等命令行参数进行保存。
S105,所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识。
子进程对象初始化完成后,使用IPC向主进程发送启动应答消息。
S106,主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄。
至此,主进程中的每个子进程宿主对象就拥有了与其对应的子进程对象的子进程通信接口句柄,而每个子进程也获得了对应主进程的通信接口句柄。基于获得的子进程通信接口句柄,子进程宿主对象对外提供与对应的子进程对象进行进程间通信的通信接口,使得主进程能够通过调用所述通信接口向对应的子进程发送数据。
S107,所述主进程和所述子进程建立通信通道进行数据传输。
其中,所述主进程和所述子进程建立通信通道通信通道进行数据传输,具体包括:
所述主进程通过主进程通信接口句柄接收来自子进程的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程发送数据;
所述子进程通过子进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
本发明实施例通过定义子进程宿主对象模型,并由主进程创建和管理子进程宿主对象,通过分配唯一的子进程标识建立子进程宿主对象和子进程对象之间的对应关系,通过交换进程通信接口句柄建立主进程与子进程之间的数据通道,使得主进程仅仅使用子进程标识确定子进程宿主对象就能够实现对应的子进程对象的数据传输。基于这样的进程间通信机制,即使主进程需要运行更多的子进程,也不会增加进程间通信的复杂度,有效降低了运行和维护多个进程间通信的成本。
在所述实施例一的另一扩展实施例中,所述方法还包括:
S108,主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数。
S109,当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
当主进程与子进程之间的数据通道建成后,主进程可根据实施需要向子进程发送第二命令,例如监听命令、销毁子进程命令等。需要说明的是,本领域技术人员可根据实际需要组织第二命令的指令内容和包含的参数,本发明对此不作具体限制。
在数据通道建成前,主进程缓存第二命令及其携带的参数,当检测到数据通道建成后,则将之前缓存的第二命令及其携带的参数一起发送给对应的子进程。通过上述缓存机制,能够将第二命令毫无遗漏地发往子进程,保证了通信的完整性。
实施例二
参照图2,图2示出了本发明实施例提供的一种进程间通信方法,所述方法包括:
S201,主进程创建新的浏览器子窗口。
S202,主进程创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识。
S203,主进程调用所述子进程渲染宿主对象的方法,在所述方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识。
S204,主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄。
S205,子进程启动并接收来自主进程的第一命令。
S206,子进程创建对应的子进程对象,并对所述子进程对象进行初始化。
子进程对象初始化的同时保存第一命令及其携带的参数。
S207,所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识。
S208,主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄。
子进程宿主对象通过设置的子进程通信接口句柄即可访问对应的子进程对象。
S209,所述主进程和所述子进程建立通信通道进行数据传输。
S210,主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令,所述第二命令包括:渲染对象创建命令和对应的渲染对象标识;若所述数据通道未建成,则缓存所述第二命令携带的命令参数。
S211,当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
其中,子进程解析并执行所述第二命令具体包括:
子进程判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的发送方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄。
S212,若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
若应用程序中需要打开运行多个浏览器子窗口时,主进程中创建并管理多个子进程渲染对象宿主,每个子进程渲染对象宿主对应一个子进程渲染对象,而每一个子进程渲染对象下面管理着一个子进程浏览器渲染对象,所述子进程浏览器渲染对象封装了浏览器的webbrowser及其对应的操作,通过将子进程浏览器渲染对象的子进程浏览器窗口句柄的父窗口设置为其对应的浏览器子窗口,即相当于在该浏览器子窗口中内嵌了一个IE浏览器窗口。
主进程通过渲染对象标识或子进程标识确定对应的子进程渲染对象宿主,并通过该子进程渲染对象宿主宿主对应的子进程渲染对象对浏览器子窗口中的内嵌webbrowser进行访问和操作。
本发明实施例中,所述主进程创建浏览器子窗口以及子进程浏览器渲染对象封装浏览器的webbrowser只是本发明优选的方法,本领域技术人员应当理解,在实施本发明时,按照子窗口所承载内容和目的的不同,主进程可创建任意类型的子窗口和对应的子进程窗口渲染对象,该子进程窗口渲染对象可封装不同的对象及操作,本发明对此不作具体限制,例如创建一个视频播放子窗口、CAD画图子窗口、或其他第三方软件控制子窗口等。
在上述实施例二的另一扩展实施例中,所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:子进程渲染对象导航命令和对应的目标网页标识;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:子进程使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
其中,目标网页标识具体可以是一个网页URL,例如一个网站的登录页面URL,当用户点击该网页URL的链接时,主进程创建一个浏览器子窗口,并在该浏览器子窗口中加载该网页URL对应的网页元素。
在上述实施例的另一扩展实施例中,所述主进程通过子进程宿主对象向子进程发送的第一命令还包括:登录信息标识;
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:网页填充命令;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及子进程使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
实施例三
本实施例以具体的数据对象模型为例,对本发明提供的一种进程间通信方法进行描述,涉及的数据对象模型定义如下:
CApplication应用程序
-CMainProcess主进程
-CChildProcess子进程
其中,主进程CMainProcess提供的数据模型如表1所示;子进程CChildProcess提供的数据模型如表2所示:
表1
表2
参照图3,图3示出了本发明实施例提供的一种进程间通信方法,所述方法包括:
S301,主进程创建新的浏览器子窗口。
S302,主进程创建子进程渲染宿主对象CRenderViewHost,并为所述子进程渲染宿主对象CRenderViewHost分配对应的渲染对象标识viewid。
S303,主进程调用所述子进程渲染宿主对象CRenderViewHost的Navigate方法,在所述Navigate方法中创建子进程宿主对象CChildProcessHost,并为所述子进程宿主对象CChildProcessHost分配一个对应的子进程标识processid。
在调用子进程渲染宿主对象CRenderViewHost的Navigate方法时传入目标网页标识URL、登录信息标识。
S304,主进程使用所述创建的子进程宿主对象CChildProcessHost启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识processid、主进程通信接口句柄CMainProcessWnd、登录信息标识。
S305,子进程启动并接收来自主进程的第一命令。
S306,子进程创建对应的子进程对象CChildProcess,并调用子进程对象CChildProcess的初始化方法Init()对所述子进程对象进行初始化。
其中,初始化方法Init()中会存储接收自主进程的第一命令携带的参数。
S307,使用子进程对象CChildProcess的发送方法Send()向所述主进程发送启动应答消息OnInitReady,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄CChildProcessWnd、子进程标识processid。
S308,主进程收到子进程的启动应答消息OnInitReady后,根据所述启动应答消息中的子进程标识processid确定对应的子进程宿主对象CChildProcessHost,并为所述子进程宿主对象设置对应的子进程通信接口句柄CChildProcessWnd;
S309,所述主进程和所述子进程建立通信通道进行数据传输。
S310,主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象CChildProcessHost的发送方法Send()向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数。
其中,所述第二命令包括:渲染对象创建命令createview和对应的渲染对象标识viewid。
进一步地,所述所述第二命令还包括:子进程渲染对象导航命令navigate和对应的目标网页标识URL。
进一步地,所述所述第二命令还包括:网页填充命令AutoFill。
进一步地,所述所述第二命令还包括:窗口调整命令ChangeSize和对应的窗口大小参数。
进一步地,为了便于第二命令的传递和使用,可将第二命令封装后传递,例如,定义CParasHelper类来对第二命令进行封包和解包。其中,CParasHelper允许添加任意多个参数,每个参数都是字符串类型,将多个命令参数封包合并成命令字符串。主进程向子进程以IPC方式发送该命令字符串,当子进程接收到该命令字符串后,可将其再转化成CParasHelper对象,并且可以从CParasHelper对象中获得每个参数。这样一来,在发送和接收第二命令时,只需传递CParasHelper对象即可,而不必考虑参数的位置和顺序,有效降低了对指令参数的使用和维护成本。
S311,当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
其中,解析并执行所述第二命令具体包括:
子进程判断所述第二命令中是否包括渲染对象创建命令createview,若包括,则从所述第二命令中获得对应的渲染对象标识viewid,以及:
创建子进程渲染对象CRenderView,并为该子进程渲染对象CRenderView设置所述渲染对象标识viewid;
创建子进程浏览器渲染对象CRenderWebBrowser,并使用子进程对象CChildProcess的send方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象CRenderWebBrowser的子进程浏览器窗口句柄。
进一步地,所述解析并执行所述第二命令还包括:
子进程判断所述第二命令中是否包括网页填充命令AutoFill,若包括,则从所述第一命令中获得所述登录信息标识,以及:
子进程使用所述子进程浏览器渲染对象CRenderWebBrowser的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
进一步地,所述解析并执行所述第二命令还包括:
子进程判断所述第二命令中是否包括窗口调整命令ChangeSize,若包括,则从所述第二命令中获得窗口大小参数,以及
子进程使用所述子进程浏览器渲染对象CRenderWebBrowser的窗口设置方法SetWindowPos按照所述窗口大小参数设置子进程浏览器窗体大小。
S312,若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
实施例四
参见图4,图4示出了本发明实施例提供的一种进程通信装置,所述装置包括:主进程模块410、子进程模块420和数据通道430;
所述主进程模块410包括:
子进程宿主对象模块411,用于创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
子进程启动模块412,用于使用所述子进程宿主对象模块创建的子进程宿主对象启动子进程模块;
第一命令发送模块413,用于向所述子进程启动模块启动的子进程模块发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
所述子进程模420块包括:
第一命令接收模块421,用于接收来自主进程模块的第一命令;
子进程对象模块422,用于创建子进程对象,并对所述子进程对象进行初始化;
所述子进程对象模块422,还用于向主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
所述主进程模块410还包括:
第一消息响应模块414,用于收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
所述数据通道430,用于主进程模块和子进程模块进行数据传输。
其中,所述数据通道430,具体用于:
所述主进程模块410通过主进程通信接口句柄接收来自子进程模块420的数据,并通过子进程宿主对象411的子进程通信接口句柄向对应的子进程模块420发送数据;
所述子进程模块420通过子进程通信接口句柄接收来自主进程模块410的数据,并通过主进程通信接口句柄向主进程模块410发送数据。
其中,
所述主进程模块410还包括:
第二命令发送模块415,用于判断与子进程模块的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程模块发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
所述子进程模块420还包括:
第二命令执行模块423,用于当子进程模块接收到来自主进程模块的第二命令后,解析并执行所述第二命令。
其中,
所述主进程模块410还包括:
子窗口模块416,用于创建新的浏览器子窗口;
子进程渲染宿主对象模块417,用于创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
所述子进程宿主对象模块417,具体用于:
主进程模块410调用所述子进程渲染宿主对象417的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
所述第二命令发送模块415通过所述子进程宿主对象向对应的子进程模块420发送的第二命令包括:
渲染对象创建命令和对应的渲染对象标识;
所述第二命令执行模块423,具体用于:
判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程模块发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
所述主进程模块还包括:
第二消息响应模块418,用于若主进程模块收到来自子进程模块的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
其中,
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
子进程渲染对象导航命令和对应的目标网页标识;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
其中,所述第一命令发送模块通过子进程宿主对象向子进程模块发送的第一命令还包括:
登录信息标识;
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
网页填充命令;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及:
使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
其中,
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:窗口调整命令和对应的窗口大小参数;
所述第二命令执行模块423,还用于:
判断所述第二命令中是否包括窗口调整命令,若包括,则从所述第二命令中获得窗口大小参数,以及
使用所述子进程浏览器渲染对象的窗口设置方法按照所述窗口大小参数设置子进程浏览器窗体大小。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的进程通信装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种进程间通信的方法,包括:
主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
子进程启动并接收来自主进程的第一命令;
所述子进程创建对应的子进程对象,并对所述子进程对象进行初始化;
所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
所述主进程和所述子进程建立通信通道进行数据传输。
A2、如A1所述的方法,所述主进程和所述子进程建立通信通道进行数据传输,具体包括:
所述主进程通过主进程通信接口句柄接收来自子进程的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程发送数据;
所述子进程通过子进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
A3、如A1所述的方法,所述方法还包括:
主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
A4、如A3所述的方法,所述主进程创建子进程宿主对象之前还包括:
主进程创建新的浏览器子窗口;
主进程创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
所述主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识,具体包括:
主进程调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
所述主进程通过所述子进程宿主对象向对应的子进程发送的第二命令包括:
渲染对象创建命令和对应的渲染对象标识;
所述子进程解析并执行所述第二命令,具体包括:
子进程判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
所述方法还包括:
若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
A5、如A4所述的方法,
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:
子进程渲染对象导航命令和对应的目标网页标识;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
子进程使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
A6、如A5所述的方法,所述主进程通过子进程宿主对象向子进程发送的第一命令还包括:
登录信息标识;
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:
网页填充命令;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及:
子进程使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
A7、如A6所述的方法,
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:窗口调整命令和对应的窗口大小参数;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括窗口调整命令,若包括,则从所述第二命令中获得窗口大小参数,以及
子进程使用所述子进程浏览器渲染对象的窗口设置方法按照所述窗口大小参数设置子进程浏览器窗体大小。
本发明还公开了B8、一种进程间通信装置,包括主进程模块、子进程模块和数据通道;
所述主进程模块包括:
子进程宿主对象模块,用于创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
子进程启动模块,用于使用所述子进程宿主对象模块创建的子进程宿主对象启动子进程模块;
第一命令发送模块,用于向所述子进程启动模块启动的子进程模块发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
所述子进程模块包括:
第一命令接收模块,用于接收来自主进程模块的第一命令;
子进程对象模块,用于创建子进程对象,并对所述子进程对象进行初始化;
所述子进程对象模块,还用于向主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
所述主进程模块还包括:
第一消息响应模块,用于收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
所述数据通道,用于主进程模块和子进程模块进行数据传输。
B9、如B8所述的装置,所述数据通道,具体用于:
所述主进程模块通过主进程通信接口句柄接收来自子进程模块的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程模块发送数据;
所述子进程模块通过子进程通信接口句柄接收来自主进程模块的数据,并通过主进程通信接口句柄向主进程模块发送数据。
B10、如B8所述的装置,
所述主进程模块还包括:
第二命令发送模块,用于判断与子进程模块的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程模块发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
所述子进程模块还包括:
第二命令执行模块,用于当子进程模块接收到来自主进程模块的第二命令后,解析并执行所述第二命令。
B11、如B10所述的装置,
所述主进程模块还包括:
子窗口模块,用于创建新的浏览器子窗口;
子进程渲染宿主对象模块,用于创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
所述子进程宿主对象模块,具体用于:
主进程模块调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
所述第二命令发送模块通过所述子进程宿主对象向对应的子进程模块发送的第二命令包括:
渲染对象创建命令和对应的渲染对象标识;
所述第二命令执行模块,具体用于:
判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程模块发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
所述主进程模块还包括:
第二消息响应模块,用于若主进程模块收到来自子进程模块的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
B12、如B11所述的装置,
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
子进程渲染对象导航命令和对应的目标网页标识;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
B13、如B12所述的装置,所述第一命令发送模块通过子进程宿主对象向子进程模块发送的第一命令还包括:
登录信息标识;
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
网页填充命令;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括网页填充命令,若包括,则从所述第一命令中获得所述登录信息标识,以及:
使用所述子进程浏览器渲染对象的网页自动填充方法获取所述登录信息标识对应的登录配置规则、登录账号和登录密码;对所述导航的目标网页中登录对象按所述登录配置规则自动填充登录账号和登录密码。
B14、如B13所述的装置,其特征在于,
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:窗口调整命令和对应的窗口大小参数;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括窗口调整命令,若包括,则从所述第二命令中获得窗口大小参数,以及
使用所述子进程浏览器渲染对象的窗口设置方法按照所述窗口大小参数设置子进程浏览器窗体大小。
Claims (10)
1.一种进程间通信的方法,包括:
主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
主进程使用所述创建的子进程宿主对象启动子进程,并向所述子进程发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
子进程启动并接收来自主进程的第一命令;
所述子进程创建对应的子进程对象,并对所述子进程对象进行初始化;
所述子进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
主进程收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
所述主进程和所述子进程建立通信通道进行数据传输。
2.如权利要求1所述的方法,其特征在于,所述主进程和所述子进程建立通信通道进行数据传输,具体包括:
所述主进程通过主进程通信接口句柄接收来自子进程的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程发送数据;
所述子进程通过子进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
主进程判断与子进程的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
当子进程接收到来自主进程的第二命令后,解析并执行所述第二命令。
4.如权利要求3所述的方法,其特征在于,所述主进程创建子进程宿主对象之前还包括:
主进程创建新的浏览器子窗口;
主进程创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
所述主进程创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识,具体包括:
主进程调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
所述主进程通过所述子进程宿主对象向对应的子进程发送的第二命令包括:
渲染对象创建命令和对应的渲染对象标识;
所述子进程解析并执行所述第二命令,具体包括:
子进程判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
所述方法还包括:
若主进程收到来自子进程的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
5.如权利要求4所述的方法,其特征在于,
所述主进程通过子进程宿主对象向对应的子进程发送的第二命令还包括:
子进程渲染对象导航命令和对应的目标网页标识;
所述子进程解析并执行所述第二命令,还包括:
子进程判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
子进程使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
6.一种进程间通信装置,包括主进程模块、子进程模块和数据通道;
所述主进程模块包括:
子进程宿主对象模块,用于创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
子进程启动模块,用于使用所述子进程宿主对象模块创建的子进程宿主对象启动子进程模块;
第一命令发送模块,用于向所述子进程启动模块启动的子进程模块发送第一命令,所述第一命令行携带所述子进程标识、主进程通信接口句柄;
所述子进程模块包括:
第一命令接收模块,用于接收来自主进程模块的第一命令;
子进程对象模块,用于创建子进程对象,并对所述子进程对象进行初始化;
所述子进程对象模块,还用于向主进程发送启动应答消息,所述启动应答消息携带所述子进程对象对应的子进程通信接口句柄、子进程标识;
所述主进程模块还包括:
第一消息响应模块,用于收到子进程的启动应答消息后,根据所述启动应答消息中的子进程标识确定对应的子进程宿主对象,并为所述子进程宿主对象设置对应的子进程通信接口句柄;
所述数据通道,用于主进程模块和子进程模块进行数据传输。
7.如权利要求6所述的装置,其特征在于,所述数据通道,具体用于:
所述主进程模块通过主进程通信接口句柄接收来自子进程模块的数据,并通过子进程宿主对象的子进程通信接口句柄向对应的子进程模块发送数据;
所述子进程模块通过子进程通信接口句柄接收来自主进程模块的数据,并通过主进程通信接口句柄向主进程模块发送数据。
8.如权利要求9所述的装置,其特征在于,
所述主进程模块还包括:
第二命令发送模块,用于判断与子进程模块的数据通道是否已建成,若建成,通过所述子进程宿主对象向对应的子进程模块发送第二命令;若所述数据通道未建成,则缓存所述第二命令携带的命令参数;
所述子进程模块还包括:
第二命令执行模块,用于当子进程模块接收到来自主进程模块的第二命令后,解析并执行所述第二命令。
9.如权利要求8所述的装置,其特征在于,
所述主进程模块还包括:
子窗口模块,用于创建新的浏览器子窗口;
子进程渲染宿主对象模块,用于创建子进程渲染宿主对象,并为所述子进程渲染宿主对象分配对应的渲染对象标识;
所述子进程宿主对象模块,具体用于:
主进程模块调用所述子进程渲染宿主对象的导航方法,在所述导航方法中创建子进程宿主对象,并为所述子进程宿主对象分配一个对应的子进程标识;
所述第二命令发送模块通过所述子进程宿主对象向对应的子进程模块发送的第二命令包括:
渲染对象创建命令和对应的渲染对象标识;
所述第二命令执行模块,具体用于:
判断所述第二命令中是否包括渲染对象创建命令,若包括,则从所述第二命令中获得对应的渲染对象标识,以及:
创建子进程渲染对象,并为该子进程渲染对象设置所述渲染对象标识;
创建子进程浏览器渲染对象,并使用子进程对象的方法向主进程模块发送渲染对象创建应答消息,所述渲染对象创建应答消息携带所述子进程浏览器渲染对象的子进程浏览器窗口句柄;
所述主进程模块还包括:
第二消息响应模块,用于若主进程模块收到来自子进程模块的渲染对象创建应答消息,则从所述渲染对象创建应答消息中获得子进程浏览器窗口句柄,并将所述子进程浏览器窗口句柄的父窗口设置为当前浏览器子窗口。
10.如权利要求9所述的装置,其特征在于,
所述第二命令发送模块通过子进程宿主对象向对应的子进程模块发送的第二命令还包括:
子进程渲染对象导航命令和对应的目标网页标识;
所述第二命令执行模块,还用于:
判断所述第二命令中是否包括子进程渲染对象导航命令,若包括,则从所述第二命令中获得对应的目标网页标识,以及:
使用所述子进程浏览器渲染对象的导航方法导航所述目标网页标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310661786.7A CN103631664B (zh) | 2013-12-09 | 2013-12-09 | 一种进程间的通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310661786.7A CN103631664B (zh) | 2013-12-09 | 2013-12-09 | 一种进程间的通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103631664A true CN103631664A (zh) | 2014-03-12 |
CN103631664B CN103631664B (zh) | 2016-09-28 |
Family
ID=50212753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310661786.7A Active CN103631664B (zh) | 2013-12-09 | 2013-12-09 | 一种进程间的通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103631664B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461636A (zh) * | 2014-12-11 | 2015-03-25 | 北京搜狗科技发展有限公司 | 一种皮肤资源加载方法及电子设备 |
CN105069328A (zh) * | 2015-06-30 | 2015-11-18 | 北京奇虎科技有限公司 | 一种数据处理方法和装置 |
CN105159786A (zh) * | 2015-07-03 | 2015-12-16 | 北京奇虎科技有限公司 | 一种进程间通信的方法和装置 |
CN105468462A (zh) * | 2014-08-14 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 进程间通信身份验证及应用软件间通信方法和系统 |
CN105472574A (zh) * | 2014-06-13 | 2016-04-06 | 北京奇虎科技有限公司 | 后台程序发送消息的方法和装置 |
CN105681841A (zh) * | 2015-12-30 | 2016-06-15 | 广东欧珀移动通信有限公司 | 一种基于浏览器的视频播放控制方法及系统 |
CN105718307A (zh) * | 2014-12-01 | 2016-06-29 | 北京神州泰岳软件股份有限公司 | 进程管理方法及进程管理装置 |
CN106095602A (zh) * | 2016-06-22 | 2016-11-09 | 东软集团股份有限公司 | 控制进程运行的方法及装置 |
CN106162075A (zh) * | 2016-06-17 | 2016-11-23 | 浙江万朋教育科技股份有限公司 | 一种单台pc实现多路视频输入的稳定解决方法 |
CN109144741A (zh) * | 2017-06-13 | 2019-01-04 | 广东神马搜索科技有限公司 | 进程间通信的方法、装置及电子设备 |
CN109558739A (zh) * | 2017-09-26 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 程序运行方法、装置、终端及可读介质 |
CN109710429A (zh) * | 2014-12-26 | 2019-05-03 | 北京奇虎科技有限公司 | 进程间进行方法调用的方法及装置 |
CN110413386A (zh) * | 2019-06-27 | 2019-11-05 | 深圳市富途网络科技有限公司 | 多进程处理方法、装置、终端设备及计算机可读存储介质 |
CN111209125A (zh) * | 2019-12-31 | 2020-05-29 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
CN112231088A (zh) * | 2020-10-27 | 2021-01-15 | 海信电子科技(深圳)有限公司 | 一种浏览器进程优化方法及显示设备 |
WO2024159963A1 (zh) * | 2023-02-01 | 2024-08-08 | 天翼云科技有限公司 | 本地域名系统服务器的优化方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050073864A1 (en) * | 2003-09-19 | 2005-04-07 | International Business Machines Corporation | Ghost agents within a grid environment |
CN101783794A (zh) * | 2009-12-01 | 2010-07-21 | 深圳市蓝韵实业有限公司 | 一种改善存储服务器通信服务稳定性的方法 |
US20120216217A1 (en) * | 2011-02-22 | 2012-08-23 | Microsoft Corporation | Interface for displaying content supporting hardware acceleration |
CN102801961A (zh) * | 2012-08-21 | 2012-11-28 | 北京捷成世纪科技股份有限公司 | 一种基于多进程的音视频数据处理方法及系统 |
-
2013
- 2013-12-09 CN CN201310661786.7A patent/CN103631664B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050073864A1 (en) * | 2003-09-19 | 2005-04-07 | International Business Machines Corporation | Ghost agents within a grid environment |
CN101783794A (zh) * | 2009-12-01 | 2010-07-21 | 深圳市蓝韵实业有限公司 | 一种改善存储服务器通信服务稳定性的方法 |
US20120216217A1 (en) * | 2011-02-22 | 2012-08-23 | Microsoft Corporation | Interface for displaying content supporting hardware acceleration |
CN102801961A (zh) * | 2012-08-21 | 2012-11-28 | 北京捷成世纪科技股份有限公司 | 一种基于多进程的音视频数据处理方法及系统 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105472574A (zh) * | 2014-06-13 | 2016-04-06 | 北京奇虎科技有限公司 | 后台程序发送消息的方法和装置 |
CN105468462A (zh) * | 2014-08-14 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 进程间通信身份验证及应用软件间通信方法和系统 |
CN105468462B (zh) * | 2014-08-14 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 进程间通信身份验证及应用软件间通信方法和系统 |
CN105718307A (zh) * | 2014-12-01 | 2016-06-29 | 北京神州泰岳软件股份有限公司 | 进程管理方法及进程管理装置 |
CN104461636B (zh) * | 2014-12-11 | 2018-04-06 | 北京搜狗科技发展有限公司 | 一种皮肤资源加载方法及电子设备 |
CN104461636A (zh) * | 2014-12-11 | 2015-03-25 | 北京搜狗科技发展有限公司 | 一种皮肤资源加载方法及电子设备 |
CN109710429B (zh) * | 2014-12-26 | 2021-08-31 | 北京奇虎科技有限公司 | 进程间进行方法调用的方法及装置 |
CN109710429A (zh) * | 2014-12-26 | 2019-05-03 | 北京奇虎科技有限公司 | 进程间进行方法调用的方法及装置 |
CN105069328A (zh) * | 2015-06-30 | 2015-11-18 | 北京奇虎科技有限公司 | 一种数据处理方法和装置 |
CN105069328B (zh) * | 2015-06-30 | 2018-05-04 | 北京奇虎科技有限公司 | 一种数据处理方法和装置 |
CN105159786A (zh) * | 2015-07-03 | 2015-12-16 | 北京奇虎科技有限公司 | 一种进程间通信的方法和装置 |
CN105159786B (zh) * | 2015-07-03 | 2018-10-30 | 北京奇虎科技有限公司 | 一种进程间通信的方法和装置 |
CN105681841A (zh) * | 2015-12-30 | 2016-06-15 | 广东欧珀移动通信有限公司 | 一种基于浏览器的视频播放控制方法及系统 |
CN106162075A (zh) * | 2016-06-17 | 2016-11-23 | 浙江万朋教育科技股份有限公司 | 一种单台pc实现多路视频输入的稳定解决方法 |
CN106095602A (zh) * | 2016-06-22 | 2016-11-09 | 东软集团股份有限公司 | 控制进程运行的方法及装置 |
CN109144741A (zh) * | 2017-06-13 | 2019-01-04 | 广东神马搜索科技有限公司 | 进程间通信的方法、装置及电子设备 |
CN109558739A (zh) * | 2017-09-26 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 程序运行方法、装置、终端及可读介质 |
CN109558739B (zh) * | 2017-09-26 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 程序运行方法、装置、终端及可读介质 |
CN110413386A (zh) * | 2019-06-27 | 2019-11-05 | 深圳市富途网络科技有限公司 | 多进程处理方法、装置、终端设备及计算机可读存储介质 |
CN110413386B (zh) * | 2019-06-27 | 2023-06-30 | 深圳市富途网络科技有限公司 | 多进程处理方法、装置、终端设备及计算机可读存储介质 |
CN111209125A (zh) * | 2019-12-31 | 2020-05-29 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
CN111209125B (zh) * | 2019-12-31 | 2023-09-26 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
CN112231088A (zh) * | 2020-10-27 | 2021-01-15 | 海信电子科技(深圳)有限公司 | 一种浏览器进程优化方法及显示设备 |
CN112231088B (zh) * | 2020-10-27 | 2023-10-27 | Vidaa(荷兰)国际控股有限公司 | 一种浏览器进程优化方法及显示设备 |
WO2024159963A1 (zh) * | 2023-02-01 | 2024-08-08 | 天翼云科技有限公司 | 本地域名系统服务器的优化方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103631664B (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103631664B (zh) | 一种进程间的通信方法和装置 | |
CN111461332B (zh) | 深度学习模型在线推理方法、装置、电子设备和存储介质 | |
US11500946B2 (en) | Apparatus for providing browsing capability between remote/virtual windows and from remote/virtual windows to conventional hypertext documents | |
EP3751418B1 (en) | Resource configuration method and apparatus, terminal, and storage medium | |
US20140184622A1 (en) | Adaptive OpenGL 3D graphics in Virtual Desktop Infrastructure | |
CN111416756B (zh) | 协议测试方法、装置、计算机设备及存储介质 | |
CN107656768B (zh) | 控制页面跳转的方法及其系统 | |
EP2932390B1 (en) | Inversion-of-control component service models for virtual environments | |
KR20210094003A (ko) | 데이터 처리 방법 및 장치, 기기, 서버, 시스템 및 저장 매체 | |
WO2019228148A1 (zh) | 图像处理方法及装置、存储介质 | |
CN111079048B (zh) | 一种页面加载方法及装置 | |
KR20140027741A (ko) | 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치 | |
US9614900B1 (en) | Multi-process architecture for a split browser | |
CN104270443B (zh) | 一种能够动态解析Web应用的云计算系统及方法 | |
US10334014B2 (en) | Accessing connected service resources in a distributed application programming interface | |
US10733687B2 (en) | Method and apparatus for data communication in virtualized environment, and processor | |
CN112199621B (zh) | 快速生成海报的方法、装置及计算机设备 | |
CN103051722B (zh) | 一种确定页面是否被劫持的方法及相关设备 | |
US9692806B2 (en) | Route a service | |
CN105550050A (zh) | 硬件通信的方法及装置 | |
CN116781586A (zh) | 一种gRPC流量解析方法、装置、设备及介质 | |
US11758016B2 (en) | Hosted application as web widget toolkit | |
CN103077016B (zh) | 一种活动对象创建方法、装置及浏览器 | |
CN115729880A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN115098213A (zh) | 一种数据处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220725 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 |