專利名稱:瀏覽器控件恢復(fù)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,特別涉及一種瀏覽器控件恢復(fù)方法及系統(tǒng)。
背景技術(shù):
ActiveX控件以前也叫做OLE控件或OCX控件,它是一些軟件組件或?qū)ο?,可以將其插入到WEB網(wǎng)頁(yè)或其它應(yīng)用程序中。ActiveX控件技術(shù)是國(guó)際上通用的基于Windows平臺(tái)的軟件技術(shù),除了在線殺毒控件之外,許多軟件均采用此種方式開(kāi)發(fā),例如Flash動(dòng)畫(huà)播放控件、Microsoft MediaPlayer控件、CNNIC通用網(wǎng)址控件、網(wǎng)絡(luò)實(shí)名控件等。ActiveX控件需要嵌入到網(wǎng)頁(yè)中,控件和頁(yè)面會(huì)在同一個(gè)進(jìn)程下運(yùn)行。因此,當(dāng)ActiveX控件出現(xiàn)崩潰后,會(huì)導(dǎo)致整個(gè)網(wǎng)頁(yè)退出,正在書(shū)寫(xiě)的郵件博客等工作會(huì)丟失,影響了頁(yè)面操作的穩(wěn)定性。同時(shí),現(xiàn)有的崩潰恢復(fù)機(jī)制是強(qiáng)制重新啟動(dòng)一個(gè)頁(yè)面進(jìn)程,這種恢復(fù)機(jī)制往往需要花費(fèi)較多的時(shí)間,影響用戶的使用效率。
發(fā)明內(nèi)容
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種瀏覽器控件恢復(fù)方法及系統(tǒng)。依據(jù)本發(fā)明的一個(gè)方面,提供了一種瀏覽器控件恢復(fù)方法,其包括步驟截獲瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面進(jìn)程中運(yùn)行;在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中,創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在獨(dú)立進(jìn)程中運(yùn)行;代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象;代理對(duì)象定期詢問(wèn)活動(dòng)對(duì)象的運(yùn)行信息,并保存所述運(yùn)行信息;其中,所述代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,進(jìn)一步為 代理對(duì)象向獨(dú)立進(jìn)程發(fā)送所述激活信息和所述運(yùn)行信息;根據(jù)所述激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象;根據(jù)所述運(yùn)行信息,獲取原活動(dòng)對(duì)象的中斷位置,令新創(chuàng)建的活動(dòng)對(duì)象在所述中斷位置處繼續(xù)運(yùn)行。可選地,所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象的步驟,具體包括代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰;如果活動(dòng)對(duì)象卡死,則代理對(duì)象停止與所述活動(dòng)對(duì)象的通信并向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,如果獨(dú)立進(jìn)程崩潰,則創(chuàng)建新的獨(dú)立進(jìn)程,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象??蛇x地,所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰的步驟,具體包括代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,并根據(jù)所述運(yùn)行狀態(tài)信息判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰。可選地,所述代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,并根據(jù)所述運(yùn)行狀態(tài)信息判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰的步驟中,如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng)活動(dòng)對(duì)象所在線程的消息循環(huán)不活動(dòng),活動(dòng)對(duì)象的窗口掛起,活動(dòng)對(duì)象線程的一直忙,則判定活動(dòng)對(duì)象卡死;如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng)獨(dú)立進(jìn)程中的主窗口不存在,活動(dòng)對(duì)象中的窗口不存在,則判定獨(dú)立進(jìn)程崩潰。可選地,所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,進(jìn)一步包括所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信判斷活動(dòng)對(duì)象是否中斷,如果是,提示用戶活動(dòng)對(duì)象中斷;接收用戶的重激活指令;代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象??蛇x地,所述在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中,創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在獨(dú)立進(jìn)程中運(yùn)行,之后還包括步驟代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,調(diào)用活動(dòng)對(duì)象,和/或,代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,被活動(dòng)對(duì)象調(diào)用??蛇x地,頁(yè)面進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)頁(yè)面線程,截獲頁(yè)面線程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面線程中運(yùn)行;獨(dú)立進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,在所述對(duì)象線程中創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在對(duì)象線程中運(yùn)行;代理對(duì)象通過(guò)與對(duì)象線程通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向?qū)ο缶€程發(fā)送激活信息,在對(duì)象線程中重新創(chuàng)建活動(dòng)對(duì)象??蛇x地,所述方法還包括當(dāng)活動(dòng)對(duì)象出現(xiàn)問(wèn)題時(shí),對(duì)運(yùn)行所述活動(dòng)對(duì)象的對(duì)象線程執(zhí)行掛起、降低權(quán)限或終止操作??蛇x地,所述方法還包括獨(dú)立進(jìn)程創(chuàng)建活動(dòng)對(duì)象時(shí),代理對(duì)象將頁(yè)面進(jìn)程或頁(yè)面線程的通信句柄和代理對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給獨(dú)立進(jìn)程或?qū)ο缶€程;獨(dú)立進(jìn)程創(chuàng)建活動(dòng)對(duì)象后,活動(dòng)對(duì)象將獨(dú)立進(jìn)程或?qū)ο缶€程的通信句柄和活動(dòng)對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給代理對(duì)象??蛇x地,所述獨(dú)立進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,包括
獨(dú)立進(jìn)程創(chuàng)建主線程,主線程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,所述主線程用于維護(hù)全局配置??蛇x地,所述活動(dòng)對(duì)象包括ActiveX對(duì)象。根據(jù)本發(fā)明的另一方面,提供了一種瀏覽器控件恢復(fù)系統(tǒng),其包括頁(yè)面進(jìn)程模塊,適于截獲瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面進(jìn)程中運(yùn)行;獨(dú)立進(jìn)程模塊,適于在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中,創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在獨(dú)立進(jìn)程中運(yùn)行;恢復(fù)模塊,適于令代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象;所述恢復(fù)模塊還適于令代理對(duì)象定期詢問(wèn)活動(dòng)對(duì)象的運(yùn)行信息,并保存所述運(yùn)行/[目息;以及,還適于在活動(dòng)對(duì)象中斷時(shí),令代理對(duì)象向獨(dú)立進(jìn)程發(fā)送所述激活信息和所述運(yùn)行信息,根據(jù)所述激活信息在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,并且,根據(jù)所述運(yùn)行信息,獲取原活動(dòng)對(duì)象的中斷位置,令新創(chuàng)建的活動(dòng)對(duì)象在所述中斷位置處繼續(xù)運(yùn)行??蛇x地,所述恢復(fù)模塊包括判斷子模塊,適于令代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰;卡死子模塊,適于在活動(dòng)對(duì)象卡死時(shí),令代理對(duì)象停止與所述活動(dòng)對(duì)象的通信并向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象;崩潰子模塊,適于在獨(dú)立進(jìn)程崩潰時(shí),創(chuàng)建新的獨(dú)立進(jìn)程,令代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象??蛇x地,所述判斷子模塊,適于令代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,并根據(jù)所述運(yùn)行狀態(tài)信息判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰??蛇x地,所述判斷子模塊中,如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng)活動(dòng)對(duì)象所在線程的消息循環(huán)不活動(dòng),活動(dòng)對(duì)象的窗口掛起,活動(dòng)對(duì)象線程的一直忙,則判定活動(dòng)對(duì)象卡死;如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng)獨(dú)立進(jìn)程中的主窗口不存在,活動(dòng)對(duì)象中的窗口不存在,則判定獨(dú)立進(jìn)程崩潰??蛇x地,所述系統(tǒng)還包括交互模塊,適于在活動(dòng)對(duì)象中斷的情況下,提示用戶活動(dòng)對(duì)象中斷,以及接收用戶的重激活指令,并將所述重激活指令發(fā)送給所述恢復(fù)模塊??蛇x地,所述系統(tǒng)還包括調(diào)用模塊,適于令代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,調(diào)用活動(dòng)對(duì)象,和/或,代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,被活動(dòng)對(duì)象調(diào)用??蛇x地,所述頁(yè)面進(jìn)程模塊,還適于令頁(yè)面進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)頁(yè)面線程,截獲頁(yè)面線程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面線程中運(yùn)行;
所述獨(dú)立進(jìn)程模塊,還適于令獨(dú)立進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,在所述對(duì)象線程中創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在對(duì)象線程中運(yùn)行;所述恢復(fù)模塊,還適于令代理對(duì)象通過(guò)與對(duì)象線程通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向?qū)ο缶€程發(fā)送激活信息,在對(duì)象線程中重新創(chuàng)建活動(dòng)對(duì)象??蛇x地,所述系統(tǒng)還包括錯(cuò)誤處理模塊,適于當(dāng)活動(dòng)對(duì)象出現(xiàn)問(wèn)題時(shí),對(duì)運(yùn)行所述活動(dòng)對(duì)象的對(duì)象線程執(zhí)行掛起、降低權(quán)限或終止操作。可選地,所述系統(tǒng)還包括代理對(duì)象通信標(biāo)識(shí)傳送模塊,適于令獨(dú)立進(jìn)程模塊創(chuàng)建活動(dòng)對(duì)象時(shí),代理對(duì)象將頁(yè)面進(jìn)程或頁(yè)面線程的通信句柄和代理對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給獨(dú)立進(jìn)程或?qū)ο缶€程;活動(dòng)對(duì)象通信標(biāo)識(shí)傳送模塊,適于令獨(dú)立進(jìn)程模塊創(chuàng)建活動(dòng)對(duì)象后,活動(dòng)對(duì)象將獨(dú)立進(jìn)程或?qū)ο缶€程的通信句柄和活動(dòng)對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給代理對(duì)象。可選地,所述頁(yè)面進(jìn)程模塊,還適于令獨(dú)立進(jìn)程創(chuàng)建主線程,主線程為每個(gè)頁(yè)面創(chuàng)建一個(gè)對(duì)象線程,所述主線程用于維護(hù)全局配置。本發(fā)明所述瀏覽器控件恢復(fù)方法及系統(tǒng),在頁(yè)面進(jìn)程中創(chuàng)建代理對(duì)象,在獨(dú)立進(jìn)程中創(chuàng)建活動(dòng)對(duì)象,借助代理對(duì)象與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象之間的通信,及時(shí)發(fā)現(xiàn)活動(dòng)對(duì)象的中斷,并在發(fā)現(xiàn)活動(dòng)對(duì)象中斷后重新創(chuàng)建活動(dòng)對(duì)象,從而縮短了活動(dòng)對(duì)象中斷后的恢復(fù)時(shí)間,提高了用戶的使用效率。另外,通過(guò)保存活動(dòng)對(duì)象的運(yùn)行信息,可以令重新創(chuàng)建的活動(dòng)對(duì)象在原活動(dòng)對(duì)象的中斷位置處開(kāi)始運(yùn)行,進(jìn)一步提高了用戶的使用效率。上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的所述瀏覽器控件恢復(fù)方法流程圖;圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的所述瀏覽器控件恢復(fù)方法應(yīng)用于多頁(yè)面時(shí)的流程圖;圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的瀏覽器控件恢復(fù)系統(tǒng)的模塊結(jié)構(gòu)示意圖;圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的恢復(fù)模塊的內(nèi)部模塊結(jié)構(gòu)示意圖;圖5示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的瀏覽器控件恢復(fù)系統(tǒng)的模塊結(jié)構(gòu)示意圖;圖6示出了根據(jù)本發(fā)明再一個(gè)實(shí)施例的瀏覽器控件恢復(fù)系統(tǒng)的模塊結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將參照附圖更詳細(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ù)人員。圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的所述瀏覽器控件恢復(fù)方法流程圖,如圖1所示,所述方法包括步驟SlOO :截獲瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面進(jìn)程中運(yùn)行。其中,所述的活動(dòng)對(duì)象就是真實(shí)的瀏覽器控件,例如真實(shí)的ActiveX對(duì)象,SPActiveX控件;所述的代理對(duì)象可以是模擬的瀏覽器控件,例如模擬的ActiveX控件,所述代理對(duì)象在頁(yè)面進(jìn)程中運(yùn)行。具體舉例說(shuō)明本發(fā)明如下在網(wǎng)頁(yè)中有ActiveX控件的情況下,在瀏覽器創(chuàng)建ActiveX控件時(shí),會(huì)根據(jù)控件CLSID或者ProgID查詢注冊(cè)表,其中可以通過(guò)CLSIDFromProgID獲取CLSID,由此查看系統(tǒng)是否已安裝相應(yīng)控件,若安裝則會(huì)繼續(xù)創(chuàng)建過(guò)程。瀏覽器通過(guò)調(diào)用CoGetClassObject得到相應(yīng)控件的IUnknown指針,然后通過(guò)標(biāo)準(zhǔn)接口進(jìn)行相互操作。CoGetClassObject執(zhí)行過(guò)程為,通過(guò)CLSID去注冊(cè)表查詢ActiveX路徑,獲得ActiveX路徑后,調(diào)用LoadLibrary加載ActiveX控件,調(diào)用其導(dǎo)出函數(shù)DllGetClassObject獲得類廠指針(IClassFactory),然后調(diào)用IClassFactory的CreateInstance方法得到ActiveX控件對(duì)應(yīng)的IUnknown指針。在加載ActiveX控件時(shí),攔截CoGetClassObject,創(chuàng)建一個(gè)ActiveX控件代理對(duì)象,該ActiveX控件代理對(duì)象包括一系列接口,例如IUnknown指針將會(huì)調(diào)用的很多標(biāo)準(zhǔn)接口,例如 IOleOb ject、IViewOb ject 等。然后在調(diào)用 IClassFactory 的 CreateInstance 時(shí),將所創(chuàng)建的ActiveX控件代理對(duì)象返回給ActiveX控件的IUnknown指針。S200 :在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中,創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在獨(dú)立進(jìn)程中運(yùn)行。仍具體舉例說(shuō)明本發(fā)明如下在頁(yè)面激活所述ActiveX控件時(shí),提取出該控件的屬性、URL、大小等相關(guān)信息,然后創(chuàng)建一個(gè)獨(dú)立進(jìn)程。具體來(lái)說(shuō),創(chuàng)建一個(gè)文件(document),在其中插入一個(gè)對(duì)象,該獨(dú)立進(jìn)程調(diào)用CoGetClassObject,攔截該CoGetClassObject,再創(chuàng)建另一個(gè)ActiveX控件活動(dòng)對(duì)象,該ActiveX控件活動(dòng)對(duì)象包括一系列接口,例如IUnknown指針將會(huì)調(diào)用的很多標(biāo)準(zhǔn)接口,例如IOleObject、IViewObject等。然后在調(diào)用IClassFactory的CreateInstance時(shí),將所創(chuàng)建的該另一個(gè)ActiveX控件活動(dòng)對(duì)象返回給獨(dú)立進(jìn)程的ActiveX控件的IUnknown指針。S300 :代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,結(jié)束流程;否則,直接結(jié)束流程。具體舉例說(shuō)明本發(fā)明如下在所創(chuàng)建的兩個(gè)ActiveX控件對(duì)象中分別創(chuàng)建一個(gè)與該控件對(duì)象關(guān)聯(lián)的窗口以用來(lái)進(jìn)行通信。具體來(lái)說(shuō)兩個(gè)控件對(duì)象可以針對(duì)大小、焦點(diǎn)、刷新、腳本以及其他信息進(jìn)行交互。根據(jù)本發(fā)明的方法可以攔截以上兩個(gè)進(jìn)程中的所有請(qǐng)求,通過(guò)預(yù)先創(chuàng)建的兩個(gè)ActiveX控件對(duì)象來(lái)實(shí)現(xiàn)這兩個(gè)進(jìn)程之間的信息交互。由此ActiveX控件的具體計(jì)算過(guò)程在獨(dú)立進(jìn)程中進(jìn)行,因而不會(huì)影響原網(wǎng)頁(yè)的進(jìn)程。
所述步驟S300進(jìn)一步包括S310 :代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰。具體地,代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,并根據(jù)所述運(yùn)行狀態(tài)信息判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰。如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng)活動(dòng)對(duì)象所在線程的消息循環(huán)不活動(dòng),活動(dòng)對(duì)象的窗口掛起,活動(dòng)對(duì)象線程的一直忙,則判定活動(dòng)對(duì)象卡死;如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng)獨(dú)立進(jìn)程中的主窗口不存在,活動(dòng)對(duì)象中的窗口不存在,則判定獨(dú)立進(jìn)程崩潰。代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,具體來(lái)說(shuō)可以用很多方式實(shí)現(xiàn)這一監(jiān)控動(dòng)作,舉例來(lái)說(shuō),可以在開(kāi)啟的獨(dú)立進(jìn)程中為每一個(gè)活動(dòng)對(duì)象綁定一個(gè)消息窗口 ;令頁(yè)面進(jìn)程的代理對(duì)象定期地查詢?cè)撓⒋翱冢员O(jiān)控該活動(dòng)對(duì)象是否正常運(yùn)行。S320 :如果活動(dòng)對(duì)象卡死,則代理對(duì)象停止與所述活動(dòng)對(duì)象的通信并向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象。S330:如果獨(dú)立進(jìn)程崩潰,則創(chuàng)建新的獨(dú)立進(jìn)程,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象。通過(guò)上述方法步驟的執(zhí)行,能夠及時(shí)識(shí)別活動(dòng)對(duì)象的中斷,并在活動(dòng)對(duì)象中斷后對(duì)其及時(shí)重新激活,縮短響應(yīng)時(shí)間。另外,所述步驟S200之后還可以包括步驟Pl :代理對(duì)象定期詢問(wèn)活動(dòng)對(duì)象的運(yùn)行信息,并保存所述運(yùn)行信息。相應(yīng)地,所述步驟S300中,所述代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,進(jìn)一步為代理對(duì)象向獨(dú)立進(jìn)程發(fā)送所述激活信息和所述運(yùn)行信息;根據(jù)所述激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象;根據(jù)所述運(yùn)行信息,獲取原活動(dòng)對(duì)象的中斷位置,令新創(chuàng)建的活動(dòng)對(duì)象在所述中斷位置處繼續(xù)運(yùn)行。其中,所述激活信息主要是活動(dòng)對(duì)象的屬性、URL、位置、大小等信息;所述運(yùn)行信息是活動(dòng)對(duì)象的運(yùn)行進(jìn)度信息。通過(guò)采用所述步驟P1,以及對(duì)所述步驟S300進(jìn)行相應(yīng)的改變,可以保證活動(dòng)對(duì)象能夠在中斷位置處開(kāi)始重新運(yùn)行,相比現(xiàn)有技術(shù)中完全的重新啟動(dòng),顯然進(jìn)一步提高了響應(yīng)效率。所述步驟S300中還可以由用戶選擇是否重新激活已經(jīng)中斷的活動(dòng)對(duì)象以提高與用戶的交互性能,具體地,其可以進(jìn)一步包括所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信判斷活動(dòng)對(duì)象是否中斷,如果是,提示用戶活動(dòng)對(duì)象中斷;接收用戶的重激活指令;代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象。所述步驟S300之后還可以包括步驟S400 :代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,調(diào)用活動(dòng)對(duì)象,和/或,代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,被活動(dòng)對(duì)象調(diào)用。
通常一個(gè)瀏覽器往往可以打開(kāi)很多個(gè)頁(yè)面來(lái)瀏覽不同的網(wǎng)頁(yè),參見(jiàn)圖2,所述方法還可以應(yīng)用于多頁(yè)面的情況,此時(shí)可以多線程方式對(duì)應(yīng)多個(gè)頁(yè)面運(yùn)行多個(gè)活動(dòng)對(duì)象,具體地,所述方法步驟如下:S100’:頁(yè)面進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)頁(yè)面線程,截獲頁(yè)面線程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面線程中運(yùn)行.
S200’:獨(dú)立進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,在所述對(duì)象線程中創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在對(duì)象線程中運(yùn)行。該步驟中,獨(dú)立進(jìn)程創(chuàng)建主線程,主線程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,所述主線程用于維護(hù)全局配置。并且,該步驟中,獨(dú)立進(jìn)程創(chuàng)建活動(dòng)對(duì)象時(shí),代理對(duì)象將頁(yè)面進(jìn)程或頁(yè)面線程的通信句柄和代理對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給獨(dú)立進(jìn)程或?qū)ο缶€程;獨(dú)立進(jìn)程創(chuàng)建活動(dòng)對(duì)象后,活動(dòng)對(duì)象將獨(dú)立進(jìn)程或?qū)ο缶€程的通信句柄和活動(dòng)對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給代理對(duì)象。S300’:代理對(duì)象通過(guò)與對(duì)象線程通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向?qū)ο缶€程發(fā)送激活信息,在對(duì)象線程中重新創(chuàng)建活動(dòng)對(duì)象。所述活動(dòng)對(duì)象包括ActiveX對(duì)象,以ActiveX對(duì)象為例,則ActiveX對(duì)象在對(duì)象線程中運(yùn)行,當(dāng)ActiveX對(duì)象出現(xiàn)問(wèn)題時(shí),例如ActiveX對(duì)象陷入死循環(huán)時(shí),可以對(duì)運(yùn)行所述ActiveX對(duì)象的對(duì)象線程執(zhí)行掛起操作,使得所述對(duì)象線程暫時(shí)不能運(yùn)行;或者對(duì)運(yùn)行所述ActiveX對(duì)象的對(duì)象線程執(zhí)行降低權(quán)限操作;或者對(duì)運(yùn)行所述ActiveX對(duì)象的對(duì)象線程執(zhí)行終止操作,終止所述的對(duì)象線程。
在本申請(qǐng)所述的方法中,例如,針對(duì)IE瀏覽器中ActiveX控件的執(zhí)行過(guò)程中,可以創(chuàng)建模擬的ActiveX類廠,取代真實(shí)的ActiveX類廠,在頁(yè)面進(jìn)程或頁(yè)面線程模擬標(biāo)準(zhǔn)方
式,創(chuàng)建代理對(duì)象,例如,參考如下的模型:
權(quán)利要求
1.一種瀏覽器控件恢復(fù)方法,其包括: 截獲瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面進(jìn)程中運(yùn)行; 在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中,創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在獨(dú)立進(jìn)程中運(yùn)行; 代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象; 代理對(duì)象定期詢問(wèn)活動(dòng)對(duì)象的運(yùn)行信息,并保存所述運(yùn)行信息; 所述代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,進(jìn)一步為: 代理對(duì)象向獨(dú)立進(jìn)程發(fā)送所述激活信息和所述運(yùn)行信息; 根據(jù)所述激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象; 根據(jù)所述運(yùn)行信息,獲取原活動(dòng)對(duì)象的中斷位置,令新創(chuàng)建的活動(dòng)對(duì)象在所述中斷位置處繼續(xù)運(yùn)行。
2.如權(quán)利要求1所述的方法,其特征在于,所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象的步驟,具體包括: 代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰; 如果活動(dòng)對(duì)象卡死,則代理對(duì)象停止與所述活動(dòng)對(duì)象的通信并向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象, 如果獨(dú)立進(jìn)程崩潰,則創(chuàng)建新的獨(dú)立進(jìn)程,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象。
3.如權(quán)利要求2所述的方法,其特征在于,所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰的步驟,具體包括: 代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,并根據(jù)所述運(yùn)行狀態(tài)信息判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰。
4.如權(quán)利要求3所述的方法,其特征在于,所述代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,并根據(jù)所述運(yùn)行狀態(tài)信息判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰的步驟中, 如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng):活動(dòng)對(duì)象所在線程的消息循環(huán)不活動(dòng),活動(dòng)對(duì)象的窗口掛起,活動(dòng)對(duì)象線程的一直忙,則判定活動(dòng)對(duì)象卡死; 如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng):獨(dú)立進(jìn)程中的主窗口不存在,活動(dòng)對(duì)象中的窗口不存在,則判定獨(dú)立進(jìn)程崩潰。
5.如權(quán)利要求1所述的方法,其特征在于,所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,進(jìn)一步包括: 所述代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信判斷活動(dòng)對(duì)象是否中斷,如果是,提示用戶活動(dòng)對(duì)象中斷;接收用戶的重激活指令; 代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象。
6.如權(quán)利要求1所述的方法,其特征在于,所述在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中,創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在獨(dú)立進(jìn)程中運(yùn)行,之后還包括步驟: 代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,調(diào)用活動(dòng)對(duì)象,和/或, 代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,被活動(dòng)對(duì)象調(diào)用。
7.如權(quán)利要求1所述的方法,其特征在于, 頁(yè)面進(jìn)程為每個(gè) 頁(yè)面創(chuàng)建一個(gè)頁(yè)面線程,截獲頁(yè)面線程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面線程中運(yùn)行; 獨(dú)立進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,在所述對(duì)象線程中創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在對(duì)象線程中運(yùn)行; 代理對(duì)象通過(guò)與對(duì)象線程通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向?qū)ο缶€程發(fā)送激活信息,在對(duì)象線程中重新創(chuàng)建活動(dòng)對(duì)象。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括: 當(dāng)活動(dòng)對(duì)象出現(xiàn)問(wèn)題時(shí),對(duì)運(yùn)行所述活動(dòng)對(duì)象的對(duì)象線程執(zhí)行掛起、降低權(quán)限或終止操作。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括: 獨(dú)立進(jìn)程創(chuàng)建活動(dòng)對(duì)象時(shí),代理對(duì)象將頁(yè)面進(jìn)程或頁(yè)面線程的通信句柄和代理對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給獨(dú)立進(jìn)程或?qū)ο缶€程; 獨(dú)立進(jìn)程創(chuàng)建活動(dòng)對(duì)象后,活動(dòng)對(duì)象將獨(dú)立進(jìn)程或?qū)ο缶€程的通信句柄和活動(dòng)對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給代理對(duì)象。
10.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述獨(dú)立進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,包括: 獨(dú)立進(jìn)程創(chuàng)建主線程,主線程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,所述主線程用于維護(hù)全局配置。
11.如權(quán)利要求1所述的方法,其特征在于,所述活動(dòng)對(duì)象包括ActiveX對(duì)象。
12.一種瀏覽器控件恢復(fù)系統(tǒng),其包括: 頁(yè)面進(jìn)程模塊,適于截獲瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面進(jìn)程中運(yùn)行; 獨(dú)立進(jìn)程模塊,適于在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中,創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在獨(dú)立進(jìn)程中運(yùn)行; 恢復(fù)模塊,適于令代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象; 所述恢復(fù)模塊還適于令代理對(duì)象定期詢問(wèn)活動(dòng)對(duì)象的運(yùn)行信息,并保存所述運(yùn)行信息;以及, 還適于在活動(dòng)對(duì)象中斷時(shí),令代理對(duì)象向獨(dú)立進(jìn)程發(fā)送所述激活信息和所述運(yùn)行信息,根據(jù)所述激活信息在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,并且,根據(jù)所述運(yùn)行信息,獲取原活動(dòng)對(duì)象的中斷位置,令新創(chuàng)建的活動(dòng)對(duì)象在所述中斷位置處繼續(xù)運(yùn)行。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述恢復(fù)模塊包括:判斷子模塊,適于令代理對(duì)象通過(guò)與獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象通信判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰; 卡死子模塊,適于在活動(dòng)對(duì)象卡死時(shí),令代理對(duì)象停止與所述活動(dòng)對(duì)象的通信并向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象; 崩潰子模塊,適于在獨(dú)立進(jìn)程崩潰時(shí),創(chuàng)建新的獨(dú)立進(jìn)程,令代理對(duì)象向獨(dú)立進(jìn)程發(fā)送激活信息,在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述判斷子模塊,適于令代理對(duì)象定期詢問(wèn)獨(dú)立進(jìn)程和/或其活動(dòng)對(duì)象的運(yùn)行狀態(tài)信息,并根據(jù)所述運(yùn)行狀態(tài)信息判斷活動(dòng)對(duì)象是否卡死和/或獨(dú)立進(jìn)程是否崩潰。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述判斷子模塊中, 如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng):活動(dòng)對(duì)象所在線程的消息循環(huán)不活動(dòng),活動(dòng)對(duì)象的窗口掛起,活動(dòng)對(duì)象線程的一直忙,則判定活動(dòng)對(duì)象卡死; 如果根據(jù)所述運(yùn)行狀態(tài)信息發(fā)現(xiàn)以下至少一項(xiàng):獨(dú)立進(jìn)程中的主窗口不存在,活動(dòng)對(duì)象中的窗口不存在,則判定獨(dú)立進(jìn)程崩潰。
16.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 交互模塊,適于在活動(dòng)對(duì)象中斷的情況下,提示用戶活動(dòng)對(duì)象中斷,以及接收用戶的重激活指令,并將所述重激活指令發(fā)送給所述恢復(fù)模塊。
17.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 調(diào)用模塊,適于令代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,調(diào)用活動(dòng)對(duì)象,和/或,代理對(duì)象通過(guò)與獨(dú)立進(jìn)程通信,被活動(dòng)對(duì)象調(diào)用。
18.如權(quán)利要求12所述的系統(tǒng),其特征在于, 所述頁(yè)面進(jìn)程模塊,還適于令頁(yè)面進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)頁(yè)面線程,截獲頁(yè)面線程創(chuàng)建活動(dòng)對(duì)象的過(guò)程,創(chuàng)建代理對(duì)象替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述代理對(duì)象在頁(yè)面線程中運(yùn)行; 所述獨(dú)立進(jìn)程模塊,還適于令獨(dú)立進(jìn)程為每個(gè)頁(yè)面創(chuàng)建一個(gè)獨(dú)立于頁(yè)面線程的對(duì)象線程,在所述對(duì)象線程中創(chuàng)建所述實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象,所述活動(dòng)對(duì)象在對(duì)象線程中運(yùn)行; 所述恢復(fù)模塊,還適于令代理對(duì)象通過(guò)與對(duì)象線程通信判斷活動(dòng)對(duì)象是否中斷,如果是,代理對(duì)象向?qū)ο缶€程發(fā)送激活信息,在對(duì)象線程中重新創(chuàng)建活動(dòng)對(duì)象。
19.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 錯(cuò)誤處理模塊,適于當(dāng)活動(dòng)對(duì)象出現(xiàn)問(wèn)題時(shí),對(duì)運(yùn)行所述活動(dòng)對(duì)象的對(duì)象線程執(zhí)行掛起、降低權(quán)限或終止操作。
20.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 代理對(duì)象通信標(biāo)識(shí)傳送模塊,適于令獨(dú)立進(jìn)程模塊創(chuàng)建活動(dòng)對(duì)象時(shí),代理對(duì)象將頁(yè)面進(jìn)程或頁(yè)面線程的通信句柄和代理對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給獨(dú)立進(jìn)程或?qū)ο缶€程; 活動(dòng)對(duì)象通信標(biāo)識(shí)傳送模塊,適于令獨(dú)立進(jìn)程模塊創(chuàng)建活動(dòng)對(duì)象后,活動(dòng)對(duì)象將獨(dú)立進(jìn)程或?qū)ο缶€程的通信句柄和活動(dòng)對(duì)象標(biāo)識(shí)作為通信標(biāo)識(shí),傳送給代理對(duì)象。
全文摘要
本發(fā)明公開(kāi)了一種瀏覽器控件恢復(fù)方法及系統(tǒng),涉及網(wǎng)絡(luò)通信領(lǐng)域。所述系統(tǒng)包括頁(yè)面進(jìn)程模塊;獨(dú)立進(jìn)程模塊;恢復(fù)模塊;所述恢復(fù)模塊還適于令代理對(duì)象定期詢問(wèn)活動(dòng)對(duì)象的運(yùn)行信息,并保存所述運(yùn)行信息;以及,還適于在活動(dòng)對(duì)象中斷時(shí),令代理對(duì)象向獨(dú)立進(jìn)程發(fā)送所述激活信息和所述運(yùn)行信息,根據(jù)所述激活信息在獨(dú)立進(jìn)程中重新創(chuàng)建活動(dòng)對(duì)象,并且,根據(jù)所述運(yùn)行信息,獲取原活動(dòng)對(duì)象的中斷位置,令新創(chuàng)建的活動(dòng)對(duì)象在所述中斷位置處繼續(xù)運(yùn)行。本發(fā)明能夠及時(shí)發(fā)現(xiàn)活動(dòng)對(duì)象的中斷,并在發(fā)現(xiàn)活動(dòng)對(duì)象中斷后重新創(chuàng)建活動(dòng)對(duì)象,從而縮短了活動(dòng)對(duì)象中斷后的恢復(fù)時(shí)間,提高了用戶的使用效率。
文檔編號(hào)G06F11/07GK103077092SQ201210572060
公開(kāi)日2013年5月1日 申請(qǐng)日期2012年12月25日 優(yōu)先權(quán)日2012年12月25日
發(fā)明者李錦偉, 賀躍松, 陳志 , 付俁, 任寰 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司