本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種鍵鼠腳本回放的方法及裝置。
背景技術(shù):
用戶在操作游戲界面時(shí),鍵盤和鼠標(biāo)作為必不可少的輸入設(shè)備,一般情況下需要重復(fù)執(zhí)行某些鍵盤鼠標(biāo)(簡(jiǎn)稱為“鍵鼠”)操作,例如,某游戲在任務(wù)升級(jí)過(guò)程中,需要通過(guò)重復(fù)點(diǎn)擊鼠標(biāo)左鍵控制游戲中的角色的前進(jìn)方向,在控制角色前進(jìn)的同時(shí)還需要通過(guò)重復(fù)點(diǎn)擊鍵盤上的某些按鍵控制游戲中的角色進(jìn)行攻擊,在該過(guò)程中用戶需要不斷重復(fù)進(jìn)行繁瑣的鍵鼠操作。
為了簡(jiǎn)化用戶重復(fù)執(zhí)行鍵鼠操作,可以在用戶首次進(jìn)行鍵鼠操作時(shí)對(duì)用戶執(zhí)行的鍵鼠操作進(jìn)行腳本錄制,獲得鍵鼠腳本后,由計(jì)算機(jī)對(duì)鍵鼠腳本進(jìn)行回放,模擬用戶此前執(zhí)行的鍵鼠操作,實(shí)現(xiàn)鍵鼠操作的自動(dòng)執(zhí)行,由此簡(jiǎn)化用戶的操作步驟。通常,鍵鼠腳本是以事件為單位進(jìn)行錄制的,除了鼠標(biāo)移動(dòng)和鼠標(biāo)滾輪以外,鍵盤或鼠標(biāo)的按下、放開均為一個(gè)獨(dú)立的事件。在實(shí)際進(jìn)行腳本回放時(shí),可以以托管模式進(jìn)行回放來(lái)模擬用戶執(zhí)行的鍵鼠操作,由于托管模式是基于鍵鼠光標(biāo)進(jìn)行的腳本執(zhí)行,而鍵鼠光標(biāo)是全局光標(biāo),整個(gè)桌面中只有一個(gè),該光標(biāo)由事件的執(zhí)行結(jié)果所控制,因此在鍵鼠腳本執(zhí)行過(guò)程中無(wú)需對(duì)目的窗口進(jìn)行識(shí)別,即無(wú)需對(duì)鍵鼠操作所針對(duì)的對(duì)象窗口進(jìn)行識(shí)別。
在上述鍵鼠腳本回放過(guò)程中,發(fā)明人發(fā)現(xiàn):在托管模式下進(jìn)行鍵鼠腳本回放時(shí),在兩個(gè)連續(xù)鍵鼠腳本事件的時(shí)間間隔內(nèi),用戶可以插入手動(dòng)操作,例如,用戶可以將光標(biāo)移出目的窗口,點(diǎn)擊某聊天應(yīng)用程序,并在聊天窗口的編輯區(qū)域內(nèi)輸入文字信息。如前所述,托管模式控制的光標(biāo)是全局光標(biāo),如果在事件之間的時(shí)間間隔內(nèi)用戶執(zhí)行了鍵鼠操作,那么當(dāng)鍵鼠腳本執(zhí)行到下一個(gè)事件時(shí),事件的執(zhí)行會(huì)將用戶操作的光標(biāo)強(qiáng)行移動(dòng)至目的窗口中對(duì)應(yīng)該事件的位置上。此時(shí),用戶正在執(zhí)行輸入文字信息的操作 會(huì)停止執(zhí)行,因此在托管模式下用戶無(wú)法對(duì)鼠標(biāo)或鍵盤進(jìn)行操作。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例提供一種鍵鼠腳本回放的方法及裝置,主要目的在于解決托管模式下用戶無(wú)法對(duì)鼠標(biāo)或鍵盤進(jìn)行操作的問(wèn)題。
依據(jù)本發(fā)明一個(gè)方面,提供了一種鍵鼠腳本回放的方法,包括:
在托管模式下,檢測(cè)用戶觸發(fā)的鍵鼠操作指令;
若檢測(cè)到鍵鼠操作指令,則通過(guò)播放引擎接管鍵鼠操作指令,其中,播放引擎用于執(zhí)行鍵鼠腳本;
通過(guò)播放引擎將鍵鼠操作指令轉(zhuǎn)換為消息指令,并通過(guò)播放引擎將消息指令發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種鍵鼠腳本回放的裝置,包括:
檢測(cè)單元,用于在托管模式下,檢測(cè)用戶觸發(fā)的鍵鼠操作指令;
接管單元,用于當(dāng)檢測(cè)單元檢測(cè)到鍵鼠操作指令時(shí),通過(guò)播放引擎接管鍵鼠操作指令,其中,播放引擎用于執(zhí)行鍵鼠腳本;
轉(zhuǎn)換單元,用于通過(guò)接管單元中的播放引擎將鍵鼠操作指令轉(zhuǎn)換為消息指令;
發(fā)送單元,用于通過(guò)播放引擎將轉(zhuǎn)換單元轉(zhuǎn)換的消息指令發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。
借由上述技術(shù)方案,本發(fā)明提供的鍵鼠腳本回放的方法及裝置,在托管模式下進(jìn)行鍵鼠腳本回放的過(guò)程中,當(dāng)檢測(cè)到用戶觸發(fā)的鍵鼠操作指令時(shí),通過(guò)播放引擎接管該鍵鼠操作指令,將該鍵鼠操作指令轉(zhuǎn)換為消息指令,并發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。與現(xiàn)有技術(shù)相比,本發(fā)明能夠采用后臺(tái)模式傳遞并執(zhí)行用戶觸發(fā)的鍵鼠操作指令,由于后臺(tái)模式是以向窗口發(fā)送消息指令為機(jī)制的,不涉及對(duì)全局光標(biāo)的控制和搶奪,不會(huì)對(duì)托管模式下的回放過(guò)程造成干擾,因此,本發(fā)明能夠在鍵鼠腳本回放過(guò)程中,實(shí)現(xiàn)用戶能夠?qū)κ髽?biāo)或鍵盤進(jìn)行操作。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和 其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了本發(fā)明實(shí)施例提供的一種鍵鼠腳本回放的方法的流程圖;
圖2示出了本發(fā)明實(shí)施例提供的在托管模式下用戶對(duì)鍵盤進(jìn)行操作的示意圖;
圖3示出了本發(fā)明實(shí)施例提供的一種檢測(cè)用戶觸發(fā)的鍵鼠操作指令的方法的流程圖;
圖4示出了本發(fā)明實(shí)施例提供的一種鍵鼠腳本回放的裝置的組成框圖;
圖5示出了本發(fā)明實(shí)施例提供的另一種鍵鼠腳本回放的裝置的組成框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
鍵鼠腳本回放模式包括托管模式和后臺(tái)模式?,F(xiàn)有技術(shù)中,托管模式的鍵鼠光標(biāo)是全局光標(biāo),該全局光標(biāo)由鍵鼠事件的執(zhí)行結(jié)果所控制。在托管模式的回放過(guò)程中,用戶可以在兩個(gè)連續(xù)鍵鼠腳本事件的時(shí)間間隔內(nèi),手動(dòng)插入鍵鼠操作指令,由于鍵鼠光標(biāo)是全局光標(biāo),整個(gè)桌面只有一個(gè),當(dāng)鍵鼠腳本執(zhí)行到下一個(gè)鍵鼠事件時(shí),鍵鼠腳本執(zhí)行所控制的光標(biāo)“搶奪”用戶觸發(fā)的鍵鼠操作指令,鍵鼠事件的執(zhí)行會(huì)將用戶的鍵鼠操作指令強(qiáng)行移至下一個(gè)鍵鼠腳本事件的位置上,此時(shí),用戶正在執(zhí)行的鍵鼠操作指令 會(huì)被強(qiáng)制停止執(zhí)行,導(dǎo)致在鍵鼠腳本回放過(guò)程中無(wú)法對(duì)鍵盤或鼠標(biāo)進(jìn)行操作。
有鑒于此,本發(fā)明實(shí)施例提供一種鍵鼠腳本回放的方法,該方法能夠解決在托管模式下用戶無(wú)法對(duì)鍵盤或鼠標(biāo)進(jìn)行操作的問(wèn)題,如圖1所示,該方法包括:
101、在托管模式下,檢測(cè)用戶觸發(fā)的鍵鼠操作指令。
本發(fā)明實(shí)施例中,在鍵鼠腳本回放過(guò)程中需要判斷是否存在鍵鼠操作指令,如果用戶觸發(fā)了鍵鼠操作指令,則執(zhí)行步驟102,將其進(jìn)行托管,以防對(duì)鍵鼠腳本的回放造成干擾。其中,該鍵鼠操作指令為用戶手動(dòng)觸發(fā)鍵盤、鼠標(biāo)所產(chǎn)生的操作指令。
102、若檢測(cè)到鍵鼠操作指令,則通過(guò)播放引擎接管鍵鼠操作指令。
在檢測(cè)到存在用戶觸發(fā)的鍵鼠操作指令后,不能確定該鍵鼠操作指令具體的位置,因此,在沒(méi)有確定該鍵鼠操作指令的具體位置之前,需通過(guò)播放引擎將該鍵鼠操作指令進(jìn)行接管,其目的在于,當(dāng)用戶觸發(fā)鍵鼠操作指令時(shí),避免對(duì)鍵鼠腳本的回放造成干擾。
其中,播放引擎還用于執(zhí)行鍵鼠腳本。在鍵鼠腳本回放過(guò)程中,首先通過(guò)播放引擎對(duì)鍵鼠腳本進(jìn)行解析,將其解析成一條條能夠被計(jì)算機(jī)識(shí)別的機(jī)器指令,并通過(guò)播放引擎將解析后的鍵鼠腳本進(jìn)行順序執(zhí)行,直到執(zhí)行完整個(gè)鍵鼠腳本。
103、通過(guò)播放引擎將鍵鼠操作指令轉(zhuǎn)換為消息指令,并通過(guò)播放引擎將消息指令發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。
本發(fā)明實(shí)施例中,為避免用戶手動(dòng)觸發(fā)的鍵鼠操作指令干擾正在執(zhí)行的鍵鼠腳本,需要通過(guò)播放引擎將鍵鼠操作指令轉(zhuǎn)換為消息指令,播放引擎將轉(zhuǎn)換后的消息指令發(fā)送給該對(duì)應(yīng)的窗口進(jìn)行執(zhí)行,實(shí)現(xiàn)托管模式下用戶能夠?qū)︽I盤或鼠標(biāo)進(jìn)行操作。在獲得鍵鼠操作指令時(shí),播放引擎獲取該鍵鼠操作指令的描述信息(action信息),將描述信息解析為特定應(yīng)用程序編程接口(Application Programming Interface,API)可以識(shí)別的列表或參數(shù),然后通過(guò)特定API對(duì)該列表或參數(shù)進(jìn)行調(diào)用。實(shí)際應(yīng)用中,上述特定API可以是“::SendMessage”和/或“::PostMessage”,本實(shí)施例 對(duì)此不作限制。
本實(shí)施例中,用戶可以觸發(fā)針對(duì)目的窗口的鍵鼠操作指令,也可以觸發(fā)針對(duì)目的窗口之外的其他窗口的鍵鼠操作指令,本實(shí)施例對(duì)此不作限制。其中,目的窗口為鍵鼠腳本回放的對(duì)象窗口。
圖2示出了本發(fā)明實(shí)施例提供的在托管模式下用戶對(duì)鍵盤進(jìn)行操作的示意圖,如圖2所示,計(jì)算機(jī)桌面中的“音樂(lè)”為通過(guò)鍵鼠操作指令選中狀態(tài)下的應(yīng)用程序。在執(zhí)行鍵鼠操作指令時(shí),在計(jì)算機(jī)可視界面內(nèi)不會(huì)出現(xiàn)鼠標(biāo)指針,但鍵鼠操作指令可通過(guò)鍵盤上的方向鍵、回車鍵、Home鍵等進(jìn)行操作,能夠滿足用戶操作鍵盤的需求。本實(shí)施例是以用戶對(duì)鍵盤進(jìn)行操作為例進(jìn)行的說(shuō)明,而在實(shí)際的應(yīng)用中,還可以實(shí)現(xiàn)在托管模式下用戶對(duì)鼠標(biāo)進(jìn)行的操作,具體的本發(fā)明實(shí)施例對(duì)此不進(jìn)行限制。
需要說(shuō)明的是,圖2是以在個(gè)人電腦(Personal Computer,簡(jiǎn)稱PC)上呈現(xiàn)的操作界面為例進(jìn)行的說(shuō)明,實(shí)際應(yīng)用中,本發(fā)明實(shí)施例還可以但不限于應(yīng)用在智能電視、手機(jī)、平板電腦或可穿戴電子設(shè)備上。
本發(fā)明提供的鍵鼠腳本回放的方法,在托管模式下進(jìn)行鍵鼠腳本回放的過(guò)程中,當(dāng)檢測(cè)到用戶觸發(fā)的鍵鼠操作指令時(shí),通過(guò)播放引擎接管該鍵鼠操作指令,將該鍵鼠操作指令轉(zhuǎn)換為消息指令,并發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例能夠采用后臺(tái)模式傳遞并執(zhí)行用戶觸發(fā)的鍵鼠操作指令,由于后臺(tái)模式是以向窗口發(fā)送消息指令為機(jī)制的,不涉及對(duì)全局光標(biāo)的控制和搶奪,不會(huì)對(duì)托管模式下的回放過(guò)程造成干擾,因此,本發(fā)明實(shí)施例能夠在鍵鼠腳本回放過(guò)程中,實(shí)現(xiàn)用戶能夠?qū)κ髽?biāo)或鍵盤進(jìn)行操作。
進(jìn)一步,在執(zhí)行步驟101檢測(cè)用戶觸發(fā)的鍵鼠操作指令時(shí),本發(fā)明實(shí)施例可以采用但不局限于以下的方式實(shí)現(xiàn),該方法如圖3所示,包括:
301、接收底層發(fā)送的執(zhí)行指令。
計(jì)算機(jī)接收底層發(fā)送的執(zhí)行指令,該執(zhí)行指令包括鍵鼠操作指令和鍵鼠腳本。
302、判斷執(zhí)行指令是否攜帶有事件標(biāo)識(shí)。
本發(fā)明實(shí)施例中,在判斷執(zhí)行指令是否攜帶有事件標(biāo)識(shí)之前,往往會(huì) 對(duì)鍵鼠腳本進(jìn)行唯一的事件標(biāo)識(shí)。事件標(biāo)識(shí)用于對(duì)鍵鼠腳本中的鍵鼠事件進(jìn)行標(biāo)記,本發(fā)明實(shí)施例可以采用但不局限于以下的方式實(shí)現(xiàn)對(duì)鍵鼠事件進(jìn)行標(biāo)識(shí),例如,根據(jù)用戶操作的不同游戲類型對(duì)應(yīng)有不同的事件標(biāo)識(shí),每個(gè)不同的游戲類型與事件標(biāo)識(shí)一一對(duì)應(yīng),例如,事件標(biāo)識(shí)可以通過(guò)字符、字符串、阿拉伯?dāng)?shù)字等表示;或者,也可以在用戶首次進(jìn)行腳本錄制時(shí),根據(jù)鍵鼠事件執(zhí)行的先后順序?qū)︽I鼠事件進(jìn)行標(biāo)識(shí),如使用游戲1-1、游戲1-2、游戲1-3…對(duì)鍵鼠事件進(jìn)行標(biāo)識(shí)。具體的,本發(fā)明實(shí)施例對(duì)標(biāo)識(shí)鍵鼠事件的方法不進(jìn)行限制。
303、若執(zhí)行指令沒(méi)有攜帶事件標(biāo)識(shí),則確定執(zhí)行指令為鍵鼠操作指令。
通常,鍵鼠腳本中的鍵鼠事件都會(huì)攜帶有事件標(biāo)識(shí),而用戶觸發(fā)的鍵鼠操作指令則不攜帶事件標(biāo)識(shí),可以通過(guò)這一特點(diǎn)對(duì)鍵鼠操作指令進(jìn)行識(shí)別。具體的,當(dāng)判斷執(zhí)行指令中攜帶有事件標(biāo)識(shí)時(shí),確定執(zhí)行指令為鍵鼠腳本模擬的鍵鼠操作;當(dāng)判斷執(zhí)行指令中未攜帶事件標(biāo)識(shí)時(shí),則確定執(zhí)行指令為鍵鼠操作指令。
在確定執(zhí)行指令為鍵鼠操作指令時(shí),本發(fā)明實(shí)施例還提供另一種實(shí)現(xiàn)方式,在執(zhí)行步驟301接收底層發(fā)送的執(zhí)行指令時(shí),記錄下執(zhí)行指令的鍵盤鼠標(biāo)的硬件標(biāo)識(shí),計(jì)算機(jī)可通過(guò)鍵盤鼠標(biāo)的硬件標(biāo)識(shí)確定接收到的執(zhí)行指令為鍵鼠操作指令,其中,鍵盤的硬件鼠標(biāo)的標(biāo)識(shí)為鍵盤鼠標(biāo)的生產(chǎn)廠家設(shè)置的唯一標(biāo)識(shí)信息;而鍵鼠腳本為模擬鍵盤鼠標(biāo)的操作,不存在鍵盤鼠標(biāo)的硬件標(biāo)識(shí)。
進(jìn)一步的,在執(zhí)行步驟103通過(guò)播放引擎將鍵鼠操作指令轉(zhuǎn)換為消息指令之前,還可以判斷鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中。一般情況下,每個(gè)窗口都有窗口屬性信息,包括唯一標(biāo)識(shí)信息、大小尺寸信息,坐標(biāo)信息等等,根據(jù)不同窗口中所對(duì)應(yīng)的唯一標(biāo)識(shí)信息即可判斷鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中。當(dāng)操作焦點(diǎn)位于目的窗口中時(shí),通過(guò)播放引擎屏蔽鍵鼠操作指令,避免鍵鼠操作指令干擾目的窗口的回放結(jié)果;當(dāng)操作焦點(diǎn)不位于目的窗口中時(shí),通過(guò)播放引擎將消息指令發(fā)送給目的窗口之外的其他窗口進(jìn)行執(zhí)行,由此可以在不影響目的窗口回放的基礎(chǔ)上,保證用戶能夠?qū)ζ渌翱谶M(jìn)行操作控制。
進(jìn)一步的,在判斷鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中時(shí),可以采用但不局限于以下的方式實(shí)現(xiàn)。
方式一:
首先,獲取操作焦點(diǎn)的坐標(biāo)。其中,操作焦點(diǎn)包括鼠標(biāo)指針和鍵盤光標(biāo)。
當(dāng)操作焦點(diǎn)為鼠標(biāo)指針時(shí),獲取操作焦點(diǎn)的坐標(biāo),包括:獲取windows消息中的結(jié)構(gòu)體信息,從該結(jié)構(gòu)體信息中直接獲取鼠標(biāo)指針的坐標(biāo)。windows消息指windows發(fā)出的一個(gè)通知,告知應(yīng)用程序某一事件發(fā)生了,windows消息本身是作為一個(gè)記錄傳遞給應(yīng)用程序的,這個(gè)記錄中包含了消息的類型、鼠標(biāo)指針的坐標(biāo)、鼠標(biāo)指針對(duì)應(yīng)窗口的位置、大小、窗口句柄及背景顏色等等,其中,windows消息中的記錄也稱為結(jié)構(gòu)體。因此,本實(shí)施例中可以通過(guò)windows消息直接獲取到鼠標(biāo)指針的坐標(biāo)。
當(dāng)操作焦點(diǎn)為鍵盤光標(biāo)時(shí),調(diào)用GetGUIThreadInfo接口獲取活動(dòng)窗口的窗口信息,并從該窗口信息中獲得鍵盤光標(biāo)的坐標(biāo),活動(dòng)窗口為操作焦點(diǎn)當(dāng)前所在的對(duì)象窗口。其中,獲取的活動(dòng)窗口的窗口信息,包括:鍵盤光標(biāo)的坐標(biāo)、鍵盤光標(biāo)所在窗口的位置信息以及大小信息等。在調(diào)用GetGUIThreadInfo接口時(shí),可以獲取活動(dòng)窗口的所有窗口信息,也可以根據(jù)用戶自身的需求獲取用戶所需的窗口信息,具體的本發(fā)明實(shí)施例對(duì)此不進(jìn)行限制。
在獲得操作焦點(diǎn)的坐標(biāo)后,根據(jù)坐標(biāo)獲取操作焦點(diǎn)所在窗口的窗口句柄。窗口是通過(guò)窗口句柄來(lái)標(biāo)識(shí)的,窗口句柄是指使用的一個(gè)唯一的整數(shù)值,用來(lái)標(biāo)識(shí)不同的窗口。其中,在獲取操作焦點(diǎn)所在窗口的窗口句柄時(shí),可以采用但不局限于以下的方式實(shí)現(xiàn),例如,可以通過(guò)獲取窗口句柄的API,如調(diào)用FindWindow、WindowFromPoint等接口獲取操作焦點(diǎn)的坐標(biāo)所在窗口的窗口句柄;或者,也可以通過(guò)獲取窗口句柄的應(yīng)用程序獲取操作焦點(diǎn)的坐標(biāo)所在窗口的窗口句柄,具體的實(shí)現(xiàn)方式本發(fā)明實(shí)施例對(duì)此不進(jìn)行限制。
在獲得窗口句柄后,將窗口句柄與目的窗口的窗口句柄進(jìn)行比對(duì)。若比對(duì)結(jié)果一致,則確定操作焦點(diǎn)位于目的窗口中;若比對(duì)結(jié)果不一致,則 確定操作焦點(diǎn)不位于目的窗口中。
方式二:
首先,根據(jù)目的窗口的窗口位置信息和窗口大小信息確定目的窗口的區(qū)域范圍。在確定目的窗口的區(qū)域范圍之前,需要獲取窗口位置信息和窗口大小信息,計(jì)算機(jī)可以通過(guò)下述幾種方式獲取窗口位置信息和窗口大小信息:
1、調(diào)用GetGUIThreadInfo接口獲取目的窗口的窗口信息,其中,窗口信息包括窗口位置信息和窗口大小信息。本發(fā)明實(shí)施例中,通過(guò)調(diào)用GetGUIThreadInfo接口獲取目的窗口的窗口信息與上述方式一中調(diào)用GetGUIThreadInfo接口獲取活動(dòng)窗口的窗口信息的實(shí)現(xiàn)方式相同,此處不再贅述。
2、讀取緩存的窗口位置信息和窗口大小信息。
在本實(shí)現(xiàn)方式中,計(jì)算機(jī)先將窗口的位置信息和窗口大小信息進(jìn)行緩存,在緩存窗口信息時(shí),可以采用但不局限于下述方式實(shí)現(xiàn),例如,可以將目的窗口的窗口位置信息和窗口大小信息默認(rèn)設(shè)置為屏幕最大化,若用戶不隨意改變目的窗口的大小以及位置,便無(wú)需緩存目的窗口的窗口信息,從而能夠降低計(jì)算機(jī)緩存的窗口位置信息和窗口大小信息的處理資源;或者,在預(yù)設(shè)緩存時(shí)間內(nèi)對(duì)目的窗口的窗口位置信息和窗口大小信息進(jìn)行緩存,可以設(shè)置預(yù)設(shè)緩存時(shí)間為50s、20s等。具體的本發(fā)明實(shí)施例對(duì)此不進(jìn)行限制。
進(jìn)一步的,為了減少對(duì)緩存區(qū)域的擦寫次數(shù),還可以在預(yù)設(shè)緩存時(shí)間內(nèi)對(duì)目的窗口的窗口位置信息和窗口大小信息進(jìn)行緩存時(shí),將新獲得的窗口信息與已緩存的窗口信息進(jìn)行比對(duì),當(dāng)比對(duì)的結(jié)果不一致時(shí),將新獲取的窗口信息進(jìn)行緩存,并將已緩存的窗口信息更新為新緩存的窗口信息;而當(dāng)比對(duì)的結(jié)果一致時(shí),則將新獲得的窗口信息丟棄,此時(shí)緩存區(qū)域內(nèi)仍是已緩存的窗口信息。示例性的,假設(shè),在08:32:10的時(shí)刻上,計(jì)算機(jī)第一次緩存窗口位置信息和窗口大小信息為窗口位置信息1和窗口大小信息1,預(yù)設(shè)緩存時(shí)間為20s;在08:32:30的時(shí)刻上,計(jì)算機(jī)新獲取窗口位置信息和窗口大小信息為窗口位置信息2和窗口大小信息2,將第一次緩存的窗 口信息與新獲取的窗口信息進(jìn)行比對(duì),若比對(duì)結(jié)果不一致,則將在08:32:30的時(shí)刻上新獲取的窗口信息進(jìn)行第二次緩存,并將第一次緩存的窗口信息更新為第二次緩存的窗口信息,此時(shí),緩存區(qū)域內(nèi)的窗口信息為第二次緩存的窗口信息;若比對(duì)結(jié)果一致,則將在08:32:30的時(shí)刻上新獲取的窗口信息丟棄,此時(shí),緩存區(qū)域內(nèi)的窗口信息為第一次緩存的窗口信息。假設(shè)此時(shí)緩存區(qū)域的窗口信息為第二次緩存的窗口信息,當(dāng)計(jì)算機(jī)在08:32:50的時(shí)刻上,新獲取窗口位置信息和窗口大小信息為窗口位置信息3和窗口大小信息3,將新獲取的窗口信息與第二次緩存的窗口信息進(jìn)行比對(duì)。如此重復(fù),直至執(zhí)行完整個(gè)鍵鼠腳本。
在確定目的窗口的區(qū)域范圍之后,獲取操作焦點(diǎn)的坐標(biāo)。關(guān)于獲取操作焦點(diǎn)的坐標(biāo)的詳細(xì)描述可參閱上述方式一中獲取操作焦點(diǎn)的坐標(biāo)的有關(guān)描述,此處不再贅述。
在獲得操作焦點(diǎn)的坐標(biāo)后,根據(jù)坐標(biāo)及區(qū)域范圍確定操作焦點(diǎn)是否位于目標(biāo)窗口中。具體的,將操作焦點(diǎn)的坐標(biāo)與區(qū)域范圍進(jìn)行比對(duì),若操作焦點(diǎn)的坐標(biāo)不在區(qū)域范圍內(nèi),則確定操作焦點(diǎn)不位于目的窗口中;若操作焦點(diǎn)的坐標(biāo)在區(qū)域范圍內(nèi),則確定操作焦點(diǎn)位于目的窗口中。
進(jìn)一步的,作為對(duì)上述方法的實(shí)現(xiàn),本發(fā)明實(shí)施例還提供一種鍵鼠腳本回放的裝置,如圖4所示,該裝置包括:
檢測(cè)單元41,用于在托管模式下,檢測(cè)用戶觸發(fā)的鍵鼠操作指令;
接管單元42,用于當(dāng)檢測(cè)單元41檢測(cè)到鍵鼠操作指令時(shí),通過(guò)播放引擎接管鍵鼠操作指令,其中,播放引擎用于執(zhí)行鍵鼠腳本;
轉(zhuǎn)換單元43,用于通過(guò)接管單元42中的播放引擎將鍵鼠操作指令轉(zhuǎn)換為消息指令;
發(fā)送單元44,用于通過(guò)播放引擎將轉(zhuǎn)換單元43轉(zhuǎn)換的消息指令發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。
進(jìn)一步的,如圖5所示,檢測(cè)單元41,包括:
接收模塊411,用于接收底層發(fā)送的執(zhí)行指令;
判斷模塊412,用于判斷接收模塊411接收的執(zhí)行指令是否攜帶有事件標(biāo)識(shí),事件標(biāo)識(shí)用于對(duì)鍵鼠腳本中的鍵鼠事件進(jìn)行標(biāo)記;
確定模塊413,用于當(dāng)判斷模塊412判斷的執(zhí)行指令沒(méi)有攜帶事件標(biāo)識(shí)時(shí),確定執(zhí)行指令為鍵鼠操作指令。
進(jìn)一步的,如圖5所示,裝置進(jìn)一步包括:
判斷單元45,用于在轉(zhuǎn)換單元43將鍵鼠操作指令轉(zhuǎn)換為消息指令之前,判斷鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中,目的窗口為鍵鼠腳本回放的對(duì)象窗口;
屏蔽單元46,用于當(dāng)判斷單元45判斷的操作焦點(diǎn)位于目的窗口中時(shí),通過(guò)播放引擎屏蔽鍵鼠操作指令;
發(fā)送單元44還用于,當(dāng)判斷單元45判斷的操作焦點(diǎn)不位于目的窗口中時(shí),通過(guò)播放引擎將消息指令發(fā)送給目的窗口之外的其他窗口進(jìn)行執(zhí)行。
進(jìn)一步的,如圖5所示,判斷單元45,包括:
第一獲取模塊451,用于獲取操作焦點(diǎn)的坐標(biāo);
第一獲取模塊451還用于,根據(jù)坐標(biāo)獲取操作焦點(diǎn)所在窗口的窗口句柄;
比對(duì)模塊452,用于將第一獲取模塊451獲取的窗口句柄與目的窗口的窗口句柄進(jìn)行比對(duì);
第一確定模塊453,用于當(dāng)比對(duì)模塊452比對(duì)結(jié)果一致時(shí),確定操作焦點(diǎn)位于目的窗口中;
第一確定模塊453還用于,當(dāng)比對(duì)模塊452比對(duì)結(jié)果不一致時(shí),確定操作焦點(diǎn)不位于目的窗口中。
進(jìn)一步的,操作焦點(diǎn)為鼠標(biāo)指針,第一獲取模塊451用于:獲取windows消息中的結(jié)構(gòu)體信息;從結(jié)構(gòu)體信息中獲取鼠標(biāo)指針的坐標(biāo)。
進(jìn)一步的,操作焦點(diǎn)為鍵盤光標(biāo),第一獲取模塊451用于:調(diào)用GetGUIThreadInfo接口獲取活動(dòng)窗口的窗口信息,并從窗口信息中獲得鍵盤光標(biāo)的坐標(biāo),其中,活動(dòng)窗口為操作焦點(diǎn)當(dāng)前所在的對(duì)象窗口。
進(jìn)一步的,第一獲取模塊451還用于:調(diào)用WindowFromPoint接口獲取坐標(biāo)所在窗口的窗口句柄。
進(jìn)一步的,如圖5所示,判斷單元45還包括:
第二確定模塊454,用于根據(jù)目的窗口的窗口位置信息和窗口大小信息 確定目的窗口的區(qū)域范圍;
第二獲取模塊455,用于獲取操作焦點(diǎn)的坐標(biāo);
第二確定模塊454還用于,根據(jù)第二獲取模塊455獲取的坐標(biāo)及區(qū)域范圍確定操作焦點(diǎn)是否位于目標(biāo)窗口中。
第二獲取模塊455還用于,在第二確定模塊454確定目的窗口的區(qū)域范圍之前,調(diào)用GetGUIThreadInfo接口獲取目的窗口的窗口信息,窗口信息包括窗口位置信息和窗口大小信息;
進(jìn)一步的,如圖5所示,判斷單元45還包括:
讀取模塊456,用于讀取緩存的第二獲取模塊455獲取的窗口位置信息和窗口大小信息。
本發(fā)明提供的鍵鼠腳本回放的裝置,在托管模式下進(jìn)行鍵鼠腳本回放的過(guò)程中,當(dāng)檢測(cè)到用戶觸發(fā)的鍵鼠操作指令時(shí),通過(guò)播放引擎接管該鍵鼠操作指令,將該鍵鼠操作指令轉(zhuǎn)換為消息指令,并發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例能夠采用后臺(tái)模式傳遞并執(zhí)行用戶觸發(fā)的鍵鼠操作指令,由于后臺(tái)模式是以向窗口發(fā)送消息指令為機(jī)制的,不涉及對(duì)全局光標(biāo)的控制和搶奪,不會(huì)對(duì)托管模式下的回放過(guò)程造成干擾,因此,本發(fā)明實(shí)施例能夠在鍵鼠腳本回放過(guò)程中,實(shí)現(xiàn)用戶能夠?qū)κ髽?biāo)或鍵盤進(jìn)行操作。
本發(fā)明實(shí)施例公開了:
A1、一種鍵鼠腳本回放的方法,所述方法包括:
在托管模式下,檢測(cè)用戶觸發(fā)的鍵鼠操作指令;
若檢測(cè)到所述鍵鼠操作指令,則通過(guò)播放引擎接管所述鍵鼠操作指令,其中,所述播放引擎用于執(zhí)行所述鍵鼠腳本;
通過(guò)所述播放引擎將所述鍵鼠操作指令轉(zhuǎn)換為消息指令,并通過(guò)所述播放引擎將所述消息指令發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。
A2、根據(jù)A1所述的方法,所述檢測(cè)用戶觸發(fā)的鍵鼠操作指令,包括:
接收底層發(fā)送的執(zhí)行指令;
判斷所述執(zhí)行指令是否攜帶有事件標(biāo)識(shí),所述事件標(biāo)識(shí)用于對(duì)所述鍵鼠腳本中的鍵鼠事件進(jìn)行標(biāo)記;
若所述執(zhí)行指令沒(méi)有攜帶事件標(biāo)識(shí),則確定所述執(zhí)行指令為所述鍵鼠操作指令。
A3、根據(jù)A1所述的方法,在所述通過(guò)所述播放引擎將所述鍵鼠操作指令轉(zhuǎn)換為消息指令之前,所述方法進(jìn)一步包括:
判斷所述鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中,所述目的窗口為鍵鼠腳本回放的對(duì)象窗口;
若所述操作焦點(diǎn)位于所述目的窗口中,則通過(guò)所述播放引擎屏蔽所述鍵鼠操作指令;
所述通過(guò)所述播放引擎將所述消息指令發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行,包括:
若所述操作焦點(diǎn)不位于所述目的窗口中,則通過(guò)所述播放引擎將所述消息指令發(fā)送給所述目的窗口之外的其他窗口進(jìn)行執(zhí)行。
A4、根據(jù)A3所述的方法,所述判斷所述鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中,包括:
獲取所述操作焦點(diǎn)的坐標(biāo);
根據(jù)所述坐標(biāo)獲取所述操作焦點(diǎn)所在窗口的窗口句柄;
將所述窗口句柄與目的窗口的窗口句柄進(jìn)行比對(duì);
若比對(duì)結(jié)果一致,則確定所述操作焦點(diǎn)位于所述目的窗口中;
若比對(duì)結(jié)果不一致,則確定所述操作焦點(diǎn)不位于所述目的窗口中。
A5、根據(jù)A4所述的方法,所述操作焦點(diǎn)為鼠標(biāo)指針,所述獲取所述操作焦點(diǎn)的坐標(biāo)包括:
獲取windows消息中的結(jié)構(gòu)體信息;
從所述結(jié)構(gòu)體信息中獲取所述鼠標(biāo)指針的坐標(biāo)。
A6、根據(jù)A4所述的方法,所述操作焦點(diǎn)為鍵盤光標(biāo),所述獲取所述操作焦點(diǎn)的坐標(biāo)包括:
調(diào)用GetGUIThreadInfo接口獲取活動(dòng)窗口的窗口信息,并從所述窗口信息中獲得所述鍵盤光標(biāo)的坐標(biāo),其中,所述活動(dòng)窗口為操作焦點(diǎn)當(dāng)前所在的對(duì)象窗口。
A7、根據(jù)A4所述的方法,所述根據(jù)所述坐標(biāo)獲取所述操作焦點(diǎn)所在窗 口的窗口句柄,包括:
調(diào)用WindowFromPoint接口獲取所述坐標(biāo)所在窗口的窗口句柄。
A8、根據(jù)A3所述的方法,所述判斷所述鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中,包括:
根據(jù)所述目的窗口的窗口位置信息和窗口大小信息確定所述目的窗口的區(qū)域范圍;
獲取所述操作焦點(diǎn)的坐標(biāo);
根據(jù)所述坐標(biāo)及所述區(qū)域范圍確定所述操作焦點(diǎn)是否位于所述目標(biāo)窗口中。
A9、根據(jù)A8所述的方法,在根據(jù)所述目的窗口的窗口位置信息和窗口大小信息確定所述目的窗口的區(qū)域范圍之前,所述方法進(jìn)一步包括:
調(diào)用GetGUIThreadInfo接口獲取所述目的窗口的窗口信息,所述窗口信息包括所述窗口位置信息和所述窗口大小信息;
或者,讀取緩存的所述窗口位置信息和所述窗口大小信息。
B10、一種鍵鼠腳本回放的裝置,所述裝置包括:
檢測(cè)單元,用于在托管模式下,檢測(cè)用戶觸發(fā)的鍵鼠操作指令;
接管單元,用于當(dāng)所述檢測(cè)單元檢測(cè)到所述鍵鼠操作指令時(shí),通過(guò)播放引擎接管所述鍵鼠操作指令,其中,所述播放引擎用于執(zhí)行所述鍵鼠腳本;
轉(zhuǎn)換單元,用于通過(guò)所述接管單元中的所述播放引擎將所述鍵鼠操作指令轉(zhuǎn)換為消息指令;
發(fā)送單元,用于通過(guò)所述播放引擎將所述轉(zhuǎn)換單元轉(zhuǎn)換的所述消息指令發(fā)送給對(duì)應(yīng)的窗口進(jìn)行執(zhí)行。
B11、根據(jù)B10所述的裝置,所述檢測(cè)單元,包括:
接收模塊,用于接收底層發(fā)送的執(zhí)行指令;
判斷模塊,用于判斷所述接收模塊接收的所述執(zhí)行指令是否攜帶有事件標(biāo)識(shí),所述事件標(biāo)識(shí)用于對(duì)所述鍵鼠腳本中的鍵鼠事件進(jìn)行標(biāo)記;
確定模塊,用于當(dāng)所述判斷模塊判斷的所述執(zhí)行指令沒(méi)有攜帶事件標(biāo)識(shí)時(shí),確定所述執(zhí)行指令為所述鍵鼠操作指令。
B12、根據(jù)B10所述的裝置,所述裝置進(jìn)一步包括:
判斷單元,用于在所述轉(zhuǎn)換單元將所述鍵鼠操作指令轉(zhuǎn)換為消息指令之前,判斷所述鍵鼠操作指令對(duì)應(yīng)的操作焦點(diǎn)是否位于目的窗口中,所述目的窗口為鍵鼠腳本回放的對(duì)象窗口;
屏蔽單元,用于當(dāng)所述判斷單元判斷的所述操作焦點(diǎn)位于所述目的窗口中時(shí),通過(guò)所述播放引擎屏蔽所述鍵鼠操作指令;
所述發(fā)送單元還用于,當(dāng)所述判斷單元判斷的操作焦點(diǎn)不位于所述目的窗口中時(shí),通過(guò)所述播放引擎將所述消息指令發(fā)送給所述目的窗口之外的其他窗口進(jìn)行執(zhí)行。
B13、根據(jù)B12所述的裝置,所述判斷單元,包括:
第一獲取模塊,用于獲取所述操作焦點(diǎn)的坐標(biāo);
所述第一獲取模塊還用于,根據(jù)所述坐標(biāo)獲取所述操作焦點(diǎn)所在窗口的窗口句柄;
比對(duì)模塊,用于將所述第一獲取模塊獲取的所述窗口句柄與目的窗口的窗口句柄進(jìn)行比對(duì);
第一確定模塊,用于當(dāng)所述比對(duì)模塊比對(duì)結(jié)果一致時(shí),確定所述操作焦點(diǎn)位于所述目的窗口中;
所述第一確定模塊還用于,當(dāng)所述比對(duì)模塊比對(duì)結(jié)果不一致時(shí),確定所述操作焦點(diǎn)不位于所述目的窗口中。
B14、根據(jù)B13所述的裝置,所述操作焦點(diǎn)為鼠標(biāo)指針,所述第一獲取模塊用于:獲取windows消息中的結(jié)構(gòu)體信息;從所述結(jié)構(gòu)體信息中獲取所述鼠標(biāo)指針的坐標(biāo)。
B15、根據(jù)B13所述的裝置,所述操作焦點(diǎn)為鍵盤光標(biāo),所述第一獲取模塊用于:調(diào)用GetGUIThreadInfo接口獲取活動(dòng)窗口的窗口信息,并從所述窗口信息中獲得所述鍵盤光標(biāo)的坐標(biāo),其中,所述活動(dòng)窗口為操作焦點(diǎn)當(dāng)前所在的對(duì)象窗口。
B16、根據(jù)B13所述的裝置,所述第一獲取模塊還用于:調(diào)用WindowFromPoint接口獲取所述坐標(biāo)所在窗口的窗口句柄。
B17、根據(jù)B12所述的裝置,所述判斷單元還包括:
第二確定模塊,用于根據(jù)所述目的窗口的窗口位置信息和窗口大小信息確定所述目的窗口的區(qū)域范圍;
第二獲取模塊,用于獲取所述操作焦點(diǎn)的坐標(biāo);
所述第二確定模塊還用于,根據(jù)所述第二獲取模塊獲取的所述坐標(biāo)及所述區(qū)域范圍確定所述操作焦點(diǎn)是否位于所述目標(biāo)窗口中。
B18、根據(jù)B17所述的裝置,所述第二獲取模塊還用于,在所述第二確定模塊確定所述目的窗口的區(qū)域范圍之前,調(diào)用GetGUIThreadInfo接口獲取所述目的窗口的窗口信息,所述窗口信息包括所述窗口位置信息和所述窗口大小信息;
所述判斷單元還包括:
讀取模塊,用于讀取緩存的所述第二獲取模塊獲取的所述窗口位置信息和所述窗口大小信息。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實(shí)施例中的“第一”、“第二”等是用于區(qū)分各實(shí)施例,而并不代表各實(shí)施例的優(yōu)劣。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的發(fā)明名稱中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上 提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。