一種進(jìn)程間的通信方法和裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種進(jìn)程間通信的方法,包括:主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象;主進(jìn)程使用所述創(chuàng)建的子進(jìn)程宿主對(duì)象啟動(dòng)子進(jìn)程,并向所述子進(jìn)程發(fā)送第一命令;子進(jìn)程啟動(dòng)并接收來(lái)自主進(jìn)程的第一命令;所述子進(jìn)程創(chuàng)建對(duì)應(yīng)的子進(jìn)程對(duì)象;所述子進(jìn)程對(duì)象向所述主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息;主進(jìn)程根據(jù)收到的啟動(dòng)應(yīng)答消息中的子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象設(shè)置對(duì)應(yīng)的子進(jìn)程通信接口句柄;所述主進(jìn)程和所述子進(jìn)程建立通信通道進(jìn)行數(shù)據(jù)傳輸。基于這樣的進(jìn)程間通信機(jī)制,即使主進(jìn)程需要運(yùn)行更多的子進(jìn)程,也不會(huì)增加進(jìn)程間通信的復(fù)雜度,有效降低了運(yùn)行和維護(hù)多個(gè)進(jìn)程間通信的成本。
【專利說(shuō)明】一種進(jìn)程間的通信方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及人機(jī)交互【技術(shù)領(lǐng)域】,具體涉及一種進(jìn)程間的通信方法和裝置。
【背景技術(shù)】
[0002]進(jìn)程是計(jì)算機(jī)系統(tǒng)分配資源的最小單位。每個(gè)進(jìn)程都有自己的一部分獨(dú)立的系統(tǒng)資源,彼此是隔離的。為了能使不同的進(jìn)程互相訪問(wèn)資源并進(jìn)行協(xié)調(diào)工作,就有了進(jìn)程間通信(Inter-Process Communication, IPC)。所謂IPC通信就是指進(jìn)程間的信息傳播或交換。
[0003]一般而言,主程序在運(yùn)行過(guò)程中會(huì)運(yùn)行對(duì)應(yīng)的主進(jìn)程,基于不同任務(wù)的需要往往還需要同時(shí)啟動(dòng)并運(yùn)行多個(gè)對(duì)應(yīng)的子進(jìn)程,而隨著子進(jìn)程數(shù)量的增加,進(jìn)程間通信的復(fù)雜度也隨之提高。這樣一來(lái),如何有效控制多進(jìn)程通信時(shí)的復(fù)雜度,減少數(shù)據(jù)傳輸錯(cuò)誤和異常就成為本領(lǐng)域技術(shù)人員在實(shí)施進(jìn)程間通信時(shí)需要解決的技術(shù)問(wèn)題。
【發(fā)明內(nèi)容】
[0004]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種進(jìn)程間的通信方法和裝置。
[0005]依據(jù)本發(fā)明的一個(gè)方面,提供了一種進(jìn)程間的通信方法,所述方法包括:
[0006]主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí);
[0007]主進(jìn)程使用所述創(chuàng)建的子進(jìn)程宿主對(duì)象啟動(dòng)子進(jìn)程,并向所述子進(jìn)程發(fā)送第一命令,所述第一命令行攜帶所述子進(jìn)程標(biāo)識(shí)、主進(jìn)程通信接口句柄;
[0008]子進(jìn)程啟動(dòng)并接收來(lái)自主進(jìn)程的第一命令;
[0009]所述子進(jìn)程創(chuàng)建對(duì)應(yīng)的子進(jìn)程對(duì)象,并對(duì)所述子進(jìn)程對(duì)象進(jìn)行初始化;
[0010]所述子進(jìn)程對(duì)象向所述主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息,所述啟動(dòng)應(yīng)答消息攜帶所述子進(jìn)程對(duì)象對(duì)應(yīng)的子進(jìn)程通信接口句柄、子進(jìn)程標(biāo)識(shí);
[0011]主進(jìn)程收到子進(jìn)程的啟動(dòng)應(yīng)答消息后,根據(jù)所述啟動(dòng)應(yīng)答消息中的子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象設(shè)置對(duì)應(yīng)的子進(jìn)程通信接口句柄;
[0012]所述主進(jìn)程和所述子進(jìn)程建立通信通道進(jìn)行數(shù)據(jù)傳輸。
[0013]可選地,所述主進(jìn)程和所述子進(jìn)程建立通信通道進(jìn)行數(shù)據(jù)傳輸,具體包括:
[0014]所述主進(jìn)程通過(guò)主進(jìn)程通信接口句柄接收來(lái)自子進(jìn)程的數(shù)據(jù),并通過(guò)子進(jìn)程宿主對(duì)象的子進(jìn)程通信接口句柄向?qū)?yīng)的子進(jìn)程發(fā)送數(shù)據(jù);
[0015]所述子進(jìn)程通過(guò)子進(jìn)程通信接口句柄接收來(lái)自主進(jìn)程的數(shù)據(jù),并通過(guò)主進(jìn)程通信接口句柄向主進(jìn)程發(fā)送數(shù)據(jù)。
[0016]可選地,所述方法還包括:
[0017]主進(jìn)程判斷與子進(jìn)程的數(shù)據(jù)通道是否已建成,若建成,通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù);[0018]當(dāng)子進(jìn)程接收到來(lái)自主進(jìn)程的第二命令后,解析并執(zhí)行所述第二命令。
[0019]可選地,所述主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象之前還包括:
[0020]主進(jìn)程創(chuàng)建新的瀏覽器子窗口 ;
[0021]主進(jìn)程創(chuàng)建子進(jìn)程渲染宿主對(duì)象,并為所述子進(jìn)程渲染宿主對(duì)象分配對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí);
[0022]所述主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí),具體包括:
[0023]主進(jìn)程調(diào)用所述子進(jìn)程渲染宿主對(duì)象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí);
[0024]所述主進(jìn)程通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令包括:
[0025]渲染對(duì)象創(chuàng)建命令和對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí);
[0026]所述子進(jìn)程解析并執(zhí)行所述第二命令,具體包括:
[0027]子進(jìn)程判斷所述第二命令中是否包括渲染對(duì)象創(chuàng)建命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí),以及:
[0028]創(chuàng)建子進(jìn)程渲染對(duì)象,并為該子進(jìn)程渲染對(duì)象設(shè)置所述渲染對(duì)象標(biāo)識(shí);
[0029]創(chuàng)建子進(jìn)程瀏覽器渲染對(duì)象,并使用子進(jìn)程對(duì)象的方法向主進(jìn)程發(fā)送渲染對(duì)象創(chuàng)建應(yīng)答消息,所述渲染對(duì)象創(chuàng)建應(yīng)答消息攜帶所述子進(jìn)程瀏覽器渲染對(duì)象的子進(jìn)程瀏覽器窗口句柄;
[0030]所述方法還包括:
[0031]若主進(jìn)程收到來(lái)自子進(jìn)程的渲染對(duì)象創(chuàng)建應(yīng)答消息,則從所述渲染對(duì)象創(chuàng)建應(yīng)答消息中獲得子進(jìn)程瀏覽器窗口句柄,并將所述子進(jìn)程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
[0032]可選地,
[0033]所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令還包括:
[0034]子進(jìn)程渲染對(duì)象導(dǎo)航命令和對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí);
[0035]所述子進(jìn)程解析并執(zhí)行所述第二命令,還包括:
[0036]子進(jìn)程判斷所述第二命令中是否包括子進(jìn)程渲染對(duì)象導(dǎo)航命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí),以及:
[0037]子進(jìn)程使用所述子進(jìn)程瀏覽器渲染對(duì)象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí)。
[0038]可選地,所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向子進(jìn)程發(fā)送的第一命令還包括:
[0039]登錄"[目息標(biāo)識(shí);
[0040]所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令還包括:
[0041]網(wǎng)頁(yè)填充命令;
[0042]所述子進(jìn)程解析并執(zhí)行所述第二命令,還包括:
[0043]子進(jìn)程判斷所述第二命令中是否包括網(wǎng)頁(yè)填充命令,若包括,則從所述第一命令中獲得所述登錄信息標(biāo)識(shí),以及:
[0044]子進(jìn)程使用所述子進(jìn)程瀏覽器渲染對(duì)象的網(wǎng)頁(yè)自動(dòng)填充方法獲取所述登錄信息標(biāo)識(shí)對(duì)應(yīng)的登錄配置規(guī)則、登錄賬號(hào)和登錄密碼;對(duì)所述導(dǎo)航的目標(biāo)網(wǎng)頁(yè)中登錄對(duì)象按所述登錄配置規(guī)則自動(dòng)填充登錄賬號(hào)和登錄密碼。[0045]可選地,
[0046]所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令還包括:窗口調(diào)整命令和對(duì)應(yīng)的窗口大小參數(shù);
[0047]所述子進(jìn)程解析并執(zhí)行所述第二命令,還包括:
[0048]子進(jìn)程判斷所述第二命令中是否包括窗口調(diào)整命令,若包括,則從所述第二命令中獲得窗口大小參數(shù),以及
[0049]子進(jìn)程使用所述子進(jìn)程瀏覽器渲染對(duì)象的窗口設(shè)置方法按照所述窗口大小參數(shù)設(shè)置子進(jìn)程瀏覽器窗體大小。
[0050]根據(jù)本發(fā)明的另一方面,提供了一種進(jìn)程間通信裝置,所述裝置包括:
[0051]包括主進(jìn)程模塊、子進(jìn)程模塊和數(shù)據(jù)通道;
[0052]所述主進(jìn)程模塊包括:
[0053]子進(jìn)程宿主對(duì)象模塊,用于創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí);
[0054]子進(jìn)程啟動(dòng)模塊,用于使用所述子進(jìn)程宿主對(duì)象模塊創(chuàng)建的子進(jìn)程宿主對(duì)象啟動(dòng)子進(jìn)程模塊;
[0055]第一命令發(fā)送模塊,用于向所述子進(jìn)程啟動(dòng)模塊啟動(dòng)的子進(jìn)程模塊發(fā)送第一命令,所述第一命令行攜帶所述子進(jìn)程標(biāo)識(shí)、主進(jìn)程通信接口句柄;
[0056]所述子進(jìn)程模塊包括:
[0057]第一命令接收模塊,用于接收來(lái)自主進(jìn)程模塊的第一命令;
[0058]子進(jìn)程對(duì)象模塊,用于創(chuàng)建子進(jìn)程對(duì)象,并對(duì)所述子進(jìn)程對(duì)象進(jìn)行初始化;
[0059]所述子進(jìn)程對(duì)象模塊,還用于向主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息,所述啟動(dòng)應(yīng)答消息攜帶所述子進(jìn)程對(duì)象對(duì)應(yīng)的子進(jìn)程通信接口句柄、子進(jìn)程標(biāo)識(shí);
[0060]所述主進(jìn)程模塊還包括:
[0061]第一消息響應(yīng)模塊,用于收到子進(jìn)程的啟動(dòng)應(yīng)答消息后,根據(jù)所述啟動(dòng)應(yīng)答消息中的子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象設(shè)置對(duì)應(yīng)的子進(jìn)程通信接口句柄;
[0062]所述數(shù)據(jù)通道,用于主進(jìn)程模塊和子進(jìn)程模塊進(jìn)行數(shù)據(jù)傳輸。
[0063]其中,所述數(shù)據(jù)通道,具體用于:
[0064]所述主進(jìn)程模塊通過(guò)主進(jìn)程通信接口句柄接收來(lái)自子進(jìn)程模塊的數(shù)據(jù),并通過(guò)子進(jìn)程宿主對(duì)象的子進(jìn)程通信接口句柄向?qū)?yīng)的子進(jìn)程模塊發(fā)送數(shù)據(jù);
[0065]所述子進(jìn)程模塊通過(guò)子進(jìn)程通信接口句柄接收來(lái)自主進(jìn)程模塊的數(shù)據(jù),并通過(guò)主進(jìn)程通信接口句柄向主進(jìn)程模塊發(fā)送數(shù)據(jù)。
[0066]可選地,
[0067]所述主進(jìn)程模塊還包括:
[0068]第二命令發(fā)送模塊,用于判斷與子進(jìn)程模塊的數(shù)據(jù)通道是否已建成,若建成,通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù);
[0069]所述子進(jìn)程模塊還包括:
[0070]第二命令執(zhí)行模塊,用于當(dāng)子進(jìn)程模塊接收到來(lái)自主進(jìn)程模塊的第二命令后,解析并執(zhí)行所述第二命令。
[0071]可選地,
[0072]所述主進(jìn)程模塊還包括:
[0073]子窗口模塊,用于創(chuàng)建新的瀏覽器子窗口 ;
[0074]子進(jìn)程渲染宿主對(duì)象模塊,用于創(chuàng)建子進(jìn)程渲染宿主對(duì)象,并為所述子進(jìn)程渲染宿主對(duì)象分配對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí);
[0075]所述子進(jìn)程宿主對(duì)象模塊,具體用于:
[0076]主進(jìn)程模塊調(diào)用所述子進(jìn)程渲染宿主對(duì)象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí);
[0077]所述第二命令發(fā)送模塊通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送的第二命令包括:
[0078]渲染對(duì)象創(chuàng)建命令和對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí);
[0079]所述第二命令執(zhí)行模塊,具體用于:
[0080]判斷所述第二命令中是否包括渲染對(duì)象創(chuàng)建命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí),以及:
[0081]創(chuàng)建子進(jìn)程渲染對(duì)象,并為該子進(jìn)程渲染對(duì)象設(shè)置所述渲染對(duì)象標(biāo)識(shí);
[0082]創(chuàng)建子進(jìn)程瀏覽器渲染對(duì)象,并使用子進(jìn)程對(duì)象的方法向主進(jìn)程模塊發(fā)送渲染對(duì)象創(chuàng)建應(yīng)答消息,所述渲染對(duì)象創(chuàng)建應(yīng)答消息攜帶所述子進(jìn)程瀏覽器渲染對(duì)象的子進(jìn)程瀏覽器窗口句柄;
[0083]所述主進(jìn)程模塊還包括:
[0084]第二消息響應(yīng)模塊,用于若主進(jìn)程模塊收到來(lái)自子進(jìn)程模塊的渲染對(duì)象創(chuàng)建應(yīng)答消息,則從所述渲染對(duì)象創(chuàng)建應(yīng)答消息中獲得子進(jìn)程瀏覽器窗口句柄,并將所述子進(jìn)程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
[0085]可選地,
[0086]所述第二命令發(fā)送模塊通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送的第二命令還包括:
[0087]子進(jìn)程渲染對(duì)象導(dǎo)航命令和對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí);
[0088]所述第二命令執(zhí)行模塊,還用于:
[0089]判斷所述第二命令中是否包括子進(jìn)程渲染對(duì)象導(dǎo)航命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí),以及:
[0090]使用所述子進(jìn)程瀏覽器渲染對(duì)象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí)。
[0091]可選地,所述第一命令發(fā)送模塊通過(guò)子進(jìn)程宿主對(duì)象向子進(jìn)程模塊發(fā)送的第一命令還包括:
[0092]登錄彳目息標(biāo)識(shí);
[0093]所述第二命令發(fā)送模塊通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送的第二命令還包括:
[0094]網(wǎng)頁(yè)填充命令;
[0095]所述第二命令執(zhí)行模塊,還用于:
[0096]判斷所述第二命令中是否包括網(wǎng)頁(yè)填充命令,若包括,則從所述第一命令中獲得所述登錄信息標(biāo)識(shí),以及:
[0097]使用所述子進(jìn)程瀏覽器渲染對(duì)象的網(wǎng)頁(yè)自動(dòng)填充方法獲取所述登錄信息標(biāo)識(shí)對(duì)應(yīng)的登錄配置規(guī)則、登錄賬號(hào)和登錄密碼;對(duì)所述導(dǎo)航的目標(biāo)網(wǎng)頁(yè)中登錄對(duì)象按所述登錄配置規(guī)則自動(dòng)填充登錄賬號(hào)和登錄密碼。
[0098]可選地,
[0099]所述第二命令發(fā)送模塊通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送的第二命令還包括:窗口調(diào)整命令和對(duì)應(yīng)的窗口大小參數(shù);
[0100]所述第二命令執(zhí)行模塊,還用于:
[0101]判斷所述第二命令中是否包括窗口調(diào)整命令,若包括,則從所述第二命令中獲得窗口大小參數(shù),以及
[0102]使用所述子進(jìn)程瀏覽器渲染對(duì)象的窗口設(shè)置方法按照所述窗口大小參數(shù)設(shè)置子進(jìn)程瀏覽器窗體大小。
[0103]現(xiàn)有的進(jìn)程間通信,隨著子進(jìn)程數(shù)量的增加,主進(jìn)程與子進(jìn)程之間的通信復(fù)雜度也急劇增加,使得控制和維護(hù)成本居高不下。本發(fā)明實(shí)施例通過(guò)定義子進(jìn)程宿主對(duì)象模型,并由主進(jìn)程創(chuàng)建和管理子進(jìn)程宿主對(duì)象,通過(guò)分配唯一的子進(jìn)程標(biāo)識(shí)建立子進(jìn)程宿主對(duì)象和子進(jìn)程對(duì)象之間的對(duì)應(yīng)關(guān)系,通過(guò)交換進(jìn)程通信接口句柄建立主進(jìn)程與子進(jìn)程之間的數(shù)據(jù)通道,使得主進(jìn)程僅僅使用子進(jìn)程標(biāo)識(shí)確定子進(jìn)程宿主對(duì)象就能夠?qū)崿F(xiàn)對(duì)應(yīng)的子進(jìn)程對(duì)象的數(shù)據(jù)傳輸。基于這樣的進(jìn)程間通信機(jī)制,即使主進(jìn)程需要運(yùn)行更多的子進(jìn)程,也不會(huì)增加進(jìn)程間通信的復(fù)雜度,有效降低了運(yùn)行和維護(hù)多個(gè)進(jìn)程間通信的成本。
[0104]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】
【附圖說(shuō)明】
[0105]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0106]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種進(jìn)程間通信方法的步驟流程圖;
[0107]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種進(jìn)程間通信方法的步驟流程圖;
[0108]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種進(jìn)程間通信方法的時(shí)序流程圖;
[0109]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種進(jìn)程間通信裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0110]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0111]實(shí)施例一
[0112]參照?qǐng)D1,圖1示出了本發(fā)明實(shí)施例提供的一種進(jìn)程間通信方法,所述方法包括:[0113]S101,主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí)。
[0114]本發(fā)明實(shí)施例中,主進(jìn)程創(chuàng)建并管理子進(jìn)程宿主對(duì)象,每個(gè)子進(jìn)程宿主對(duì)象對(duì)應(yīng)一個(gè)子進(jìn)程,并擁有與所對(duì)應(yīng)子進(jìn)程相同的子進(jìn)程標(biāo)識(shí)。
[0115]S102,主進(jìn)程使用所述創(chuàng)建的子進(jìn)程宿主對(duì)象啟動(dòng)子進(jìn)程,并向所述子進(jìn)程發(fā)送第一命令,所述第一命令行攜帶所述子進(jìn)程標(biāo)識(shí)、主進(jìn)程通信接口句柄。
[0116]子進(jìn)程宿主對(duì)象中提供了創(chuàng)建和啟動(dòng)子進(jìn)程的方法,并提供了數(shù)據(jù)通信接口用于向子進(jìn)程發(fā)送第一命令。
[0117]具體而言,主進(jìn)程以命令行的方式通過(guò)調(diào)用子進(jìn)程宿主對(duì)象提供的進(jìn)程創(chuàng)建方法創(chuàng)建一個(gè)新的子進(jìn)程,所述命令行包括所述第一命令。
[0118]其中,所謂句柄是操作系統(tǒng)中的一個(gè)唯一的整數(shù)值,用來(lái)標(biāo)志應(yīng)用程序中的不同對(duì)象和同類對(duì)象中的不同的實(shí)例,諸如,一個(gè)窗口,按鈕,圖標(biāo),滾動(dòng)條,輸出設(shè)備,控件或者文件等。通過(guò)句柄可以訪問(wèn)相應(yīng)對(duì)象的信息。
[0119]S103,子進(jìn)程啟動(dòng)并接收來(lái)自主進(jìn)程的第一命令。
[0120]S104,所述子進(jìn)程創(chuàng)建對(duì)應(yīng)的子進(jìn)程對(duì)象,并對(duì)所述子進(jìn)程對(duì)象進(jìn)行初始化。
[0121]調(diào)用子進(jìn)程對(duì)象提供的初始化方法對(duì)所述子進(jìn)程對(duì)象進(jìn)行初始化,在所述初始化方法中對(duì)所接收到的第一命令中攜帶的子進(jìn)程標(biāo)識(shí)、主進(jìn)程通信接口句柄等命令行參數(shù)進(jìn)行保存。
[0122]S105,所述子進(jìn)程對(duì)象向所述主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息,所述啟動(dòng)應(yīng)答消息攜帶所述子進(jìn)程對(duì)象對(duì)應(yīng)的子進(jìn)程通信接口句柄、子進(jìn)程標(biāo)識(shí)。
[0123]子進(jìn)程對(duì)象初始化完成后,使用IPC向主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息。
[0124]S106,主進(jìn)程收到子進(jìn)程的啟動(dòng)應(yīng)答消息后,根據(jù)所述啟動(dòng)應(yīng)答消息中的子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象設(shè)置對(duì)應(yīng)的子進(jìn)程通信接口句柄。
[0125]至此,主進(jìn)程中的每個(gè)子進(jìn)程宿主對(duì)象就擁有了與其對(duì)應(yīng)的子進(jìn)程對(duì)象的子進(jìn)程通信接口句柄,而每個(gè)子進(jìn)程也獲得了對(duì)應(yīng)主進(jìn)程的通信接口句柄?;讷@得的子進(jìn)程通信接口句柄,子進(jìn)程宿主對(duì)象對(duì)外提供與對(duì)應(yīng)的子進(jìn)程對(duì)象進(jìn)行進(jìn)程間通信的通信接口,使得主進(jìn)程能夠通過(guò)調(diào)用所述通信接口向?qū)?yīng)的子進(jìn)程發(fā)送數(shù)據(jù)。
[0126]S107,所述主進(jìn)程和所述子進(jìn)程建立通信通道進(jìn)行數(shù)據(jù)傳輸。
[0127]其中,所述主進(jìn)程和所述子進(jìn)程建立通信通道通信通道進(jìn)行數(shù)據(jù)傳輸,具體包括:
[0128]所述主進(jìn)程通過(guò)主進(jìn)程通信接口句柄接收來(lái)自子進(jìn)程的數(shù)據(jù),并通過(guò)子進(jìn)程宿主對(duì)象的子進(jìn)程通信接口句柄向?qū)?yīng)的子進(jìn)程發(fā)送數(shù)據(jù);
[0129]所述子進(jìn)程通過(guò)子進(jìn)程通信接口句柄接收來(lái)自主進(jìn)程的數(shù)據(jù),并通過(guò)主進(jìn)程通信接口句柄向主進(jìn)程發(fā)送數(shù)據(jù)。
[0130]本發(fā)明實(shí)施例通過(guò)定義子進(jìn)程宿主對(duì)象模型,并由主進(jìn)程創(chuàng)建和管理子進(jìn)程宿主對(duì)象,通過(guò)分配唯一的子進(jìn)程標(biāo)識(shí)建立子進(jìn)程宿主對(duì)象和子進(jìn)程對(duì)象之間的對(duì)應(yīng)關(guān)系,通過(guò)交換進(jìn)程通信接口句柄建立主進(jìn)程與子進(jìn)程之間的數(shù)據(jù)通道,使得主進(jìn)程僅僅使用子進(jìn)程標(biāo)識(shí)確定子進(jìn)程宿主對(duì)象就能夠?qū)崿F(xiàn)對(duì)應(yīng)的子進(jìn)程對(duì)象的數(shù)據(jù)傳輸?;谶@樣的進(jìn)程間通信機(jī)制,即使主進(jìn)程需要運(yùn)行更多的子進(jìn)程,也不會(huì)增加進(jìn)程間通信的復(fù)雜度,有效降低了運(yùn)行和維護(hù)多個(gè)進(jìn)程間通信的成本。
[0131]在所述實(shí)施例一的另一擴(kuò)展實(shí)施例中,所述方法還包括:
[0132]S108,主進(jìn)程判斷與子進(jìn)程的數(shù)據(jù)通道是否已建成,若建成,通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù)。
[0133]S109,當(dāng)子進(jìn)程接收到來(lái)自主進(jìn)程的第二命令后,解析并執(zhí)行所述第二命令。
[0134]當(dāng)主進(jìn)程與子進(jìn)程之間的數(shù)據(jù)通道建成后,主進(jìn)程可根據(jù)實(shí)施需要向子進(jìn)程發(fā)送第二命令,例如監(jiān)聽(tīng)命令、銷毀子進(jìn)程命令等。需要說(shuō)明的是,本領(lǐng)域技術(shù)人員可根據(jù)實(shí)際需要組織第二命令的指令內(nèi)容和包含的參數(shù),本發(fā)明對(duì)此不作具體限制。
[0135]在數(shù)據(jù)通道建成前,主進(jìn)程緩存第二命令及其攜帶的參數(shù),當(dāng)檢測(cè)到數(shù)據(jù)通道建成后,則將之前緩存的第二命令及其攜帶的參數(shù)一起發(fā)送給對(duì)應(yīng)的子進(jìn)程。通過(guò)上述緩存機(jī)制,能夠?qū)⒌诙詈翢o(wú)遺漏地發(fā)往子進(jìn)程,保證了通信的完整性。
[0136]實(shí)施例二
[0137]參照?qǐng)D2,圖2示出了本發(fā)明實(shí)施例提供的一種進(jìn)程間通信方法,所述方法包括:
[0138]S201,主進(jìn)程創(chuàng)建新的瀏覽器子窗口。
[0139]S202,主進(jìn)程創(chuàng)建子進(jìn)程渲染宿主對(duì)象,并為所述子進(jìn)程渲染宿主對(duì)象分配對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí)。
[0140]S203,主進(jìn)程調(diào)用所述子進(jìn)程渲染宿主對(duì)象的方法,在所述方法中創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí)。
[0141]S204,主進(jìn)程使用所述創(chuàng)建的子進(jìn)程宿主對(duì)象啟動(dòng)子進(jìn)程,并向所述子進(jìn)程發(fā)送第一命令,所述第一命令行攜帶所述子進(jìn)程標(biāo)識(shí)、主進(jìn)程通信接口句柄。
[0142]S205,子進(jìn)程啟動(dòng)并接收來(lái)自主進(jìn)程的第一命令。
[0143]S206,子進(jìn)程創(chuàng)建對(duì)應(yīng)的子進(jìn)程對(duì)象,并對(duì)所述子進(jìn)程對(duì)象進(jìn)行初始化。
[0144]子進(jìn)程對(duì)象初始化的同時(shí)保存第一命令及其攜帶的參數(shù)。
[0145]S207,所述子進(jìn)程對(duì)象向所述主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息,所述啟動(dòng)應(yīng)答消息攜帶所述子進(jìn)程對(duì)象對(duì)應(yīng)的子進(jìn)程通信接口句柄、子進(jìn)程標(biāo)識(shí)。
[0146]S208,主進(jìn)程收到子進(jìn)程的啟動(dòng)應(yīng)答消息后,根據(jù)所述啟動(dòng)應(yīng)答消息中的子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象設(shè)置對(duì)應(yīng)的子進(jìn)程通信接口句柄。
[0147]子進(jìn)程宿主對(duì)象通過(guò)設(shè)置的子進(jìn)程通信接口句柄即可訪問(wèn)對(duì)應(yīng)的子進(jìn)程對(duì)象。
[0148]S209,所述主進(jìn)程和所述子進(jìn)程建立通信通道進(jìn)行數(shù)據(jù)傳輸。
[0149]S210,主進(jìn)程判斷與子進(jìn)程的數(shù)據(jù)通道是否已建成,若建成,通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送第二命令,所述第二命令包括:渲染對(duì)象創(chuàng)建命令和對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí);若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù)。
[0150]S211,當(dāng)子進(jìn)程接收到來(lái)自主進(jìn)程的第二命令后,解析并執(zhí)行所述第二命令。
[0151]其中,子進(jìn)程解析并執(zhí)行所述第二命令具體包括:
[0152]子進(jìn)程判斷所述第二命令中是否包括渲染對(duì)象創(chuàng)建命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí),以及:[0153]創(chuàng)建子進(jìn)程渲染對(duì)象,并為該子進(jìn)程渲染對(duì)象設(shè)置所述渲染對(duì)象標(biāo)識(shí);
[0154]創(chuàng)建子進(jìn)程瀏覽器渲染對(duì)象,并使用子進(jìn)程對(duì)象的發(fā)送方法向主進(jìn)程發(fā)送渲染對(duì)象創(chuàng)建應(yīng)答消息,所述渲染對(duì)象創(chuàng)建應(yīng)答消息攜帶所述子進(jìn)程瀏覽器渲染對(duì)象的子進(jìn)程瀏覽器窗口句柄。
[0155]S212,若主進(jìn)程收到來(lái)自子進(jìn)程的渲染對(duì)象創(chuàng)建應(yīng)答消息,則從所述渲染對(duì)象創(chuàng)建應(yīng)答消息中獲得子進(jìn)程瀏覽器窗口句柄,并將所述子進(jìn)程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
[0156]若應(yīng)用程序中需要打開(kāi)運(yùn)行多個(gè)瀏覽器子窗口時(shí),主進(jìn)程中創(chuàng)建并管理多個(gè)子進(jìn)程渲染對(duì)象宿主,每個(gè)子進(jìn)程渲染對(duì)象宿主對(duì)應(yīng)一個(gè)子進(jìn)程渲染對(duì)象,而每一個(gè)子進(jìn)程渲染對(duì)象下面管理著一個(gè)子進(jìn)程瀏覽器渲染對(duì)象,所述子進(jìn)程瀏覽器渲染對(duì)象封裝了瀏覽器的webtoowser及其對(duì)應(yīng)的操作,通過(guò)將子進(jìn)程瀏覽器渲染對(duì)象的子進(jìn)程瀏覽器窗口句柄的父窗口設(shè)置為其對(duì)應(yīng)的瀏覽器子窗口,即相當(dāng)于在該瀏覽器子窗口中內(nèi)嵌了一個(gè)IE瀏覽器窗口。
[0157]主進(jìn)程通過(guò)渲染對(duì)象標(biāo)識(shí)或子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程渲染對(duì)象宿主,并通過(guò)該子進(jìn)程渲染對(duì)象宿主宿主對(duì)應(yīng)的子進(jìn)程渲染對(duì)象對(duì)瀏覽器子窗口中的內(nèi)嵌webtoowser進(jìn)行訪問(wèn)和操作。
[0158]本發(fā)明實(shí)施例中,所述主進(jìn)程創(chuàng)建瀏覽器子窗口以及子進(jìn)程瀏覽器渲染對(duì)象封裝瀏覽器的webbrowser只是本發(fā)明優(yōu)選的方法,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在實(shí)施本發(fā)明時(shí),按照子窗口所承載內(nèi)容和目的的不同,主進(jìn)程可創(chuàng)建任意類型的子窗口和對(duì)應(yīng)的子進(jìn)程窗口渲染對(duì)象,該子進(jìn)程窗口渲染對(duì)象可封裝不同的對(duì)象及操作,本發(fā)明對(duì)此不作具體限制,例如創(chuàng)建一個(gè)視頻播放子窗口、CAD畫圖子窗口、或其他第三方軟件控制子窗口等。
[0159]在上述實(shí)施例二的另一擴(kuò)展實(shí)施例中,所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令還包括:子進(jìn)程渲染對(duì)象導(dǎo)航命令和對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí);
[0160]所述子進(jìn)程解析并執(zhí)行所述第二命令,還包括:
[0161]子進(jìn)程判斷所述第二命令中是否包括子進(jìn)程渲染對(duì)象導(dǎo)航命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí),以及:子進(jìn)程使用所述子進(jìn)程瀏覽器渲染對(duì)象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí)。
[0162]其中,目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí)具體可以是一個(gè)網(wǎng)頁(yè)URL,例如一個(gè)網(wǎng)站的登錄頁(yè)面URL,當(dāng)用戶點(diǎn)擊該網(wǎng)頁(yè)URL的鏈接時(shí),主進(jìn)程創(chuàng)建一個(gè)瀏覽器子窗口,并在該瀏覽器子窗口中加載該網(wǎng)頁(yè)URL對(duì)應(yīng)的網(wǎng)頁(yè)元素。
[0163]在上述實(shí)施例的另一擴(kuò)展實(shí)施例中,所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向子進(jìn)程發(fā)送的第一命令還包括:登錄信息標(biāo)識(shí);
[0164]所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令還包括:網(wǎng)頁(yè)填充命令;
[0165]所述子進(jìn)程解析并執(zhí)行所述第二命令,還包括:
[0166]子進(jìn)程判斷所述第二命令中是否包括網(wǎng)頁(yè)填充命令,若包括,則從所述第一命令中獲得所述登錄信息標(biāo)識(shí),以及子進(jìn)程使用所述子進(jìn)程瀏覽器渲染對(duì)象的網(wǎng)頁(yè)自動(dòng)填充方法獲取所述登錄信息標(biāo)識(shí)對(duì)應(yīng)的登錄配置規(guī)則、登錄賬號(hào)和登錄密碼;對(duì)所述導(dǎo)航的目標(biāo)網(wǎng)頁(yè)中登錄對(duì)象按所述登錄配置規(guī)則自動(dòng)填充登錄賬號(hào)和登錄密碼。[0167]實(shí)施例三
[0168]本實(shí)施例以具體的數(shù)據(jù)對(duì)象模型為例,對(duì)本發(fā)明提供的一種進(jìn)程間通信方法進(jìn)行描述,涉及的數(shù)據(jù)對(duì)象模型定義如下:
[0169]CApplication 應(yīng)用程序
[0170]-CMainProcess 主進(jìn)程
[0171]-CChiIdProcess 子進(jìn)程
[0172]其中,主進(jìn)程CMainProcess提供的數(shù)據(jù)模型如表1所示;子進(jìn)程CChiIdProcess
提供的數(shù)據(jù)模型如表2所示:
[0173]
【權(quán)利要求】
1.一種進(jìn)程間通信的方法,包括: 主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí);主進(jìn)程使用所述創(chuàng)建的子進(jìn)程宿主對(duì)象啟動(dòng)子進(jìn)程,并向所述子進(jìn)程發(fā)送第一命令,所述第一命令行攜帶所述子進(jìn)程標(biāo)識(shí)、主進(jìn)程通信接口句柄; 子進(jìn)程啟動(dòng)并接收來(lái)自主進(jìn)程的第一命令; 所述子進(jìn)程創(chuàng)建對(duì)應(yīng)的子進(jìn)程對(duì)象,并對(duì)所述子進(jìn)程對(duì)象進(jìn)行初始化; 所述子進(jìn)程對(duì)象向所述主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息,所述啟動(dòng)應(yīng)答消息攜帶所述子進(jìn)程對(duì)象對(duì)應(yīng)的子進(jìn)程通信接口句柄、子進(jìn)程標(biāo)識(shí); 主進(jìn)程收到子進(jìn)程的啟動(dòng)應(yīng)答消息后,根據(jù)所述啟動(dòng)應(yīng)答消息中的子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象設(shè)置對(duì)應(yīng)的子進(jìn)程通信接口句柄; 所述主進(jìn)程和所述子進(jìn)程建立通信通道進(jìn)行數(shù)據(jù)傳輸。
2.如權(quán)利要求1所述的方法,其特征在于,所述主進(jìn)程和所述子進(jìn)程建立通信通道進(jìn)行數(shù)據(jù)傳輸,具體包括: 所述主進(jìn)程通過(guò)主進(jìn)程通信接口句柄接收來(lái)自子進(jìn)程的數(shù)據(jù),并通過(guò)子進(jìn)程宿主對(duì)象的子進(jìn)程通信接口句柄向?qū)?yīng)的子進(jìn)程發(fā)送數(shù)據(jù); 所述子進(jìn)程通過(guò)子進(jìn)程通信接口句柄接收來(lái)自主進(jìn)程的數(shù)據(jù),并通過(guò)主進(jìn)程通信接口句柄向主進(jìn)程發(fā)送數(shù)據(jù)。
3.如權(quán)利要求1所 述的方法,其特征在于,所述方法還包括: 主進(jìn)程判斷與子進(jìn)程的數(shù)據(jù)通道是否已建成,若建成,通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù); 當(dāng)子進(jìn)程接收到來(lái)自主進(jìn)程的第二命令后,解析并執(zhí)行所述第二命令。
4.如權(quán)利要求3所述的方法,其特征在于,所述主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象之前還包括: 主進(jìn)程創(chuàng)建新的瀏覽器子窗口; 主進(jìn)程創(chuàng)建子進(jìn)程渲染宿主對(duì)象,并為所述子進(jìn)程渲染宿主對(duì)象分配對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí); 所述主進(jìn)程創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí),具體包括: 主進(jìn)程調(diào)用所述子進(jìn)程渲染宿主對(duì)象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí); 所述主進(jìn)程通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令包括: 渲染對(duì)象創(chuàng)建命令和對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí); 所述子進(jìn)程解析并執(zhí)行所述第二命令,具體包括: 子進(jìn)程判斷所述第二命令中是否包括渲染對(duì)象創(chuàng)建命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí),以及: 創(chuàng)建子進(jìn)程渲染對(duì)象,并為該子進(jìn)程渲染對(duì)象設(shè)置所述渲染對(duì)象標(biāo)識(shí); 創(chuàng)建子進(jìn)程瀏覽器渲染對(duì)象,并使用子進(jìn)程對(duì)象的方法向主進(jìn)程發(fā)送渲染對(duì)象創(chuàng)建應(yīng)答消息,所述渲染對(duì)象創(chuàng)建應(yīng)答消息攜帶所述子進(jìn)程瀏覽器渲染對(duì)象的子進(jìn)程瀏覽器窗口句柄; 所述方法還包括: 若主進(jìn)程收到來(lái)自子進(jìn)程的渲染對(duì)象創(chuàng)建應(yīng)答消息,則從所述渲染對(duì)象創(chuàng)建應(yīng)答消息中獲得子進(jìn)程瀏覽器窗口句柄,并將所述子進(jìn)程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
5.如權(quán)利要求4所述的方法,其特征在于, 所述主進(jìn)程通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程發(fā)送的第二命令還包括: 子進(jìn)程渲染對(duì)象導(dǎo)航命令和對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí); 所述子進(jìn)程解析并執(zhí)行所述第二命令,還包括: 子進(jìn)程判斷所述第二命令中是否包括子進(jìn)程渲染對(duì)象導(dǎo)航命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí),以及: 子進(jìn)程使用所述子進(jìn)程瀏覽器渲染對(duì)象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí)。
6.一種進(jìn)程間通信裝置,包括主進(jìn)程模塊、子進(jìn)程模塊和數(shù)據(jù)通道; 所述主進(jìn)程模塊包括: 子進(jìn)程宿主對(duì)象模塊,用于創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí); 子進(jìn)程啟動(dòng)模塊,用于使用所述子進(jìn)程宿主對(duì)象模塊創(chuàng)建的子進(jìn)程宿主對(duì)象啟動(dòng)子進(jìn)程模塊; 第一命令發(fā)送模塊,用于向所述子進(jìn)程啟動(dòng)模塊啟動(dòng)的子進(jìn)程模塊發(fā)送第一命令,所述第一命令行攜帶所述子進(jìn)程標(biāo)識(shí)、主進(jìn)程通信接口句柄; 所述子進(jìn)程模塊包括: 第一命令接收模塊,用于接收來(lái)自主進(jìn)程模塊的第一命令; 子進(jìn)程對(duì)象模塊,用于創(chuàng)建子進(jìn)程對(duì)象,并對(duì)所述子進(jìn)程對(duì)象進(jìn)行初始化; 所述子進(jìn)程對(duì)象模塊,還用于向主進(jìn)程發(fā)送啟動(dòng)應(yīng)答消息,所述啟動(dòng)應(yīng)答消息攜帶所述子進(jìn)程對(duì)象對(duì)應(yīng)的子進(jìn)程通信接口句柄、子進(jìn)程標(biāo)識(shí); 所述主進(jìn)程模塊還包括: 第一消息響應(yīng)模塊,用于收到子進(jìn)程的啟動(dòng)應(yīng)答消息后,根據(jù)所述啟動(dòng)應(yīng)答消息中的子進(jìn)程標(biāo)識(shí)確定對(duì)應(yīng)的子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象設(shè)置對(duì)應(yīng)的子進(jìn)程通信接口句柄; 所述數(shù)據(jù)通道,用于主進(jìn)程模塊和子進(jìn)程模塊進(jìn)行數(shù)據(jù)傳輸。
7.如權(quán)利要求6所述的裝置,其特征在于,所述數(shù)據(jù)通道,具體用于: 所述主進(jìn)程模塊通過(guò)主進(jìn)程通信接口句柄接收來(lái)自子進(jìn)程模塊的數(shù)據(jù),并通過(guò)子進(jìn)程宿主對(duì)象的子進(jìn)程通信接口句柄向?qū)?yīng)的子進(jìn)程模塊發(fā)送數(shù)據(jù); 所述子進(jìn)程模塊通過(guò)子進(jìn)程通信接口句柄接收來(lái)自主進(jìn)程模塊的數(shù)據(jù),并通過(guò)主進(jìn)程通信接口句柄向主進(jìn)程模塊發(fā)送數(shù)據(jù)。
8.如權(quán)利要求9所述的裝置,其特征在于, 所述主進(jìn)程模塊還包括: 第二命令發(fā)送模塊,用于判斷與子進(jìn)程模塊的數(shù)據(jù)通道是否已建成,若建成,通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù); 所述子進(jìn)程模塊還包括: 第二命令執(zhí)行模塊,用于當(dāng)子進(jìn)程模塊接收到來(lái)自主進(jìn)程模塊的第二命令后,解析并執(zhí)行所述第二命令。
9.如權(quán)利要求8所述的裝置,其特征在于, 所述主進(jìn)程模塊還包括: 子窗口模塊,用于創(chuàng)建新的瀏覽器子窗口 ; 子進(jìn)程渲染宿主對(duì)象模塊,用于創(chuàng)建子進(jìn)程渲染宿主對(duì)象,并為所述子進(jìn)程渲染宿主對(duì)象分配對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí); 所述子進(jìn)程宿主對(duì)象模塊,具體用于: 主進(jìn)程模塊調(diào)用所述子進(jìn)程渲染宿主對(duì)象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進(jìn)程宿主對(duì)象,并為所述子進(jìn)程宿主對(duì)象分配一個(gè)對(duì)應(yīng)的子進(jìn)程標(biāo)識(shí); 所述第二命令發(fā)送模塊通過(guò)所述子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送的第二命令包括: 渲染對(duì)象創(chuàng)建命令和對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí); 所述第二命令執(zhí)行模塊,具體用于: 判斷所述第二命令中是否包括渲染對(duì)象創(chuàng)建命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的渲染對(duì)象標(biāo)識(shí),以及: 創(chuàng)建子進(jìn)程渲染對(duì)象,并為該子進(jìn)程渲染對(duì)象設(shè)置所述渲染對(duì)象標(biāo)識(shí); 創(chuàng)建子進(jìn)程瀏覽器渲染對(duì)象,并使用子進(jìn)程對(duì)象的方法向主進(jìn)程模塊發(fā)送渲染對(duì)象創(chuàng)建應(yīng)答消息,所述渲染對(duì)象創(chuàng)建應(yīng)答消息攜帶所述子進(jìn)程瀏覽器渲染對(duì)象的子進(jìn)程瀏覽器窗口句柄; 所述主進(jìn)程模塊還包括: 第二消息響應(yīng)模塊,用于若主進(jìn)程模塊收到來(lái)自子進(jìn)程模塊的渲染對(duì)象創(chuàng)建應(yīng)答消息,則從所述渲染對(duì)象創(chuàng)建應(yīng)答消息中獲得子進(jìn)程瀏覽器窗口句柄,并將所述子進(jìn)程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
10.如權(quán)利要求9所述的裝置,其特征在于, 所述第二命令發(fā)送模塊通過(guò)子進(jìn)程宿主對(duì)象向?qū)?yīng)的子進(jìn)程模塊發(fā)送的第二命令還包括: 子進(jìn)程渲染對(duì)象導(dǎo)航命令和對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí); 所述第二命令執(zhí)行模塊,還用于: 判斷所述第二命令中是否包括子進(jìn)程渲染對(duì)象導(dǎo)航命令,若包括,則從所述第二命令中獲得對(duì)應(yīng)的目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí),以及: 使用所述子進(jìn)程瀏覽器渲染對(duì)象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁(yè)標(biāo)識(shí)。
【文檔編號(hào)】G06F9/54GK103631664SQ201310661786
【公開(kāi)日】2014年3月12日 申請(qǐng)日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】李超, 張菊元 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司