專利名稱:一種多應用實例之間共享熱鍵的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明實施方式涉及計算機技術領域,更具體地,涉及一種多應用實例之間共享熱鍵的方法和系統(tǒng)。
背景技術:
用戶使用計算機,經(jīng)常會使用各種應用程序(軟件工具)。應用程序一般會利用系統(tǒng)提供的熱鍵功能,或為自己的應用程序注冊熱鍵以進一步方便用戶的使用。熱鍵即快捷鍵,就是鍵盤上某幾個特殊鍵組合起來完成一項特定任務,使用熱鍵能夠極大地提高工作效率。比如:熱鍵Del+Ctrl+Alt在視窗(Windows)操作系統(tǒng)下可以打開任務管理器。應用程序一般可以運行多份實例。以即時通訊(IM)程序為例,可以同時運行多個IM程序,即多份實例。一個應用程序同時運行的多個實例,稱為該種類型的多個應用程序?qū)嵗?。然而,在現(xiàn)有技術中,無論是同時運行的多種應用程序之間,還是同時運行的同種類多份應用程序?qū)嵗械臒徭I都是獨占性的。如果一種應用程序注冊了熱鍵,另一種應用程序就不能再注冊相同組合鍵的熱鍵。同樣,如果一個同種類應用程序?qū)嵗粤藷徭I,另一個同種類應用程序?qū)嵗膊荒茉僮韵嗤M合鍵的熱鍵。而且,注冊熱鍵失敗的程序?qū)嵗膊荒転橛脩籼峁┍憬莸氖褂梅绞?。比如,在現(xiàn)有技術中,當每個IM工具啟動時,都會注冊相同組合鍵的熱鍵(如提起消息的熱鍵(默認組合鍵是Ctrl+Atl+Z)),但只有第一個發(fā)起注冊的IM(稱為AIM)才能注冊成功。AIM注冊成功之后,第二個發(fā)起注冊的頂(稱為BM)和第三個發(fā)起注冊的頂(稱為CIM)都會注冊失敗。用戶在激活熱鍵時,只有AIM才能收到熱鍵消息。此時,如果AIM、BIM和CM同時都在運行,當BM有了即時通訊消息時,用戶按下熱鍵Ctrl+Atl+Z,期望提起B(yǎng)M的即時通訊消息。然而,由于AM注冊熱鍵成功,只有AM才能收到熱鍵消息。AM收到熱鍵消息后,發(fā)現(xiàn)AIM自身并沒有新的即時通訊消息,因此不處理熱鍵消息,此時用戶無法提取BM的即時通訊消息。可見,現(xiàn)有技術的這種熱鍵處理機制不符合用戶的預期,給用戶造成困擾,也影響了用戶體驗。
發(fā)明內(nèi)容
本發(fā)明實施方式提出一種多應用實例之間共享熱鍵的方法,從而解決應用程序的熱鍵沖突問題,實現(xiàn)共享熱鍵資源。本發(fā)明實施方式還提出了一種多應用實例之間共享熱鍵的系統(tǒng),從而解決應用程序的熱鍵沖突問題,實現(xiàn)共孚熱鍵資源。本發(fā)明實施方式的具體方案如下:一種多應用實例之間共享熱鍵的方法,該方法包括:在應用實例之間確定出與熱鍵注冊的應用實例,當出現(xiàn)熱鍵消息時,該注冊熱鍵的應用實例接收該熱鍵消息;該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,該注冊熱鍵的應用實例處理該熱鍵消息?!N多應用實例之間共享熱鍵的系統(tǒng),該系統(tǒng)包括:熱鍵注冊單元,用于在應用實例之間確定出與熱鍵注冊的應用實例,并當出現(xiàn)熱鍵消息時,使能該注冊熱鍵的應用實例接收該熱鍵消息;熱鍵消息派發(fā)單元,用于使能該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;熱鍵消息處理單元,用于判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,使能所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,使能該注冊熱鍵的應用實例處理該熱鍵消息。從上述技術方案可以看出,在本發(fā)明實施方式中,在應用實例之間確定出與熱鍵注冊的應用實例,當出現(xiàn)熱鍵消息時,該注冊熱鍵的應用實例接收該熱鍵消息;該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,該注冊熱鍵的應用實例處理該熱鍵消息。由此可見,應用本發(fā)明實施方式以后,成功注冊熱鍵的應用實例在收到熱鍵消息后,會先發(fā)給其它應用實例,并當其它應用實例不需要處理時,才最后來處理該熱鍵消息。從而保證了所有的應用程序?qū)嵗?無論是注冊成功的還是未注冊的),都將有機會處理熱鍵消息,從而解決應用程序的熱鍵沖突問題(無論是應用程序之間,還是相同的應用程序之內(nèi)),實現(xiàn)共享熱鍵資源,并且提高了熱鍵的準確響應率。而且,當前擁有熱鍵的應用程序?qū)嵗谕顺鰰r通知下一個應用程序?qū)嵗詿徭I,從而保證了熱鍵的傳遞性,提聞了熱鍵的準確響應率。
圖1為根據(jù)本發(fā)明實施方式的多應用實例之間共享熱鍵的方法流程圖;圖2為根據(jù)本發(fā)明實施方式的同類型多應用實例注冊流程圖;圖3為根據(jù)本發(fā)明實施方式未注冊熱鍵的應用實例處理熱鍵的流程圖;圖4為根據(jù)本發(fā)明實施方式注冊熱鍵的應用實例處理熱鍵的流程圖;圖5為根據(jù)本發(fā)明實施方式多應用實例之間共享熱鍵的系統(tǒng)結構圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖對本發(fā)明作進一步的詳細描述。
圖1為根據(jù)本發(fā)明實施方式的多應用實例之間共享熱鍵的方法流程圖。如圖1所示,該方法包括:步驟101:在應用實例之間確定出與熱鍵注冊的應用實例,當出現(xiàn)熱鍵消息時,該注冊熱鍵的應用實例接收該熱鍵消息。優(yōu)選地,這些應用實例為同種應用類型的多應用實例。此時,更具體地,首先:所有這些同類型應用實例可以分別在自身啟動的時候發(fā)起熱鍵注冊。由于這些應用實例都運行相同程序的應用軟件,因此這些應用實例注冊的熱鍵都應該是相同的。比如,對于某種頂軟件來說,熱鍵Ctrl+Atl+Z應該為提起消息的熱鍵,此時這些IM應用實例在自身啟動的時候分別都嘗試注冊熱鍵Ctrl+Atl+Z為提起消息的熱鍵。 然后,判斷第一個發(fā)起熱鍵注冊的應用實例意圖注冊的熱鍵是否已被其它類型應用所占用,當沒有占用時,將該熱鍵注冊到該第一個發(fā)起熱鍵注冊的應用實例;當已經(jīng)占用時,提示該第一個發(fā)起熱鍵注冊的應用實例注冊失敗。比如,第一個發(fā)起熱鍵注冊的頂應用實例判斷熱鍵Ctrl+Atl+Z是否已被其它種類的應用軟件(即不是頂軟件)所占用,如果已經(jīng)被其它應用軟件注冊并且該應用軟件正在運行,則認為已經(jīng)被占用,此時提示該第一個發(fā)起熱鍵注冊的IM應用實例注冊失敗,并優(yōu)選進一步提示該第一個發(fā)起熱鍵注冊的IM應用實例更改熱鍵后重新注冊。然后,當用戶按下熱鍵時,即當出現(xiàn)熱鍵消息時,該注冊熱鍵的應用實例接收該熱鍵消息。步驟102:該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消
肩、O步驟103:判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,執(zhí)行步驟104并結束本流程;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,執(zhí)行步驟105并結束本流程。步驟104:未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息。步驟105:該注冊熱鍵的應用實例處理該熱鍵消息。優(yōu)選地,在該方法中,進一步包括:預先設定熱鍵再次注冊順序;并當該注冊熱鍵的應用實例退出時,按照所述熱鍵再次注冊順序向下一順序的應用實例發(fā)送熱鍵注冊消
肩、O此時:當再次出現(xiàn)熱鍵消息時,該下一順序應用實例接收該熱鍵消息;該下一順序應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,該下一順序應用實例處理該熱鍵消息。在一個實施方式中,設定所述熱鍵再次注冊順序可以包括:按照應用實例啟動時間的先后順序為熱鍵再次注冊的先后順序;按照應用實例運行時間的長短順序為熱鍵再次注冊的先后順序;或?qū)徭I注冊消息發(fā)送給所有應用實例,并按照接收到該熱鍵注冊消息的先后時間順序為熱鍵再次注冊的先后順序,等等。以上雖然羅列了一些具體的軟件類型來對本發(fā)明實施方式進行詳細說明,本領域技術人員可以意識到,這種羅列僅僅用于闡述目的,而并不用于限定本發(fā)明的保護范圍。
實際上,這些應用實例也可以分別屬于不同的應用類型。此時,本發(fā)明實施方式同樣適用于期望注冊相同熱鍵的不同類型應用程序之間的多種應用實例。為了方便闡述,下面將以同類型應用實例為優(yōu)選實施方式進行示范性詳細說明。本領域技術人員可以意識到,這僅是闡述性的,并不用于限定本發(fā)明實施方式的保護范圍。下面再以同類型應用實例為對本發(fā)明的具體實施方式
進行更加詳細的說明。在一個實施方式中,當運行有多個同類型應用實例時,每個同類型應用實例在啟動時都會向系統(tǒng)注冊熱鍵。對于每一個應用實例,如果發(fā)現(xiàn)該熱鍵既沒有被其它類型的應用程序注冊,也沒有被其它應用實例占據(jù),則返回熱鍵注冊成功,并結束注冊邏輯。對于每一個應用實例,如果發(fā)現(xiàn)熱鍵已經(jīng)被其它類型的應用程序所注冊,則向用戶返回注冊失敗消息,并提示用戶更改熱鍵后重新注冊;如果發(fā)現(xiàn)熱鍵沒有被其它類型的應用程序所注冊但是注冊失敗,則它會通過跨進程,依次詢問每個同類型的應用程序是否已經(jīng)注冊了該熱鍵,只要一個返回成功,就中斷詢問,并注冊邏輯結束;如果都返回失敗(即其它同類型的應用程序都沒有注冊該熱鍵),就彈出提示,向用戶提示該熱鍵注冊失敗,不能使用。圖2為根據(jù)本發(fā)明實施方式的同類型多應用實例注冊流程圖。如圖2所示,該方法包括:步驟201:應用程序?qū)嵗鼳發(fā)起注冊熱鍵S (即某些按鍵的組合)的注冊請求,并注冊成功。步驟202:應用程序?qū)嵗鼴也發(fā)起注冊熱鍵S的注冊請求,并由于應用程序?qū)嵗鼳已經(jīng)注冊了該熱鍵S而注冊失敗。步驟203:應用程序?qū)嵗鼴向應用程序?qū)嵗鼳發(fā)送詢問消息,以詢問應用程序?qū)嵗鼳是否注冊了熱鍵S。步驟204:應用程序?qū)嵗鼳向應用程序?qū)嵗鼴發(fā)送回復消息,告訴應用程序?qū)嵗鼴自身已經(jīng)注冊熱鍵S。應用程序?qū)嵗鼴收到該回復消息后,就可以了解到該熱鍵S已經(jīng)被應用程序?qū)嵗鼳所注冊。步驟205:應用程序?qū)嵗鼵也發(fā)起注冊熱鍵S的注冊請求,并由于應用程序?qū)嵗鼳已經(jīng)注冊了該熱鍵S而注冊失敗。步驟206:應用程序?qū)嵗鼵向應用程序?qū)嵗鼴發(fā)送詢問消息,詢問應用程序?qū)嵗鼴是否注冊了熱鍵S。步驟207:應用程序?qū)嵗鼴向應用程序?qū)嵗鼵發(fā)送回復消息,在回復消息中告訴應用程序?qū)嵗鼵自身并沒有注冊熱鍵S。步驟208:應用程序?qū)嵗鼵向應用程序?qū)嵗鼳發(fā)送詢問消息,以詢問應用程序?qū)嵗鼳是否注冊了熱鍵S。步驟209:應用程序?qū)嵗鼳向應用程序?qū)嵗鼵回復消息,以告訴應用程序?qū)嵗鼴自身已經(jīng)注冊熱鍵S。此時應用程序?qū)嵗鼵就可以了解到該熱鍵S已經(jīng)被應用程序?qū)嵗鼳所注冊。至此,就實現(xiàn)了各個同類型應用程序?qū)嵗淖圆僮?。此時,當用戶按下熱鍵時,系統(tǒng)會拋出熱鍵消息,而成功注冊熱鍵的應用程序?qū)嵗?,會收到該消息。該應用程序?qū)嵗?,會通過跨進程,依次向每個同類型的應用程序?qū)嵗砂l(fā)熱鍵消息。其它應用程序?qū)嵗盏娇邕M程的熱鍵消息后,根據(jù)自身的情況,決定是否處理這個熱鍵消息。如果處理,則處理該熱鍵消息并返回已處理消息;如果不處理,則返回未處理消息。對于成功注冊熱鍵的應用程序?qū)嵗灰盏揭粋€已處理的返回消息,就中斷剩下的派發(fā)。如果所有的返回都是未處理消息,成功注冊熱鍵的應用程序?qū)嵗齽t可以根據(jù)自己的情況,決定如何處理該熱鍵消息。按照這個邏輯,成功注冊熱鍵的應用程序?qū)嵗?,在收到系統(tǒng)的熱鍵消息后,會先發(fā)給其他應用程序?qū)嵗?,而自己是最后處理的,從而保證了所有的應用程序?qū)嵗?無論是注冊成功的還是未注冊的),都將有機會處理熱鍵消息?;谏鲜鲈敿毞治龊蛨D2所示流程,圖3為根據(jù)本發(fā)明實施方式未注冊熱鍵的應用實例處理熱鍵的流程圖。圖3所示實施方式為依據(jù)圖2所示注冊后的一種具體應用情形。由圖2流程可知,在這個實施方式中,應用程序?qū)嵗鼳注冊了熱鍵。如圖3所示,該方法包括:步驟301:當用戶觸發(fā)熱鍵S時應用程序?qū)嵗鼳收到該熱鍵消息,并向應用程序?qū)嵗鼴發(fā)送該熱鍵消息。步驟302:應用程序?qū)嵗鼴收到該熱鍵消息后,判斷是否需要處理。此處判定為不需要處理,則向應用程序?qū)嵗鼳返回不處理的消息。步驟303:應用程序?qū)嵗鼳收到應用程序?qū)嵗鼴發(fā)送來的不處理消息后,接著向應用程序?qū)嵗鼵發(fā)送該熱鍵消息。步驟304:應用程序?qū)嵗鼵收到該熱鍵消息后,判斷是否需要處理。此處判定為需要處理,則應用程序?qū)嵗幚碓摕徭I消息,并向應用程序?qū)嵗鼳返回已經(jīng)處理的消息?;谏鲜鲈敿毞治龊蛨D2所示流程,圖4為根據(jù)本發(fā)明實施方式注冊熱鍵的應用實例處理熱鍵的流程圖。圖4所示實施方式為依據(jù)圖2所示注冊后的一種具體應用情形。由圖2流程可知,在這個實施方式中,應用程序?qū)嵗鼳注冊了熱鍵。如圖4所示,該方法包括:步驟401:當用戶按下熱鍵S時應用程序?qū)嵗鼳收到該熱鍵消息,并向應用程序?qū)嵗鼴發(fā)送該熱鍵消息。步驟402:應用程序?qū)嵗鼴收到該熱鍵消息后,判斷是否需要處理。此處判定為不需要處理,則向應用程序?qū)嵗鼳返回不處理的消息。步驟403:應用程序?qū)嵗鼳收到應用程序?qū)嵗鼴發(fā)送來的不處理消息后,接著向應用程序?qū)嵗鼵發(fā)送該熱鍵消息。步驟404:應用程序?qū)嵗鼵收到該熱鍵消息后,判斷是否需要處理。此處判定為不需要處理,則向應用程序?qū)嵗鼳返回不處理的消息。步驟405:應用程序?qū)嵗鼳收到應用程序?qū)嵗鼵返回的不處理消息后,認定所有的未注冊應用程序?qū)嵗疾恍枰幚頍徭I,則依據(jù)自身的情形來處理熱鍵消息?;谏鲜鲈敿毞治觯景l(fā)明實施方式還提出了一種多應用實例之間共享熱鍵的系統(tǒng)結構圖。如圖5所示,該系統(tǒng)包括熱鍵注冊單元501、熱鍵消息派發(fā)單元502和熱鍵消息處理單元503。其中:熱鍵注冊單元501,用于在應用實例之間確定出與熱鍵注冊的應用實例,并當出現(xiàn)熱鍵消息時,使能該注冊熱鍵的應用實例接收該熱鍵消息;熱鍵消息派發(fā)單元502,用于使能該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;熱鍵消息處理單元503,用于判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,使能所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,使能該注冊熱鍵的應用實例處理該熱鍵消息。優(yōu)選地,這些多應用實例可以為具有相同應用類型的多應用實例。此時,具體地,熱鍵注冊單元501,用于接收同類型應用實例發(fā)起的熱鍵注冊,并判斷第一個發(fā)起熱鍵注冊的應用實例意圖注冊的熱鍵是否已被其它類型應用所占用,當沒有占用時,將該熱鍵注冊到該第一個發(fā)起熱鍵注冊的應用實例;當已經(jīng)占用時,提示該第一個發(fā)起熱鍵注冊的應用實例注冊失敗。而且,在一個優(yōu)選實施方式中,熱鍵注冊單元501,進一步用于在提示該第一個發(fā)起熱鍵注冊的應用實例注冊失敗之后,進一步提示該第一個發(fā)起熱鍵注冊的應用實例更改熱鍵后重新注冊。優(yōu)選地,對于成功注冊熱鍵的應用程序?qū)嵗?,在其自身要退出時,依次向每個同類型的應用程序?qū)嵗砂l(fā)熱鍵注冊消息。比如:第一個收到熱鍵注冊消息的應用程序,可以重新走如圖2所示的注冊邏輯。在另一個優(yōu)選實施方式中,熱鍵注冊單元501,進一步用于預先設定熱鍵再次注冊順序;并當該注冊熱鍵的應用實例退出時,按照所述熱鍵再次注冊順序向下一順序的應用實例發(fā)送熱鍵注冊消息,并使能該下一順序的應用實例注冊該熱鍵。其中,熱鍵注冊單元501設定所述熱鍵再次注冊順序可以包括:按照應用實例啟動時間的先后順序為熱鍵再次注冊的先后順序;按照應用實例運行時間的長短順序為熱鍵再次注冊的先后順序;或?qū)徭I注冊消息發(fā)送給所有運行中應用實例,并按照接收到該熱鍵注冊消息的先后時間順序為熱鍵再次注冊的先后順序。此時,熱鍵注冊單元501,進一步用于當再次出現(xiàn)熱鍵消息時,該下一順序應用實例接收該熱鍵消息;熱鍵消息派發(fā)單元502,進一步用于使能該下一順序應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;熱鍵消息處理單元503,進一步用于判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,使能所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,使能該下一順序應用實例處理該熱鍵消息。由此可見,運用本發(fā)明實施方式提出的多個同類型應用程序?qū)嵗蚨喾N類型的應用程序之間的跨進程共享熱鍵的技術方案,解決了應用程序的熱鍵沖突的問題,共享熱鍵資源,更進一步優(yōu)化了用戶的體驗。更具體地,下面以即時通訊工具頂為例進行更加具體的說明。針對頂?shù)燃磿r通訊工具,可以通過COM遠程調(diào)用的方式來實現(xiàn)本發(fā)明實施方式跨進程共享熱鍵的方案。具體地,首先建立一個組件,并根據(jù)COM規(guī)范實現(xiàn)一組接口(包括IMAPI接口和IMMainCreator接口),然后把該組件和接口都注冊到系統(tǒng)中。其中:接口名為IMAPI,用于提供查詢熱鍵是否注冊的方法以及提供響應熱鍵的方法。接口名為IMMainCreator的,用于提供了遍歷所有頂實例的方法,并把所有的IMAPI接口返回給調(diào)用者。當某個頂實例注冊熱鍵失敗的時候,首先向系統(tǒng)獲取該頂組件,并獲取該組件的IMMainCreator接口,該IMMainCreator接口通過遍厲所有IM實例的方法,獲得所有當前運行的頂實例的IMAPI接口,然后逐個調(diào)用返回的每個IMAPI接口,以查詢熱鍵是否注冊。其中:如果某個IMAPI接口返回已經(jīng)注冊,就中斷剩下的調(diào)用,并流程結束;如果所有IMAPI接口都返回無注冊,就彈出提示告知用戶(這個行為是由具體產(chǎn)品具體指定的),并結束流程。當某個IM實例接收到系統(tǒng)的熱鍵消息時,首先向系統(tǒng)獲取IM的組件并獲取該組件的IMMainCreator接口,該IMMainCreator接口通過遍歷所有IM實例的方法,獲得所有當前運行的頂實例的IMAPI接口。然后逐個調(diào)用返回的每個IMAPI接口,以響應熱鍵。其中:如果有IMAPI接口返回處理熱鍵的消息,就中斷剩下的調(diào)用,并結束流程;如果所有IMAPI接口都返回不處理熱鍵的消息,則該接收到系統(tǒng)熱鍵消息的IM實例自己處理熱鍵消息,并結束流程。以上雖然詳細陳述了如何通過COM遠程調(diào)用的方式來實現(xiàn)跨進程的熱鍵共享,但是本發(fā)明實施方式并不局限于此,還可以用過共享內(nèi)存、匿名管道等多種方式來實現(xiàn)跨進程的熱鍵共享。同樣地,上述雖然以即時通訊工具頂為例對本發(fā)明實施方式進行了詳細描述,但是本發(fā)明實施方式并不局限于此。本發(fā)明實施方式可以適用于其它即時通信工具或任意的恰當應用。假設有三個正在運行的同種類頂實例,分別為AIM,BIM和CM。當頂未使用本發(fā)明實施方式時,每個IM在啟動時,都會嘗試注冊相同組合鍵的熱鍵,但只有第一個注冊的頂(假設為AIM)才注冊成功。用戶在激活熱鍵時,只有AIM才能收到熱鍵消息(如提起消息的熱鍵(默認組合鍵是Ctrl+Atl+Z))。AIM注冊成功,BM和CM則會注冊失敗?,F(xiàn)有技術場景1:AM、BM和CM同時運行,AM成功注冊了提起消息的熱鍵。如果此時BM來了消息,用戶按下Ctr 1+At 1+Z,激發(fā)提起消息的熱鍵,AIM可以收到熱鍵消息。然而,由于AIM沒有新消息,所以AIM不處理熱鍵消息。這種情況,不符合用戶的預期,給用戶造成困擾,影響用戶體驗?,F(xiàn)有技術場景2:AIM, BM和CM同時運行,AM成功注冊了提起消息的熱鍵,但AM卻退出了。此時如果BM來了消息,當用戶按下Ctrl+Atl+Z,卻無法激發(fā)提起消息的熱鍵。這種情況也不符合用戶的預期,給用戶造成困擾,影響用戶體驗。當應用本發(fā)明實施方式以后,同樣以IM為例:本發(fā)明實施方式場景1:AM、BM和CM同時運行,AM成功注冊了提起消息的熱鍵。此時BM來了消息。用戶按下Ctrl+Atl+Z,激發(fā)提起消息的熱鍵,AIM收到熱鍵消息后,先把熱鍵消息轉(zhuǎn)發(fā)給BM(或者先把熱鍵消息轉(zhuǎn)發(fā)給CM,當CIM發(fā)現(xiàn)自身不需要處理熱鍵消息時,向AIM返回不處理消息,AIM收到不處理消息后再把熱鍵消息轉(zhuǎn)發(fā)給BM)。BIM收到后,發(fā)現(xiàn)確實有新消息,則彈出新消息,然后返回已處理消息給AM。該方案符合了用戶的預期,增強了用戶的體驗。本發(fā)明實施方式場景2:AIM, BM和CM同時運行,AM成功注冊了提起消息的熱鍵,但AM卻先退出了。AM在退出時,分別向BM,CM發(fā)起熱鍵注冊消息。BM和CM收到之后,會立即注冊熱鍵,但按照預先設置的順序,只有一個先注冊的IM才注冊成功。假設是BM注冊成功,這樣,BM就取代了 AIM的位置。用戶按下Ctrl+Atl+Z,激發(fā)提起消息的熱鍵,BIM就會收到熱鍵消息,然后由BIM進行派發(fā)。該方案符合了用戶的預期,增強了用戶的體驗。以上雖然以IM為例對本發(fā)明實施方式進行詳細說明,本領域技術人員可以意識至IJ,這種羅列僅僅用于闡述目的,而并不用于限定本發(fā)明的保護范圍。綜上所述,在本發(fā)明實施方式中,在應用實例之間確定出與熱鍵注冊的應用實例,當出現(xiàn)熱鍵消息時,該注冊熱鍵的應用實例接收該熱鍵消息;該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,該注冊熱鍵的應用實例處理該熱鍵消息。由此可見,應用本發(fā)明實施方式以后,成功注冊熱鍵的應用實例,在收到熱鍵消息后,會先發(fā)給其它應用實例,并當其它應用實例不需要處理時,才最后來處理該熱鍵消息。從而保證了所有的應用程序?qū)嵗?無論是注冊成功的還是未注冊的),都將有機會處理熱鍵消息,因此解決應用程序的熱鍵沖突問題(無論是應用程序之間,還是相同的應用程序之內(nèi)),實現(xiàn)共享熱鍵資源,并且提高了熱鍵的準確響應率。而且,當前擁有熱鍵的應用程序?qū)嵗谕顺鰰r通知下一個應用程序?qū)嵗詿徭I,從而保證了熱鍵的傳遞性,提聞了熱鍵的準確響應率。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種多應用實例之間共享熱鍵的方法,其特征在于,該方法包括: 在應用實例之間確定出與熱鍵注冊的應用實例,當出現(xiàn)熱鍵消息時,該注冊熱鍵的應用實例接收該熱鍵消息; 該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息; 判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,該注冊熱鍵的應用實例處理該熱鍵消息。
2.根據(jù)權利要求1所述的多應用實例之間共享熱鍵的方法,其特征在于,所述多應用實例為:具有相同應用類型的多應用實例。
3.根據(jù)權利要求2所述的多應用實例之間共享熱鍵的方法,其特征在于,所述在應用實例之間確定出與熱鍵注冊的應用實例包括: 應用實例發(fā)起熱鍵注冊; 判斷第一個發(fā)起熱鍵注冊的應用實例意圖注冊的熱鍵是否已被其它類型應用所占用,當沒有占用時,將該熱鍵注冊到該第一個發(fā)起熱鍵注冊的應用實例;當已經(jīng)占用時,提示該第一個發(fā)起熱鍵注冊的應用實例注冊失敗。
4.根據(jù)權利要求2所述的多應用實例之間共享熱鍵的方法,其特征在于,該方法進一步包括: 預先設定熱鍵再次注冊順序; 當該注冊熱鍵的應用實例退出時,按照所述熱鍵再次注冊順序向下一順序的應用實例發(fā)送熱鍵注冊消息; 該下一順序的應用實例注冊該熱鍵。
5.根據(jù)權利要求4所述的多應用實例之間共享熱鍵的方法,其特征在于,該方法進一步包括: 當再次出現(xiàn)熱鍵消息時,該下一順序應用實例接收該熱鍵消息; 該下一順序應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息; 判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,該下一順序應用實例處理該熱鍵消息。
6.根據(jù)權利要求4或5所述的多應用實例之間共享熱鍵的方法,其特征在于,其中設定所述熱鍵再次注冊順序包括: 按照應用實例啟動時間的先后順序為熱鍵再次注冊的先后順序; 按照應用實例運行時間的長短順序為熱鍵再次注冊的先后順序;或?qū)徭I注冊消息發(fā)送給所有應用實例,并按照接收到該熱鍵注冊消息的先后時間順序為熱鍵再次注冊的先后順序。
7.根據(jù)權利要求1所述的多應用實例之間共享熱鍵的方法,其特征在于,所述在應用實例之間確定出與熱鍵注冊的應用實例包括: 通過組件對象模型COM遠程調(diào)用模式、共享內(nèi)存模式或匿名管道模式,在應用實例之間確定出與熱鍵注冊的應用實例。
8.一種多應用實例之間共享熱鍵的系統(tǒng),其特征在于,該系統(tǒng)包括: 熱鍵注冊單元,用于在應用實例之間確定出與熱鍵注冊的應用實例,并當出現(xiàn)熱鍵消息時,使能該注冊熱鍵的應用實例接收該熱鍵消息; 熱鍵消息派發(fā)單元,用于使能該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息; 熱鍵消息處理單元,用于判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,使能所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,使能該注冊熱鍵的應用實例處理該熱鍵消息。
9.根據(jù)權利要求8所述的同 類型多應用實例之間共享熱鍵的系統(tǒng),其特征在于, 所述多應用實例為:具有相同應用類型的多應用實例。
10.根據(jù)權利要求9所述的多應用實例之間共享熱鍵的系統(tǒng),其特征在于, 所述熱鍵注冊單元,用于接收應用實例發(fā)起的熱鍵注冊,并判斷第一個發(fā)起熱鍵注冊的應用實例意圖注冊的熱鍵是否已被其它類型應用所占用,當沒有占用時,將該熱鍵注冊到該第一個發(fā)起熱鍵注冊的應用實例;當已經(jīng)占用時,提示該第一個發(fā)起熱鍵注冊的應用實例注冊失敗。
11.根據(jù)權利要求9所述的多應用實例之間共享熱鍵的系統(tǒng),其特征在于, 所述熱鍵注冊單元,進一步用于預先設定熱鍵再次注冊順序;并當該注冊熱鍵的應用實例退出時,按照所述熱鍵再次注冊順序向下一順序的應用實例發(fā)送熱鍵注冊消息,并使能該下一順序的應用實例注冊該熱鍵。
12.根據(jù)權利要求11所述的多應用實例之間共享熱鍵的系統(tǒng),其特征在于, 熱鍵注冊單元,進一步用于當再次出現(xiàn)熱鍵消息時,該下一順序應用實例接收該熱鍵消息; 熱鍵消息派發(fā)單元,進一步用于使能該下一順序應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息; 熱鍵消息處理單元,進一步用于判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,使能所述未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,使能該下一順序應用實例處理該熱鍵消息。
13.根據(jù)權利要求11或12所述的多應用實例之間共享熱鍵的系統(tǒng),其特征在于, 所述熱鍵注冊單元設定所述熱鍵再次注冊順序包括:按照應用實例啟動時間的先后順序為熱鍵再次注冊的先后順序;按照應用實例運行時間的長短順序為熱鍵再次注冊的先后順序;或?qū)徭I注冊消息發(fā)送給所有運行中應用實例,并按照接收到該熱鍵注冊消息的先后時間順序為熱鍵再次注冊的先后順序。
全文摘要
本發(fā)明實施方式提出了一種多應用實例之間共享熱鍵的方法和系統(tǒng)。包括在應用實例之間確定出與熱鍵注冊的應用實例,當出現(xiàn)熱鍵消息時,該注冊熱鍵的應用實例接收該熱鍵消息;該注冊熱鍵的應用實例向未注冊熱鍵的其它應用實例派發(fā)該熱鍵消息;判斷未注冊熱鍵的應用實例之中是否有應用實例處理該熱鍵消息,當判定在未注冊熱鍵的應用實例之中有應用實例處理時,未注冊熱鍵的應用實例之中的該應用實例處理該熱鍵消息;當判定在未注冊熱鍵的應用實例之中沒有應用實例處理時,該注冊熱鍵的應用實例處理該熱鍵消息。保證了所有的應用程序?qū)嵗紝⒂袡C會處理熱鍵消息,增強了用戶體驗。
文檔編號G06F9/44GK103218212SQ201210018110
公開日2013年7月24日 申請日期2012年1月19日 優(yōu)先權日2012年1月19日
發(fā)明者劉煥通, 謝偉文, 謝鑫, 高舜東 申請人:騰訊科技(深圳)有限公司