本申請公開了一種COM組件處理方法。在一應用程序的進程加載所述進程外的所述COM組件之前,該包括:獲取所述COM組件的COM代理組件;在所述當前進程內加載所述COM代理組件;將所述COM代理組件注冊到所述進程中。通過本發明專利技術實施例提供的技術方案,可以提供COM組件注冊的可靠性。
【技術實現步驟摘要】
本專利技術涉及計算機
,尤其涉及一種COM組件處理方法和裝置。
技術介紹
COM(組件對象模型,Component Object Model)組件是微軟公司為了使計算機工業的軟件的生產更加符合人類的行為方式而開發的一種新的軟件開發技術。在COM構架下,人們可以開發出各種各樣的功能專一的組件,然后將它們按照需要組合起來,構成復雜的應用系統。
技術實現思路
本專利技術實施例提供一種COM組件處理方法和裝置,以提高COM組件注冊的可靠性。本專利技術實施例提供一種COM組件處理方法,在一應用程序的進程加載所述進程外的所述COM組件之前,該包括:獲取所述COM組件的COM代理組件;在所述當前進程內加載所述COM代理組件;將所述COM代理組件注冊到所述進程中。本專利技術實施例提供一種COM組件處理裝置,應用于在一應用的進程中加載所述進程外的所述COM組件的客戶端,該裝置包括:獲取模塊,用于獲取所述COM組件的COM代理組件;加載模塊,用于在所述當前進程內加載所述COM代理組件;注冊模塊,用于將所述COM代理組件注冊到所述進程中。在本專利技術實施例中,在該進程加載進程外的COM組件之前,獲取該COM組件的COM代理組件。在當前進程內加載該COM代理組件,并將該COM代
理組件注冊到該進程中。通過該處理過程,可以實現該COM組件在該進程內的注冊。無需將該COM組件注冊到系統的注冊表中,因此可以避免因注冊表的損壞而造成的注冊失敗,提高注冊的可靠性。附圖說明為了更清楚地說明本專利技術實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本專利技術的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本專利技術實施例提供的一種COM組件處理方法的流程示意圖;圖2為本專利技術實施例提供的一種COM組件處理方法流程示意圖;圖3為本專利技術實施例提供的一種COM組件處理方法流程示意圖;圖4為本專利技術實施例提供的一種COM組件處理裝置的結構示意圖;圖5為本專利技術實施例提供的一種COM組件處理裝置的結構示意圖。具體實施方式下面將結合本專利技術實施例中的附圖,對本專利技術實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅是本專利技術一部分實施例,而不是全部的實施例。基于本專利技術中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本專利技術保護的范圍。在本專利技術一實施例中,在進程加載該進程外的COM組件之前,需要將該COM組件注冊到操作系統。操作系統在注冊表中記錄該COM組件的地址。當進程加載該COM組件時,該進程查找該注冊表,找到該COM組件,將該COM組件加載到當前進程。上述注冊表中的內容有可能被破壞,為了避免因系統保存的注冊表中的內容被破壞而造成的注冊失敗,本專利技術實施例提供如下解決方案。圖1為本專利技術實施例提供的一種COM組件處理方法的流程示意圖。如圖1
所示,在本專利技術實施例中,在一個應用程序的進程加載該進程外的COM組件之前,該方法包括如下步驟:步驟101,獲取所述COM組件的COM代理組件。步驟102,在所述當前進程內加載所述COM代理組件。步驟103,將所述COM代理組件注冊到所述進程中。在本專利技術實施例中,在該進程加載進程外的COM組件之前,獲取該COM組件的COM代理組件。在當前進程內加載該COM代理組件,并將該COM代理組件注冊到該進程中。通過該處理過程,可以實現該COM組件在該進程內的注冊。無需將該COM組件注冊到系統的注冊表中,因此可以避免因注冊表的損壞而造成的注冊失敗,提高注冊的可靠性。此外,還可以減輕系統的負擔。圖2為本專利技術實施例提供的一種COM組件處理方法流程示意圖。如圖2所示,在一個應用程序的進程加載該進程外的COM組件之前,該方法包括如下步驟。本專利技術實施例可以應用于所有需要在進程內調用該進程外的COM組件的應用程序。在本專利技術實施例中,可以是在該進程啟動時,也可以是該進程準備加載該COM組件時,獲取該COM組件的COM代理組件并將該COM代理組件注冊當本進程。步驟201,獲取所述COM組件的COM代理組件。進程是操作系統結構的基礎;是一次程序的執行;是一個程序及其數據在處理機上順序執行時所發生的活動;是程序在一個數據集合上運行的過程;它是系統進行資源分配和調度的一個獨立單位。在本專利技術實施例中的進程指的是任意需要調用該進程外的COM組件的進程。在本專利技術實施例中,該應用程序可以為任意應用程序,例如瀏覽器、社交軟件等。該COM組件是在COM架構下開發出的特定功能的組件,例如視頻插件。在本實施例中,當一應用程序,例如瀏覽器被打開,該瀏覽器的進程被執行時獲取該COM組件的代理組件。也可以是在,程序運行過程中,當需要調用
該COM組件時,獲取該COM組件的代理組件,并進行注冊。在本專利技術一實施例中,該COM組件的代理組件也是一種COM組件。該COM組件和該COM代理組件是一一對應的,可以預先將該COM組件的COM代理組件保存在當前進程的安裝文件所在的文件目錄下。在獲取該COM代理組件的過程中,可以到該安裝文件所在的文件目錄下去查找。步驟202,在當前進程內加載該COM代理組件。步驟203,將該COM代理組件注冊到該進程中。在本專利技術實施例中,通過獲取該COM代理組件的接口未知(IUnknown)接口,并將所述IUnknown接口注冊到所述進程,以及獲取所述COM代理組件的類標識(CLSID)和接口標識(IID),并將所述CLSID和IID注冊到所述進程。步驟204,利用該COM代理組件調用該COM組件對應的COM進程。在本步驟中,調用該COM組件對應的COM進程的方法包括:觸發所述COM代理組件對參數進行列集處理;指令所述COM代理組件將列集處理的所述參數發送給所述COM組件對應的COM進程,以使所述COM進程利用所述列集處理的參數調用所述COM進程對應的函數生成執行結果;接收所述COM進程返回所述執行結果。在本專利技術實施例中,該列集處理的參數可以為該COM進程對應的函數的輸入變量。利用本專利技術實施例,當進程需要加載該進程外的COM組件時,該進程先將該COM組件的COM代理組件注冊到本進程。在將該COM代理組件注冊到該進程后,可以利用該COM代理組件調用該COM組件對應的COM進程。圖3為本專利技術實施例提供的一種COM組件處理方法流程示意圖。如圖3所示,在一個應用程序的進程加載該進程外的COM組件之前,該方法包括如下步驟。步驟301,加載COM代理組件。在本實施例中,需要調用的COM組件為該進程外的組件。假設需要注冊的COM組件的接口為IID_Idictionary。假設該COM組件的COM代理組件為ProComPS.dll。該進程可以調用LoadLibrary加載該ProComPS.dll。步驟302,獲取代理函數地址。在本專利技術實施例中,獲取ProComPS.dll導出的代理函數地址,即DllGetClassObject。步驟302,獲取IUknown接口。將該IUknown接口作為CLSID調用該DllGetClassObject獲取該IUknown接口。步驟304,判斷是本文檔來自技高網...
【技術保護點】
一種組件對象模型COM組件處理方法,其特征在于,在一應用程序的進程加載所述進程外的所述COM組件之前,該方法包括:獲取所述COM組件的COM代理組件;在所述當前進程內加載所述COM代理組件;將所述COM代理組件注冊到所述進程中。
【技術特征摘要】
1.一種組件對象模型COM組件處理方法,其特征在于,在一應用程序的進程加載所述進程外的所述COM組件之前,該方法包括:獲取所述COM組件的COM代理組件;在所述當前進程內加載所述COM代理組件;將所述COM代理組件注冊到所述進程中。2.根據權利要求1所述的方法,其特征在于,獲取所述COM組件的COM代理組件包括:在所述當前進程的安裝文件所在的文件目錄下查找與所述COM組件一一對應的所述COM代理組件。3.根據權利要求1所述的方法,其特征在于,將所述COM代理組件注冊到所述進程中包括:獲取所述COM代理組件的接口未知IUnknown接口,并將所述IUnknown接口注冊到所述進程;獲取所述COM代理組件的類標識CLSID和接口標識IID,并將所述CLSID和IID注冊到所述進程。4.根據權利要求1所述的方法,其特征在于,進一步包括:利用所述COM代理組件調用所述COM組件對應的COM進程。5.根據權利要求4所述的方法,其特征在于,利用所述COM代理組件調用所述COM組件對應的COM進程包括:觸發所述COM代理組件對參數進行列集處理;指令所述COM代理組件將列集處理的所述參數發送給所述COM組件對應的COM進程,以使所述COM進程利用所述列集處理的參數調用所述COM進程對應的函數生成執行結果;接收所述COM進程返回所述執行結果。6.一種組件對象模型COM組件處理裝置,其特征在于...
【專利技術屬性】
技術研發人員:尚子峰,
申請(專利權)人:騰訊科技深圳有限公司,
類型:發明
國別省市:廣東;44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。