亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種進程間的通信方法和裝置制造方法

文檔序號:6522945閱讀:196來源:國知局
一種進程間的通信方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種進程間通信的方法,包括:主進程創(chuàng)建子進程宿主對象;主進程使用所述創(chuàng)建的子進程宿主對象啟動子進程,并向所述子進程發(fā)送第一命令;子進程啟動并接收來自主進程的第一命令;所述子進程創(chuàng)建對應(yīng)的子進程對象;所述子進程對象向所述主進程發(fā)送啟動應(yīng)答消息;主進程根據(jù)收到的啟動應(yīng)答消息中的子進程標(biāo)識確定對應(yīng)的子進程宿主對象,并為所述子進程宿主對象設(shè)置對應(yīng)的子進程通信接口句柄;所述主進程和所述子進程建立通信通道進行數(shù)據(jù)傳輸?;谶@樣的進程間通信機制,即使主進程需要運行更多的子進程,也不會增加進程間通信的復(fù)雜度,有效降低了運行和維護多個進程間通信的成本。
【專利說明】一種進程間的通信方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及人機交互【技術(shù)領(lǐng)域】,具體涉及一種進程間的通信方法和裝置。
【背景技術(shù)】
[0002]進程是計算機系統(tǒng)分配資源的最小單位。每個進程都有自己的一部分獨立的系統(tǒng)資源,彼此是隔離的。為了能使不同的進程互相訪問資源并進行協(xié)調(diào)工作,就有了進程間通信(Inter-Process Communication, IPC)。所謂IPC通信就是指進程間的信息傳播或交換。
[0003]一般而言,主程序在運行過程中會運行對應(yīng)的主進程,基于不同任務(wù)的需要往往還需要同時啟動并運行多個對應(yīng)的子進程,而隨著子進程數(shù)量的增加,進程間通信的復(fù)雜度也隨之提高。這樣一來,如何有效控制多進程通信時的復(fù)雜度,減少數(shù)據(jù)傳輸錯誤和異常就成為本領(lǐng)域技術(shù)人員在實施進程間通信時需要解決的技術(shù)問題。

【發(fā)明內(nèi)容】

[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種進程間的通信方法和裝置。
[0005]依據(jù)本發(fā)明的一個方面,提供了一種進程間的通信方法,所述方法包括:
[0006]主進程創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識;
[0007]主進程使用所述創(chuàng)建的子進程宿主對象啟動子進程,并向所述子進程發(fā)送第一命令,所述第一命令行攜帶所述子進程標(biāo)識、主進程通信接口句柄;
[0008]子進程啟動并接收來自主進程的第一命令;
[0009]所述子進程創(chuàng)建對應(yīng)的子進程對象,并對所述子進程對象進行初始化;
[0010]所述子進程對象向所述主進程發(fā)送啟動應(yīng)答消息,所述啟動應(yīng)答消息攜帶所述子進程對象對應(yīng)的子進程通信接口句柄、子進程標(biāo)識;
[0011]主進程收到子進程的啟動應(yīng)答消息后,根據(jù)所述啟動應(yīng)答消息中的子進程標(biāo)識確定對應(yīng)的子進程宿主對象,并為所述子進程宿主對象設(shè)置對應(yīng)的子進程通信接口句柄;
[0012]所述主進程和所述子進程建立通信通道進行數(shù)據(jù)傳輸。
[0013]可選地,所述主進程和所述子進程建立通信通道進行數(shù)據(jù)傳輸,具體包括:
[0014]所述主進程通過主進程通信接口句柄接收來自子進程的數(shù)據(jù),并通過子進程宿主對象的子進程通信接口句柄向?qū)?yīng)的子進程發(fā)送數(shù)據(jù);
[0015]所述子進程通過子進程通信接口句柄接收來自主進程的數(shù)據(jù),并通過主進程通信接口句柄向主進程發(fā)送數(shù)據(jù)。
[0016]可選地,所述方法還包括:
[0017]主進程判斷與子進程的數(shù)據(jù)通道是否已建成,若建成,通過所述子進程宿主對象向?qū)?yīng)的子進程發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù);[0018]當(dāng)子進程接收到來自主進程的第二命令后,解析并執(zhí)行所述第二命令。
[0019]可選地,所述主進程創(chuàng)建子進程宿主對象之前還包括:
[0020]主進程創(chuàng)建新的瀏覽器子窗口 ;
[0021]主進程創(chuàng)建子進程渲染宿主對象,并為所述子進程渲染宿主對象分配對應(yīng)的渲染對象標(biāo)識;
[0022]所述主進程創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識,具體包括:
[0023]主進程調(diào)用所述子進程渲染宿主對象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識;
[0024]所述主進程通過所述子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令包括:
[0025]渲染對象創(chuàng)建命令和對應(yīng)的渲染對象標(biāo)識;
[0026]所述子進程解析并執(zhí)行所述第二命令,具體包括:
[0027]子進程判斷所述第二命令中是否包括渲染對象創(chuàng)建命令,若包括,則從所述第二命令中獲得對應(yīng)的渲染對象標(biāo)識,以及:
[0028]創(chuàng)建子進程渲染對象,并為該子進程渲染對象設(shè)置所述渲染對象標(biāo)識;
[0029]創(chuàng)建子進程瀏覽器渲染對象,并使用子進程對象的方法向主進程發(fā)送渲染對象創(chuàng)建應(yīng)答消息,所述渲染對象創(chuàng)建應(yīng)答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄;
[0030]所述方法還包括:
[0031]若主進程收到來自子進程的渲染對象創(chuàng)建應(yīng)答消息,則從所述渲染對象創(chuàng)建應(yīng)答消息中獲得子進程瀏覽器窗口句柄,并將所述子進程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
[0032]可選地,
[0033]所述主進程通過子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令還包括:
[0034]子進程渲染對象導(dǎo)航命令和對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識;
[0035]所述子進程解析并執(zhí)行所述第二命令,還包括:
[0036]子進程判斷所述第二命令中是否包括子進程渲染對象導(dǎo)航命令,若包括,則從所述第二命令中獲得對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識,以及:
[0037]子進程使用所述子進程瀏覽器渲染對象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁標(biāo)識。
[0038]可選地,所述主進程通過子進程宿主對象向子進程發(fā)送的第一命令還包括:
[0039]登錄"[目息標(biāo)識;
[0040]所述主進程通過子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令還包括:
[0041]網(wǎng)頁填充命令;
[0042]所述子進程解析并執(zhí)行所述第二命令,還包括:
[0043]子進程判斷所述第二命令中是否包括網(wǎng)頁填充命令,若包括,則從所述第一命令中獲得所述登錄信息標(biāo)識,以及:
[0044]子進程使用所述子進程瀏覽器渲染對象的網(wǎng)頁自動填充方法獲取所述登錄信息標(biāo)識對應(yīng)的登錄配置規(guī)則、登錄賬號和登錄密碼;對所述導(dǎo)航的目標(biāo)網(wǎng)頁中登錄對象按所述登錄配置規(guī)則自動填充登錄賬號和登錄密碼。[0045]可選地,
[0046]所述主進程通過子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令還包括:窗口調(diào)整命令和對應(yīng)的窗口大小參數(shù);
[0047]所述子進程解析并執(zhí)行所述第二命令,還包括:
[0048]子進程判斷所述第二命令中是否包括窗口調(diào)整命令,若包括,則從所述第二命令中獲得窗口大小參數(shù),以及
[0049]子進程使用所述子進程瀏覽器渲染對象的窗口設(shè)置方法按照所述窗口大小參數(shù)設(shè)置子進程瀏覽器窗體大小。
[0050]根據(jù)本發(fā)明的另一方面,提供了一種進程間通信裝置,所述裝置包括:
[0051]包括主進程模塊、子進程模塊和數(shù)據(jù)通道;
[0052]所述主進程模塊包括:
[0053]子進程宿主對象模塊,用于創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識;
[0054]子進程啟動模塊,用于使用所述子進程宿主對象模塊創(chuàng)建的子進程宿主對象啟動子進程模塊;
[0055]第一命令發(fā)送模塊,用于向所述子進程啟動模塊啟動的子進程模塊發(fā)送第一命令,所述第一命令行攜帶所述子進程標(biāo)識、主進程通信接口句柄;
[0056]所述子進程模塊包括:
[0057]第一命令接收模塊,用于接收來自主進程模塊的第一命令;
[0058]子進程對象模塊,用于創(chuàng)建子進程對象,并對所述子進程對象進行初始化;
[0059]所述子進程對象模塊,還用于向主進程發(fā)送啟動應(yīng)答消息,所述啟動應(yīng)答消息攜帶所述子進程對象對應(yīng)的子進程通信接口句柄、子進程標(biāo)識;
[0060]所述主進程模塊還包括:
[0061]第一消息響應(yīng)模塊,用于收到子進程的啟動應(yīng)答消息后,根據(jù)所述啟動應(yīng)答消息中的子進程標(biāo)識確定對應(yīng)的子進程宿主對象,并為所述子進程宿主對象設(shè)置對應(yīng)的子進程通信接口句柄;
[0062]所述數(shù)據(jù)通道,用于主進程模塊和子進程模塊進行數(shù)據(jù)傳輸。
[0063]其中,所述數(shù)據(jù)通道,具體用于:
[0064]所述主進程模塊通過主進程通信接口句柄接收來自子進程模塊的數(shù)據(jù),并通過子進程宿主對象的子進程通信接口句柄向?qū)?yīng)的子進程模塊發(fā)送數(shù)據(jù);
[0065]所述子進程模塊通過子進程通信接口句柄接收來自主進程模塊的數(shù)據(jù),并通過主進程通信接口句柄向主進程模塊發(fā)送數(shù)據(jù)。
[0066]可選地,
[0067]所述主進程模塊還包括:
[0068]第二命令發(fā)送模塊,用于判斷與子進程模塊的數(shù)據(jù)通道是否已建成,若建成,通過所述子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù);
[0069]所述子進程模塊還包括:
[0070]第二命令執(zhí)行模塊,用于當(dāng)子進程模塊接收到來自主進程模塊的第二命令后,解析并執(zhí)行所述第二命令。
[0071]可選地,
[0072]所述主進程模塊還包括:
[0073]子窗口模塊,用于創(chuàng)建新的瀏覽器子窗口 ;
[0074]子進程渲染宿主對象模塊,用于創(chuàng)建子進程渲染宿主對象,并為所述子進程渲染宿主對象分配對應(yīng)的渲染對象標(biāo)識;
[0075]所述子進程宿主對象模塊,具體用于:
[0076]主進程模塊調(diào)用所述子進程渲染宿主對象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識;
[0077]所述第二命令發(fā)送模塊通過所述子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送的第二命令包括:
[0078]渲染對象創(chuàng)建命令和對應(yīng)的渲染對象標(biāo)識;
[0079]所述第二命令執(zhí)行模塊,具體用于:
[0080]判斷所述第二命令中是否包括渲染對象創(chuàng)建命令,若包括,則從所述第二命令中獲得對應(yīng)的渲染對象標(biāo)識,以及:
[0081]創(chuàng)建子進程渲染對象,并為該子進程渲染對象設(shè)置所述渲染對象標(biāo)識;
[0082]創(chuàng)建子進程瀏覽器渲染對象,并使用子進程對象的方法向主進程模塊發(fā)送渲染對象創(chuàng)建應(yīng)答消息,所述渲染對象創(chuàng)建應(yīng)答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄;
[0083]所述主進程模塊還包括:
[0084]第二消息響應(yīng)模塊,用于若主進程模塊收到來自子進程模塊的渲染對象創(chuàng)建應(yīng)答消息,則從所述渲染對象創(chuàng)建應(yīng)答消息中獲得子進程瀏覽器窗口句柄,并將所述子進程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
[0085]可選地,
[0086]所述第二命令發(fā)送模塊通過子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送的第二命令還包括:
[0087]子進程渲染對象導(dǎo)航命令和對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識;
[0088]所述第二命令執(zhí)行模塊,還用于:
[0089]判斷所述第二命令中是否包括子進程渲染對象導(dǎo)航命令,若包括,則從所述第二命令中獲得對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識,以及:
[0090]使用所述子進程瀏覽器渲染對象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁標(biāo)識。
[0091]可選地,所述第一命令發(fā)送模塊通過子進程宿主對象向子進程模塊發(fā)送的第一命令還包括:
[0092]登錄彳目息標(biāo)識;
[0093]所述第二命令發(fā)送模塊通過子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送的第二命令還包括:
[0094]網(wǎng)頁填充命令;
[0095]所述第二命令執(zhí)行模塊,還用于:
[0096]判斷所述第二命令中是否包括網(wǎng)頁填充命令,若包括,則從所述第一命令中獲得所述登錄信息標(biāo)識,以及:
[0097]使用所述子進程瀏覽器渲染對象的網(wǎng)頁自動填充方法獲取所述登錄信息標(biāo)識對應(yīng)的登錄配置規(guī)則、登錄賬號和登錄密碼;對所述導(dǎo)航的目標(biāo)網(wǎng)頁中登錄對象按所述登錄配置規(guī)則自動填充登錄賬號和登錄密碼。
[0098]可選地,
[0099]所述第二命令發(fā)送模塊通過子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送的第二命令還包括:窗口調(diào)整命令和對應(yīng)的窗口大小參數(shù);
[0100]所述第二命令執(zhí)行模塊,還用于:
[0101]判斷所述第二命令中是否包括窗口調(diào)整命令,若包括,則從所述第二命令中獲得窗口大小參數(shù),以及
[0102]使用所述子進程瀏覽器渲染對象的窗口設(shè)置方法按照所述窗口大小參數(shù)設(shè)置子進程瀏覽器窗體大小。
[0103]現(xiàn)有的進程間通信,隨著子進程數(shù)量的增加,主進程與子進程之間的通信復(fù)雜度也急劇增加,使得控制和維護成本居高不下。本發(fā)明實施例通過定義子進程宿主對象模型,并由主進程創(chuàng)建和管理子進程宿主對象,通過分配唯一的子進程標(biāo)識建立子進程宿主對象和子進程對象之間的對應(yīng)關(guān)系,通過交換進程通信接口句柄建立主進程與子進程之間的數(shù)據(jù)通道,使得主進程僅僅使用子進程標(biāo)識確定子進程宿主對象就能夠?qū)崿F(xiàn)對應(yīng)的子進程對象的數(shù)據(jù)傳輸。基于這樣的進程間通信機制,即使主進程需要運行更多的子進程,也不會增加進程間通信的復(fù)雜度,有效降低了運行和維護多個進程間通信的成本。
[0104]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】

【附圖說明】
[0105]通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0106]圖1示出了根據(jù)本發(fā)明一個實施例的一種進程間通信方法的步驟流程圖;
[0107]圖2示出了根據(jù)本發(fā)明一個實施例的一種進程間通信方法的步驟流程圖;
[0108]圖3示出了根據(jù)本發(fā)明一個實施例的一種進程間通信方法的時序流程圖;
[0109]圖4示出了根據(jù)本發(fā)明一個實施例的一種進程間通信裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0110]下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0111]實施例一
[0112]參照圖1,圖1示出了本發(fā)明實施例提供的一種進程間通信方法,所述方法包括:[0113]S101,主進程創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識。
[0114]本發(fā)明實施例中,主進程創(chuàng)建并管理子進程宿主對象,每個子進程宿主對象對應(yīng)一個子進程,并擁有與所對應(yīng)子進程相同的子進程標(biāo)識。
[0115]S102,主進程使用所述創(chuàng)建的子進程宿主對象啟動子進程,并向所述子進程發(fā)送第一命令,所述第一命令行攜帶所述子進程標(biāo)識、主進程通信接口句柄。
[0116]子進程宿主對象中提供了創(chuàng)建和啟動子進程的方法,并提供了數(shù)據(jù)通信接口用于向子進程發(fā)送第一命令。
[0117]具體而言,主進程以命令行的方式通過調(diào)用子進程宿主對象提供的進程創(chuàng)建方法創(chuàng)建一個新的子進程,所述命令行包括所述第一命令。
[0118]其中,所謂句柄是操作系統(tǒng)中的一個唯一的整數(shù)值,用來標(biāo)志應(yīng)用程序中的不同對象和同類對象中的不同的實例,諸如,一個窗口,按鈕,圖標(biāo),滾動條,輸出設(shè)備,控件或者文件等。通過句柄可以訪問相應(yīng)對象的信息。
[0119]S103,子進程啟動并接收來自主進程的第一命令。
[0120]S104,所述子進程創(chuàng)建對應(yīng)的子進程對象,并對所述子進程對象進行初始化。
[0121]調(diào)用子進程對象提供的初始化方法對所述子進程對象進行初始化,在所述初始化方法中對所接收到的第一命令中攜帶的子進程標(biāo)識、主進程通信接口句柄等命令行參數(shù)進行保存。
[0122]S105,所述子進程對象向所述主進程發(fā)送啟動應(yīng)答消息,所述啟動應(yīng)答消息攜帶所述子進程對象對應(yīng)的子進程通信接口句柄、子進程標(biāo)識。
[0123]子進程對象初始化完成后,使用IPC向主進程發(fā)送啟動應(yīng)答消息。
[0124]S106,主進程收到子進程的啟動應(yīng)答消息后,根據(jù)所述啟動應(yīng)答消息中的子進程標(biāo)識確定對應(yīng)的子進程宿主對象,并為所述子進程宿主對象設(shè)置對應(yīng)的子進程通信接口句柄。
[0125]至此,主進程中的每個子進程宿主對象就擁有了與其對應(yīng)的子進程對象的子進程通信接口句柄,而每個子進程也獲得了對應(yīng)主進程的通信接口句柄。基于獲得的子進程通信接口句柄,子進程宿主對象對外提供與對應(yīng)的子進程對象進行進程間通信的通信接口,使得主進程能夠通過調(diào)用所述通信接口向?qū)?yīng)的子進程發(fā)送數(shù)據(jù)。
[0126]S107,所述主進程和所述子進程建立通信通道進行數(shù)據(jù)傳輸。
[0127]其中,所述主進程和所述子進程建立通信通道通信通道進行數(shù)據(jù)傳輸,具體包括:
[0128]所述主進程通過主進程通信接口句柄接收來自子進程的數(shù)據(jù),并通過子進程宿主對象的子進程通信接口句柄向?qū)?yīng)的子進程發(fā)送數(shù)據(jù);
[0129]所述子進程通過子進程通信接口句柄接收來自主進程的數(shù)據(jù),并通過主進程通信接口句柄向主進程發(fā)送數(shù)據(jù)。
[0130]本發(fā)明實施例通過定義子進程宿主對象模型,并由主進程創(chuàng)建和管理子進程宿主對象,通過分配唯一的子進程標(biāo)識建立子進程宿主對象和子進程對象之間的對應(yīng)關(guān)系,通過交換進程通信接口句柄建立主進程與子進程之間的數(shù)據(jù)通道,使得主進程僅僅使用子進程標(biāo)識確定子進程宿主對象就能夠?qū)崿F(xiàn)對應(yīng)的子進程對象的數(shù)據(jù)傳輸?;谶@樣的進程間通信機制,即使主進程需要運行更多的子進程,也不會增加進程間通信的復(fù)雜度,有效降低了運行和維護多個進程間通信的成本。
[0131]在所述實施例一的另一擴展實施例中,所述方法還包括:
[0132]S108,主進程判斷與子進程的數(shù)據(jù)通道是否已建成,若建成,通過所述子進程宿主對象向?qū)?yīng)的子進程發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù)。
[0133]S109,當(dāng)子進程接收到來自主進程的第二命令后,解析并執(zhí)行所述第二命令。
[0134]當(dāng)主進程與子進程之間的數(shù)據(jù)通道建成后,主進程可根據(jù)實施需要向子進程發(fā)送第二命令,例如監(jiān)聽命令、銷毀子進程命令等。需要說明的是,本領(lǐng)域技術(shù)人員可根據(jù)實際需要組織第二命令的指令內(nèi)容和包含的參數(shù),本發(fā)明對此不作具體限制。
[0135]在數(shù)據(jù)通道建成前,主進程緩存第二命令及其攜帶的參數(shù),當(dāng)檢測到數(shù)據(jù)通道建成后,則將之前緩存的第二命令及其攜帶的參數(shù)一起發(fā)送給對應(yīng)的子進程。通過上述緩存機制,能夠?qū)⒌诙詈翢o遺漏地發(fā)往子進程,保證了通信的完整性。
[0136]實施例二
[0137]參照圖2,圖2示出了本發(fā)明實施例提供的一種進程間通信方法,所述方法包括:
[0138]S201,主進程創(chuàng)建新的瀏覽器子窗口。
[0139]S202,主進程創(chuàng)建子進程渲染宿主對象,并為所述子進程渲染宿主對象分配對應(yīng)的渲染對象標(biāo)識。
[0140]S203,主進程調(diào)用所述子進程渲染宿主對象的方法,在所述方法中創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識。
[0141]S204,主進程使用所述創(chuàng)建的子進程宿主對象啟動子進程,并向所述子進程發(fā)送第一命令,所述第一命令行攜帶所述子進程標(biāo)識、主進程通信接口句柄。
[0142]S205,子進程啟動并接收來自主進程的第一命令。
[0143]S206,子進程創(chuàng)建對應(yīng)的子進程對象,并對所述子進程對象進行初始化。
[0144]子進程對象初始化的同時保存第一命令及其攜帶的參數(shù)。
[0145]S207,所述子進程對象向所述主進程發(fā)送啟動應(yīng)答消息,所述啟動應(yīng)答消息攜帶所述子進程對象對應(yīng)的子進程通信接口句柄、子進程標(biāo)識。
[0146]S208,主進程收到子進程的啟動應(yīng)答消息后,根據(jù)所述啟動應(yīng)答消息中的子進程標(biāo)識確定對應(yīng)的子進程宿主對象,并為所述子進程宿主對象設(shè)置對應(yīng)的子進程通信接口句柄。
[0147]子進程宿主對象通過設(shè)置的子進程通信接口句柄即可訪問對應(yīng)的子進程對象。
[0148]S209,所述主進程和所述子進程建立通信通道進行數(shù)據(jù)傳輸。
[0149]S210,主進程判斷與子進程的數(shù)據(jù)通道是否已建成,若建成,通過所述子進程宿主對象向?qū)?yīng)的子進程發(fā)送第二命令,所述第二命令包括:渲染對象創(chuàng)建命令和對應(yīng)的渲染對象標(biāo)識;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù)。
[0150]S211,當(dāng)子進程接收到來自主進程的第二命令后,解析并執(zhí)行所述第二命令。
[0151]其中,子進程解析并執(zhí)行所述第二命令具體包括:
[0152]子進程判斷所述第二命令中是否包括渲染對象創(chuàng)建命令,若包括,則從所述第二命令中獲得對應(yīng)的渲染對象標(biāo)識,以及:[0153]創(chuàng)建子進程渲染對象,并為該子進程渲染對象設(shè)置所述渲染對象標(biāo)識;
[0154]創(chuàng)建子進程瀏覽器渲染對象,并使用子進程對象的發(fā)送方法向主進程發(fā)送渲染對象創(chuàng)建應(yīng)答消息,所述渲染對象創(chuàng)建應(yīng)答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄。
[0155]S212,若主進程收到來自子進程的渲染對象創(chuàng)建應(yīng)答消息,則從所述渲染對象創(chuàng)建應(yīng)答消息中獲得子進程瀏覽器窗口句柄,并將所述子進程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
[0156]若應(yīng)用程序中需要打開運行多個瀏覽器子窗口時,主進程中創(chuàng)建并管理多個子進程渲染對象宿主,每個子進程渲染對象宿主對應(yīng)一個子進程渲染對象,而每一個子進程渲染對象下面管理著一個子進程瀏覽器渲染對象,所述子進程瀏覽器渲染對象封裝了瀏覽器的webtoowser及其對應(yīng)的操作,通過將子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄的父窗口設(shè)置為其對應(yīng)的瀏覽器子窗口,即相當(dāng)于在該瀏覽器子窗口中內(nèi)嵌了一個IE瀏覽器窗口。
[0157]主進程通過渲染對象標(biāo)識或子進程標(biāo)識確定對應(yīng)的子進程渲染對象宿主,并通過該子進程渲染對象宿主宿主對應(yīng)的子進程渲染對象對瀏覽器子窗口中的內(nèi)嵌webtoowser進行訪問和操作。
[0158]本發(fā)明實施例中,所述主進程創(chuàng)建瀏覽器子窗口以及子進程瀏覽器渲染對象封裝瀏覽器的webbrowser只是本發(fā)明優(yōu)選的方法,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在實施本發(fā)明時,按照子窗口所承載內(nèi)容和目的的不同,主進程可創(chuàng)建任意類型的子窗口和對應(yīng)的子進程窗口渲染對象,該子進程窗口渲染對象可封裝不同的對象及操作,本發(fā)明對此不作具體限制,例如創(chuàng)建一個視頻播放子窗口、CAD畫圖子窗口、或其他第三方軟件控制子窗口等。
[0159]在上述實施例二的另一擴展實施例中,所述主進程通過子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令還包括:子進程渲染對象導(dǎo)航命令和對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識;
[0160]所述子進程解析并執(zhí)行所述第二命令,還包括:
[0161]子進程判斷所述第二命令中是否包括子進程渲染對象導(dǎo)航命令,若包括,則從所述第二命令中獲得對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識,以及:子進程使用所述子進程瀏覽器渲染對象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁標(biāo)識。
[0162]其中,目標(biāo)網(wǎng)頁標(biāo)識具體可以是一個網(wǎng)頁URL,例如一個網(wǎng)站的登錄頁面URL,當(dāng)用戶點擊該網(wǎng)頁URL的鏈接時,主進程創(chuàng)建一個瀏覽器子窗口,并在該瀏覽器子窗口中加載該網(wǎng)頁URL對應(yīng)的網(wǎng)頁元素。
[0163]在上述實施例的另一擴展實施例中,所述主進程通過子進程宿主對象向子進程發(fā)送的第一命令還包括:登錄信息標(biāo)識;
[0164]所述主進程通過子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令還包括:網(wǎng)頁填充命令;
[0165]所述子進程解析并執(zhí)行所述第二命令,還包括:
[0166]子進程判斷所述第二命令中是否包括網(wǎng)頁填充命令,若包括,則從所述第一命令中獲得所述登錄信息標(biāo)識,以及子進程使用所述子進程瀏覽器渲染對象的網(wǎng)頁自動填充方法獲取所述登錄信息標(biāo)識對應(yīng)的登錄配置規(guī)則、登錄賬號和登錄密碼;對所述導(dǎo)航的目標(biāo)網(wǎng)頁中登錄對象按所述登錄配置規(guī)則自動填充登錄賬號和登錄密碼。[0167]實施例三
[0168]本實施例以具體的數(shù)據(jù)對象模型為例,對本發(fā)明提供的一種進程間通信方法進行描述,涉及的數(shù)據(jù)對象模型定義如下:
[0169]CApplication 應(yīng)用程序
[0170]-CMainProcess 主進程
[0171]-CChiIdProcess 子進程
[0172]其中,主進程CMainProcess提供的數(shù)據(jù)模型如表1所示;子進程CChiIdProcess
提供的數(shù)據(jù)模型如表2所示:
[0173]
【權(quán)利要求】
1.一種進程間通信的方法,包括: 主進程創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識;主進程使用所述創(chuàng)建的子進程宿主對象啟動子進程,并向所述子進程發(fā)送第一命令,所述第一命令行攜帶所述子進程標(biāo)識、主進程通信接口句柄; 子進程啟動并接收來自主進程的第一命令; 所述子進程創(chuàng)建對應(yīng)的子進程對象,并對所述子進程對象進行初始化; 所述子進程對象向所述主進程發(fā)送啟動應(yīng)答消息,所述啟動應(yīng)答消息攜帶所述子進程對象對應(yīng)的子進程通信接口句柄、子進程標(biāo)識; 主進程收到子進程的啟動應(yīng)答消息后,根據(jù)所述啟動應(yīng)答消息中的子進程標(biāo)識確定對應(yīng)的子進程宿主對象,并為所述子進程宿主對象設(shè)置對應(yīng)的子進程通信接口句柄; 所述主進程和所述子進程建立通信通道進行數(shù)據(jù)傳輸。
2.如權(quán)利要求1所述的方法,其特征在于,所述主進程和所述子進程建立通信通道進行數(shù)據(jù)傳輸,具體包括: 所述主進程通過主進程通信接口句柄接收來自子進程的數(shù)據(jù),并通過子進程宿主對象的子進程通信接口句柄向?qū)?yīng)的子進程發(fā)送數(shù)據(jù); 所述子進程通過子進程通信接口句柄接收來自主進程的數(shù)據(jù),并通過主進程通信接口句柄向主進程發(fā)送數(shù)據(jù)。
3.如權(quán)利要求1所 述的方法,其特征在于,所述方法還包括: 主進程判斷與子進程的數(shù)據(jù)通道是否已建成,若建成,通過所述子進程宿主對象向?qū)?yīng)的子進程發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù); 當(dāng)子進程接收到來自主進程的第二命令后,解析并執(zhí)行所述第二命令。
4.如權(quán)利要求3所述的方法,其特征在于,所述主進程創(chuàng)建子進程宿主對象之前還包括: 主進程創(chuàng)建新的瀏覽器子窗口; 主進程創(chuàng)建子進程渲染宿主對象,并為所述子進程渲染宿主對象分配對應(yīng)的渲染對象標(biāo)識; 所述主進程創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識,具體包括: 主進程調(diào)用所述子進程渲染宿主對象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識; 所述主進程通過所述子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令包括: 渲染對象創(chuàng)建命令和對應(yīng)的渲染對象標(biāo)識; 所述子進程解析并執(zhí)行所述第二命令,具體包括: 子進程判斷所述第二命令中是否包括渲染對象創(chuàng)建命令,若包括,則從所述第二命令中獲得對應(yīng)的渲染對象標(biāo)識,以及: 創(chuàng)建子進程渲染對象,并為該子進程渲染對象設(shè)置所述渲染對象標(biāo)識; 創(chuàng)建子進程瀏覽器渲染對象,并使用子進程對象的方法向主進程發(fā)送渲染對象創(chuàng)建應(yīng)答消息,所述渲染對象創(chuàng)建應(yīng)答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄; 所述方法還包括: 若主進程收到來自子進程的渲染對象創(chuàng)建應(yīng)答消息,則從所述渲染對象創(chuàng)建應(yīng)答消息中獲得子進程瀏覽器窗口句柄,并將所述子進程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
5.如權(quán)利要求4所述的方法,其特征在于, 所述主進程通過子進程宿主對象向?qū)?yīng)的子進程發(fā)送的第二命令還包括: 子進程渲染對象導(dǎo)航命令和對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識; 所述子進程解析并執(zhí)行所述第二命令,還包括: 子進程判斷所述第二命令中是否包括子進程渲染對象導(dǎo)航命令,若包括,則從所述第二命令中獲得對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識,以及: 子進程使用所述子進程瀏覽器渲染對象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁標(biāo)識。
6.一種進程間通信裝置,包括主進程模塊、子進程模塊和數(shù)據(jù)通道; 所述主進程模塊包括: 子進程宿主對象模塊,用于創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識; 子進程啟動模塊,用于使用所述子進程宿主對象模塊創(chuàng)建的子進程宿主對象啟動子進程模塊; 第一命令發(fā)送模塊,用于向所述子進程啟動模塊啟動的子進程模塊發(fā)送第一命令,所述第一命令行攜帶所述子進程標(biāo)識、主進程通信接口句柄; 所述子進程模塊包括: 第一命令接收模塊,用于接收來自主進程模塊的第一命令; 子進程對象模塊,用于創(chuàng)建子進程對象,并對所述子進程對象進行初始化; 所述子進程對象模塊,還用于向主進程發(fā)送啟動應(yīng)答消息,所述啟動應(yīng)答消息攜帶所述子進程對象對應(yīng)的子進程通信接口句柄、子進程標(biāo)識; 所述主進程模塊還包括: 第一消息響應(yīng)模塊,用于收到子進程的啟動應(yīng)答消息后,根據(jù)所述啟動應(yīng)答消息中的子進程標(biāo)識確定對應(yīng)的子進程宿主對象,并為所述子進程宿主對象設(shè)置對應(yīng)的子進程通信接口句柄; 所述數(shù)據(jù)通道,用于主進程模塊和子進程模塊進行數(shù)據(jù)傳輸。
7.如權(quán)利要求6所述的裝置,其特征在于,所述數(shù)據(jù)通道,具體用于: 所述主進程模塊通過主進程通信接口句柄接收來自子進程模塊的數(shù)據(jù),并通過子進程宿主對象的子進程通信接口句柄向?qū)?yīng)的子進程模塊發(fā)送數(shù)據(jù); 所述子進程模塊通過子進程通信接口句柄接收來自主進程模塊的數(shù)據(jù),并通過主進程通信接口句柄向主進程模塊發(fā)送數(shù)據(jù)。
8.如權(quán)利要求9所述的裝置,其特征在于, 所述主進程模塊還包括: 第二命令發(fā)送模塊,用于判斷與子進程模塊的數(shù)據(jù)通道是否已建成,若建成,通過所述子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送第二命令;若所述數(shù)據(jù)通道未建成,則緩存所述第二命令攜帶的命令參數(shù); 所述子進程模塊還包括: 第二命令執(zhí)行模塊,用于當(dāng)子進程模塊接收到來自主進程模塊的第二命令后,解析并執(zhí)行所述第二命令。
9.如權(quán)利要求8所述的裝置,其特征在于, 所述主進程模塊還包括: 子窗口模塊,用于創(chuàng)建新的瀏覽器子窗口 ; 子進程渲染宿主對象模塊,用于創(chuàng)建子進程渲染宿主對象,并為所述子進程渲染宿主對象分配對應(yīng)的渲染對象標(biāo)識; 所述子進程宿主對象模塊,具體用于: 主進程模塊調(diào)用所述子進程渲染宿主對象的導(dǎo)航方法,在所述導(dǎo)航方法中創(chuàng)建子進程宿主對象,并為所述子進程宿主對象分配一個對應(yīng)的子進程標(biāo)識; 所述第二命令發(fā)送模塊通過所述子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送的第二命令包括: 渲染對象創(chuàng)建命令和對應(yīng)的渲染對象標(biāo)識; 所述第二命令執(zhí)行模塊,具體用于: 判斷所述第二命令中是否包括渲染對象創(chuàng)建命令,若包括,則從所述第二命令中獲得對應(yīng)的渲染對象標(biāo)識,以及: 創(chuàng)建子進程渲染對象,并為該子進程渲染對象設(shè)置所述渲染對象標(biāo)識; 創(chuàng)建子進程瀏覽器渲染對象,并使用子進程對象的方法向主進程模塊發(fā)送渲染對象創(chuàng)建應(yīng)答消息,所述渲染對象創(chuàng)建應(yīng)答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄; 所述主進程模塊還包括: 第二消息響應(yīng)模塊,用于若主進程模塊收到來自子進程模塊的渲染對象創(chuàng)建應(yīng)答消息,則從所述渲染對象創(chuàng)建應(yīng)答消息中獲得子進程瀏覽器窗口句柄,并將所述子進程瀏覽器窗口句柄的父窗口設(shè)置為當(dāng)前瀏覽器子窗口。
10.如權(quán)利要求9所述的裝置,其特征在于, 所述第二命令發(fā)送模塊通過子進程宿主對象向?qū)?yīng)的子進程模塊發(fā)送的第二命令還包括: 子進程渲染對象導(dǎo)航命令和對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識; 所述第二命令執(zhí)行模塊,還用于: 判斷所述第二命令中是否包括子進程渲染對象導(dǎo)航命令,若包括,則從所述第二命令中獲得對應(yīng)的目標(biāo)網(wǎng)頁標(biāo)識,以及: 使用所述子進程瀏覽器渲染對象的導(dǎo)航方法導(dǎo)航所述目標(biāo)網(wǎng)頁標(biāo)識。
【文檔編號】G06F9/54GK103631664SQ201310661786
【公開日】2014年3月12日 申請日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】李超, 張菊元 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1