專利名稱:Linux下本地應(yīng)用程序嵌入桌面窗體的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及桌面窗體的嵌入,尤其是一種在Linux下本地應(yīng)用程序嵌入桌面窗體的方法及系統(tǒng)。
背景技術(shù):
目前,用戶通過打開安裝好的本地應(yīng)用程序即可完成與本地應(yīng)用程序相關(guān)的操作,由于這種操作簡(jiǎn)單快捷,所以,當(dāng)涉及到本地應(yīng)用程序能夠直接處理時(shí),用戶一般通過直接打開本地應(yīng)用程序的方式。但有時(shí)一些桌面窗體中也會(huì)用到相關(guān)的本地應(yīng)用程序,比如在桌面窗體中打開一些辦公文檔或辦公表格,此時(shí),如果下載、拷貝后通過本地應(yīng)用程序進(jìn)行操作,不僅辦公不方便,也很浪費(fèi)時(shí)間,而且由于需要在本地應(yīng)用程序和桌面窗體之間經(jīng)常進(jìn)行切換,很容易產(chǎn)生錯(cuò)誤。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明的目的在于提供一種Linux下本地應(yīng)用程序嵌入桌面窗體的方法及系統(tǒng),通過這種方式,使本地應(yīng)用程序嵌入到桌面窗體,從而不必單獨(dú)打開本地應(yīng)用程序,就可以實(shí)現(xiàn)對(duì)本地應(yīng)用程序相關(guān)內(nèi)容的操作。本發(fā)明解決其問題所采用的技術(shù)方案是
Linux下本地應(yīng)用程序嵌入桌面窗體的方法,包括以下步驟
步驟A,桌面窗體程序通過引入動(dòng)態(tài)鏈接庫封裝的調(diào)用接口的頭文件對(duì)調(diào)用接口進(jìn)行調(diào)用,從而加載動(dòng)態(tài)鏈接庫;
步驟B,桌面窗體程序通過對(duì)動(dòng)態(tài)鏈接庫中函數(shù)的調(diào)用啟動(dòng)本地應(yīng)用程序并使本地應(yīng)用程序窗體嵌入至桌面窗體;
步驟C,動(dòng)態(tài)鏈接庫封裝的調(diào)用接口轉(zhuǎn)調(diào)動(dòng)態(tài)鏈接庫中類繼承的本地應(yīng)用程序接口 ;步驟D,動(dòng)態(tài)鏈接庫中類繼承的本地應(yīng)用程序接口通過Linux下的DBus與本地應(yīng)用程序進(jìn)程進(jìn)行通信,完成對(duì)本地應(yīng)用程序的調(diào)用并執(zhí)行對(duì)應(yīng)的操作。進(jìn)一步,所述動(dòng)態(tài)鏈接庫封裝的調(diào)用接口為純虛類接口。進(jìn)一步,所述步驟D中,DBus通過在動(dòng)態(tài)鏈接庫中類繼承的本地程序接口和本地應(yīng)用程序進(jìn)程之間建立DBus連接實(shí)現(xiàn)二者之間通信,同時(shí)DBus會(huì)為此DBus連接命名。進(jìn)一步,所述為DBus連接命名時(shí),加密后的桌面窗體ID作為名字的一部分。進(jìn)一步,所述桌面窗體和本地應(yīng)用程序窗體符合X Window協(xié)議。Linux下本地應(yīng)用程序嵌入桌面窗體的系統(tǒng),其特征在于,包括DBus通信模塊,桌面窗體模塊,本地應(yīng)用程序和動(dòng)態(tài)鏈接庫,其中
動(dòng)態(tài)鏈接庫,包括調(diào)用模塊和接口模塊;
桌面窗體模塊,用于啟動(dòng)桌面窗體,桌面窗體調(diào)用動(dòng)態(tài)鏈接庫中的調(diào)用模塊,加載動(dòng)態(tài)鏈接庫;
調(diào)用模塊,用于調(diào)用接口模塊,且可以通過調(diào)用動(dòng)態(tài)鏈接庫中的函數(shù)啟動(dòng)本地應(yīng)用程序進(jìn)程,并使本地應(yīng)用程序窗體嵌入至桌面窗體;
DBus通信模塊,用于在接口模塊和本地應(yīng)用程序之間建立通信,實(shí)現(xiàn)接口模塊對(duì)本地應(yīng)用程序的調(diào)用,同時(shí)執(zhí)行相應(yīng)的操作。進(jìn)一步,所述DBus通信模塊通過建立DBus連接實(shí)現(xiàn)接口模塊與本地應(yīng)用程序之間的通信,同時(shí)DBus通信模塊為此DBus連接命名。進(jìn)一步,所述DBus通信模塊為此DBus連接命名時(shí),加密后的桌面窗體ID作為DBus連接名字的一部分。進(jìn)一步,所述桌面窗體和本地應(yīng)用程序窗體符合X Window協(xié)議。本發(fā)明的有益效果是
本發(fā)明采用一種在Linux下本地應(yīng)用程序嵌入桌面窗體的方法及系統(tǒng),桌面窗體通過動(dòng)態(tài)鏈接庫中的純虛類接口加載動(dòng)態(tài)鏈接庫,之后,桌面窗體會(huì)通過調(diào)用鏈接庫中相關(guān)的函數(shù)啟動(dòng)本地應(yīng)用程序并使本地應(yīng)用程序窗體嵌入到桌面窗體中。之后,動(dòng)態(tài)鏈接庫通過Linux下DBus與本地應(yīng)用程序進(jìn)程間通信,實(shí)現(xiàn)對(duì)本地應(yīng)用程序的調(diào)用。通過這種方式,桌面窗體加載相關(guān)本地應(yīng)用程序時(shí),就可以在桌面窗體內(nèi)部實(shí)現(xiàn),相比通過打開本地應(yīng)用程序進(jìn)行操作,極大縮短了時(shí)間,并且使用戶操作起來也更加方便。
下面結(jié)合附圖和實(shí)例對(duì)本發(fā)明作進(jìn)一步說明。圖1是本發(fā)明方法的程序流程圖。圖2是發(fā)明系統(tǒng)的結(jié)構(gòu)組成框圖。圖3是本發(fā)明實(shí)施例WPS嵌入Qt窗體的程序流程圖。
具體實(shí)施例方式圖1是本發(fā)明方法的程序流程圖,參照?qǐng)D1所示,包括以下步驟
步驟A,桌面窗體通過引入動(dòng)態(tài)鏈接庫封裝的純虛類接口的頭文件對(duì)純虛類接口進(jìn)行調(diào)用,從而加載動(dòng)態(tài)鏈接庫。本步驟中,桌面窗體通過引入動(dòng)態(tài)鏈接庫包括的頭文件,就可以對(duì)其封裝的純虛類接口進(jìn)行調(diào)用,加載此動(dòng)態(tài)鏈接庫。動(dòng)態(tài)鏈接庫是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫,其不屬于可執(zhí)行文件,但進(jìn)程可以調(diào)用動(dòng)態(tài)鏈接庫中不屬于可執(zhí)行代碼的函數(shù)。步驟B,桌面窗體通過對(duì)動(dòng)態(tài)鏈接庫中函數(shù)的調(diào)用啟動(dòng)本地應(yīng)用程序并使本地應(yīng)用程序窗體嵌入至桌面窗體。本步驟中,桌面窗體可以調(diào)用動(dòng)態(tài)鏈接庫中設(shè)定的函數(shù)啟動(dòng)對(duì)應(yīng)的本地應(yīng)用程序進(jìn)程,并使本地應(yīng)用程序窗體嵌入到桌面窗體中。步驟C,動(dòng)態(tài)鏈接庫封裝的純虛類接口轉(zhuǎn)調(diào)動(dòng)態(tài)鏈接庫中類繼承的本地應(yīng)用程序接口。本步驟中,動(dòng)態(tài)鏈接庫內(nèi)的純虛類接口可以直接調(diào)用內(nèi)部的類繼承的本地應(yīng)用程序接口。步驟D,動(dòng)態(tài)鏈接庫中類繼承的本地應(yīng)用程序接口通過Linux下的DBus與本地應(yīng)用程序進(jìn)程進(jìn)行通信,完成調(diào)用并執(zhí)行相關(guān)的操作。本步驟中,Linux下的DBus建立一個(gè)DBus連接,同時(shí)DBus會(huì)為此DBus連接命名,加密后的桌面窗體ID也作為此DBus連接名字的一部分。動(dòng)態(tài)鏈接庫中類繼承的本地應(yīng)用程序接口通過DBus連接實(shí)現(xiàn)與本地應(yīng)用程序進(jìn)程之間的通信,完成對(duì)本地應(yīng)用程序的調(diào)用并執(zhí)行對(duì)應(yīng)的操作。所述DBus是一個(gè)適用于桌面應(yīng)用的進(jìn)程間的通訊機(jī)制。所述桌面窗體和本地應(yīng)用程序窗體符合X Window協(xié)議
圖2是發(fā)明系統(tǒng)的結(jié)構(gòu)組成框圖,參照?qǐng)D2所示,包括
DBus通信模塊,桌面窗體模塊,本地應(yīng)用程序和動(dòng)態(tài)鏈接庫,其中
動(dòng)態(tài)鏈接庫,包括調(diào)用模塊和接口模塊;
桌面窗體模塊,用于啟動(dòng)桌面窗體,桌面窗體調(diào)用動(dòng)態(tài)鏈接庫中的調(diào)用模塊,加載動(dòng)態(tài)鏈接庫;
調(diào)用模塊,用于調(diào)用接口模塊,且可以通過調(diào)用動(dòng)態(tài)鏈接庫中的函數(shù)啟動(dòng)本地應(yīng)用程序進(jìn)程,并使本地應(yīng)用程序窗體嵌入至桌面窗體;
DBus通信模塊,通過建立DBus連接實(shí)現(xiàn)接口模塊與本地應(yīng)用程序之間的通信,完成接口模塊對(duì)本地應(yīng)用程序的調(diào)用,同時(shí)執(zhí)行相應(yīng)的操作。DBus通信模塊在建立DBus連接時(shí),會(huì)為此DBus連接命名,且加密后的桌面窗體ID作為DBus連接名字的一部分。由于桌面窗體ID是唯一的,就保證了多個(gè)桌面窗體分別啟動(dòng)本地應(yīng)用程序時(shí)互不影響,對(duì)桌面窗體ID加密后,使每次啟動(dòng)的服務(wù)名字都不同,其它程序就無法使用此服務(wù)名字。所述桌面窗體和本地應(yīng)用程序窗體均符合X Window協(xié)議。需要說明的是,所述本地應(yīng)用程序包括但不限于控制臺(tái)程序、辦公軟件程序、TOF瀏覽器等,且本地應(yīng)用程序有對(duì)應(yīng)的窗體程序。通過這種方式,桌面窗體模塊可以在窗體內(nèi)部實(shí)現(xiàn)對(duì)本地應(yīng)用程序的調(diào)用并完成對(duì)應(yīng)的操作,這樣用戶不僅會(huì)感覺操作簡(jiǎn)單方便,同時(shí)也節(jié)約了時(shí)間,
參照?qǐng)D3所示的WPS嵌入Qt窗體的程序流程圖,包括Linux操作系統(tǒng)和動(dòng)態(tài)鏈接庫,其中本實(shí)施例選取Qt窗體作為桌面窗體、WPS作為本地應(yīng)用程序進(jìn)行說明。動(dòng)態(tài)鏈接庫封裝有純虛類的接口,并且定義了類繼承WPS內(nèi)的接口。包括以下步驟
步驟A,Qt窗體程序通過引入動(dòng)態(tài)鏈接庫封裝的純虛類接口文件調(diào)用純虛類接口,從而加載動(dòng)態(tài)鏈接庫;
步驟B,Qt窗體程序通過調(diào)用鏈接庫相關(guān)函數(shù)啟動(dòng)WPS并WPS窗體嵌入到Qt窗體內(nèi); 步驟C,動(dòng)態(tài)鏈接庫封裝的純虛類接口轉(zhuǎn)調(diào)動(dòng)態(tài)鏈接庫中類繼承的WPS接口;
步驟D,動(dòng)態(tài)鏈接庫中類繼承的WPS接口通過Linux下DBus與WPS進(jìn)程間通信,實(shí)現(xiàn)對(duì)WPS的調(diào)用并完成相關(guān)的操作。所述WPS開放了一套API接口,API是一個(gè)樹形結(jié)構(gòu),最頂端的Api是Application,其他的API都算是它的下級(jí)。所以要通過一些API去完成一些功能,就要先得到最頂端的API對(duì)象。然后通過這個(gè)Application —級(jí)一級(jí)往下找,再找到我們需要的API。正是由于WPS的這種API結(jié)構(gòu),如果要調(diào)用WPS相關(guān)的API,就必須保證調(diào)用兩端接口一致。因此,動(dòng)態(tài)鏈接庫中類繼承的WPS接口同樣會(huì)保持與WPS的API —致的樹形結(jié)構(gòu)。Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面庫,包括豐富了 API函數(shù)。Qt窗體是Qt開發(fā)的一種窗體應(yīng)用,Qt窗體程序通過引入動(dòng)態(tài)鏈接庫封裝的純虛類接口頭文件可以調(diào)用純虛類接口,加載動(dòng)態(tài)鏈接庫。加載完成后,Qt窗體程序會(huì)通過調(diào)用動(dòng)態(tài)鏈接庫中相關(guān)的函數(shù)啟動(dòng)WPS并使WPS嵌入至Qt窗體中,之后,動(dòng)態(tài)鏈接庫中的純虛類接口會(huì)轉(zhuǎn)調(diào)對(duì)應(yīng)的動(dòng)態(tài)鏈接庫中的類繼承的WPS接口。WPS嵌入至Qt窗體是通過WPS內(nèi)部主窗口繼承由Qt窗體提供的QXllEmbedWidge類實(shí)現(xiàn)的,且Qt窗體與WPS均符合X Window協(xié)議。所述X Window協(xié)議是標(biāo)準(zhǔn)化軟件工具包及顯示架構(gòu)的運(yùn)作協(xié)議。動(dòng)態(tài)鏈接庫中類繼承的WPS接口通過Linux下DBus與WPS進(jìn)程間通信實(shí)現(xiàn)對(duì)WPS的調(diào)用并完成相關(guān)的操作,所述DBus是一種高級(jí)的進(jìn)程間通信機(jī)制。動(dòng)態(tài)鏈接庫會(huì)把調(diào)用命令打包成消息,所述消息包括傳送者,接收者和消息實(shí)體。DBus會(huì)根據(jù)消息提供的服務(wù)名字和路徑名字在動(dòng)態(tài)鏈接庫和對(duì)應(yīng)的WPS進(jìn)程之間建立對(duì)應(yīng)的DBus連接,同時(shí)為此DBus連接命名。每個(gè)Qt窗體都有一個(gè)唯一的ID,為了使同時(shí)啟動(dòng)多個(gè)Qt窗體時(shí)調(diào)用WPS不受影響,在為DBus連接命名時(shí),Qt窗體ID也被加入進(jìn)去,這樣就保證了每次啟動(dòng)的服務(wù)名字是不同的,為了不讓其它程序使用此服務(wù)名字,可以給Qt窗體ID加密,使其它程序無法使用此服務(wù)名字。操作完成后或者關(guān)閉Qt窗體時(shí),退出WPS即可。以上所述,只是本發(fā)明的較佳實(shí)施例而已,本發(fā)明并不局限于上述實(shí)施方式,只要其以相同的手段達(dá)到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.Linux下本地應(yīng)用程序嵌入桌面窗體的方法,其特征在于,包括以下步驟步驟A,桌面窗體程序通過引入動(dòng)態(tài)鏈接庫封裝的調(diào)用接口的頭文件對(duì)調(diào)用接口進(jìn)行調(diào)用,從而加載動(dòng)態(tài)鏈接庫;步驟B,桌面窗體程序通過對(duì)動(dòng)態(tài)鏈接庫中函數(shù)的調(diào)用啟動(dòng)本地應(yīng)用程序并使本地應(yīng)用程序窗體嵌入至桌面窗體;步驟C,動(dòng)態(tài)鏈接庫封裝的調(diào)用接口轉(zhuǎn)調(diào)動(dòng)態(tài)鏈接庫中類繼承的本地應(yīng)用程序接口 ;步驟D,動(dòng)態(tài)鏈接庫中類繼承的本地應(yīng)用程序接口通過Linux下的DBus與本地應(yīng)用程序進(jìn)程進(jìn)行通信,完成對(duì)本地應(yīng)用程序的調(diào)用并執(zhí)行對(duì)應(yīng)的操作。
2.根據(jù)權(quán)利要求1所述的Linux下本地應(yīng)用程序嵌入桌面窗體的方法,其特征在于 所述動(dòng)態(tài)鏈接庫封裝的調(diào)用接口為純虛類接口。
3.根據(jù)權(quán)利要求1所述的Linux下本地應(yīng)用程序嵌入桌面窗體的方法,其特征在于 所述步驟D中,DBus通過在動(dòng)態(tài)鏈接庫中類繼承的本地程序接口和本地應(yīng)用程序進(jìn)程之間建立DBus連接實(shí)現(xiàn)二者之間通信,同時(shí)DBus會(huì)為此DBus連接命名。
4.根據(jù)權(quán)利要求3所述的Linux下本地應(yīng)用程序嵌入桌面窗體的方法,其特征在于 所述為此DBus連接命名時(shí),加密后的桌面窗體ID作為名字的一部分。
5.根據(jù)權(quán)利要求1至4任一所述的Linux下本地應(yīng)用程序嵌入桌面窗體的方法,其特征在于所述桌面窗體和本地應(yīng)用程序窗體符合X Window協(xié)議。
6.Linux下本地應(yīng)用程序嵌入桌面窗體的系統(tǒng),其特征在于,包括DBus通信模塊,桌面窗體模塊,本地應(yīng)用程序和動(dòng)態(tài)鏈接庫,其中動(dòng)態(tài)鏈接庫,包括調(diào)用模塊和接口模塊;桌面窗體模塊,用于啟動(dòng)桌面窗體,桌面窗體調(diào)用動(dòng)態(tài)鏈接庫中的調(diào)用模塊,加載動(dòng)態(tài)鏈接庫;調(diào)用模塊,用于調(diào)用接口模塊,且可以通過調(diào)用動(dòng)態(tài)鏈接庫中的函數(shù)啟動(dòng)本地應(yīng)用程序進(jìn)程,并使本地應(yīng)用程序窗體嵌入至桌面窗體;DBus通信模塊,用于在接口模塊和本地應(yīng)用程序之間建立通信,實(shí)現(xiàn)接口模塊對(duì)本地應(yīng)用程序的調(diào)用,同時(shí)執(zhí)行相應(yīng)的操作。
7.根據(jù)權(quán)利要求6所述的Linux下本地應(yīng)用程序嵌入桌面窗體的系統(tǒng),其特征在于 所述DBus通信模塊通過建立DBus連接實(shí)現(xiàn)接口模塊與本地應(yīng)用程序之間的通信,同時(shí) DBus通信模塊為此DBus連接命名。
8.根據(jù)權(quán)利要求7所述的Linux下本地應(yīng)用程序嵌入桌面窗體的系統(tǒng),其特征在于 所述DBus通信模塊為此DBus連接命名時(shí),加密后的桌面窗體ID作為DBus連接名字的一部分。
9.根據(jù)權(quán)利要求6至8任一所述的Linux下本地應(yīng)用程序嵌入桌面窗體的系統(tǒng),其特征在于所述桌面窗體和本地應(yīng)用程序窗體符合X Window協(xié)議。
全文摘要
本發(fā)明公開了一種在Linux下本地應(yīng)用程序嵌入桌面窗體的方法及系統(tǒng),首先桌面窗體加載動(dòng)態(tài)鏈接庫,加載后通過調(diào)用動(dòng)態(tài)鏈接庫中的函數(shù)啟動(dòng)本地程序并本地應(yīng)用程序窗體嵌入到桌面窗體中,之后,動(dòng)態(tài)鏈接庫通過Linux下DBus與本地應(yīng)用程序進(jìn)程進(jìn)行通信實(shí)現(xiàn)對(duì)本地應(yīng)用程序的調(diào)用并完成對(duì)應(yīng)的操作。這種方式使桌面窗體在調(diào)用本地應(yīng)用程序時(shí)不用打開本地應(yīng)用程序,直接通過調(diào)用就可以實(shí)現(xiàn),縮短了時(shí)間,簡(jiǎn)化了操作,用戶用起來會(huì)感覺方便和快捷。
文檔編號(hào)G06F9/44GK103019748SQ20131001542
公開日2013年4月3日 申請(qǐng)日期2013年1月15日 優(yōu)先權(quán)日2013年1月15日
發(fā)明者詹欣坤, 陳旺, 劉強(qiáng) 申請(qǐng)人:珠海金山辦公軟件有限公司, 北京金山辦公軟件有限公司