本發(fā)明涉及互聯(lián)網(wǎng)技術領域,尤其涉及一種鍵鼠腳本處理的方法和裝置。
背景技術:
鍵盤和鼠標均為用戶設備的輸入設備,當用戶玩游戲或者進行編輯文檔等窗口操作時,往往需要對某個操作過程進行重復執(zhí)行,例如,重復點擊鼠標左鍵,或者以一定的順序重復點擊鍵盤中的不同方向鍵。為了簡化用戶的重復操作,現(xiàn)有技術提出了一種模擬用戶操作鍵盤和鼠標的方式。在該方式中,用戶設備可以在用戶第一次執(zhí)行鍵鼠操作時,對用戶的鍵鼠操作進行錄制,獲得鍵鼠腳本,并在后續(xù)對鍵鼠腳本進行回放,實現(xiàn)同一操作的自動執(zhí)行。
現(xiàn)有技術中,腳本是以事件為單位進行錄制的,除了鼠標移動和鼠標滾輪的滾動以外,鍵盤或鼠標上任何一個按鍵的操作,均包含按下與放開兩個動作。在進行腳本錄制時,用戶設備將一個動作作為一個事件進行記錄,與此對應的,針對某個按鍵的一次操作就包含了按下和放開兩個事件。因此,鍵盤所涉及的事件包括每一個按鍵的按下事件和放開事件;鼠標所涉及的事件包括鼠標左右鍵、鼠標滾輪的按下事件和放開事件、鼠標滾輪滾動事件以及鼠標移動事件。在進行鍵鼠腳本錄制的過程中,用戶常常會觸發(fā)一些對游戲狀態(tài)不產(chǎn)生影響的操作,例如,用戶隨意移動鼠標,卻沒有點擊鍵盤或者鼠標上的任何按鍵。這種單純的鼠標移動不會導致游戲狀態(tài)的改變,因此通常沒有意義。雖然上述操作對游戲狀態(tài)沒有影響,但是電腦也會將該操作以事件的形式記錄到鍵鼠腳本中,從而使鍵鼠腳本的數(shù)據(jù)量增大,同時使鍵鼠腳本回放復雜。實際應用中,通常將此類事件稱之為冗余事件。此外,由于Windows系統(tǒng)機制本身的缺陷,在鍵鼠腳本錄制過程中,往往會出現(xiàn)事件丟失現(xiàn)象,例如,用戶點擊了一下鼠標左鍵,但是鍵鼠腳本中,只錄制了鼠標左鍵按下事件,卻丟失了鼠標左鍵放開事件。 因此,像這種丟失放開事件的情況,會使得鍵鼠腳本回放結束后,因缺少放開事件而使模擬操作持續(xù)處于按下的狀態(tài),由此導致目的窗口或者其他窗口發(fā)生卡死的現(xiàn)象,使得用戶無法對目的窗口或其他窗口進行打開、關閉、拖動等操作,進而出現(xiàn)Windows異常。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明提供的一種鍵鼠腳本處理的方法和裝置,能夠去除冗余事件、補充缺少的必要事件,從而使鍵鼠腳本得到進一步優(yōu)化。
依據(jù)本發(fā)明一個方面,提出了一種鍵鼠腳本處理的方法,所述方法包括:
獲取待執(zhí)行的鍵鼠腳本;
檢測所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;
若所述鍵鼠腳本中存在所述冗余事件,則將所述冗余事件刪除;
檢測所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應當記錄在所述鍵鼠腳本中的事件;
若所述鍵鼠腳本中缺少所述必要事件,則添加所述必要事件;
保存處理后的鍵鼠腳本。
依據(jù)本發(fā)明另一個方面,還提出了一種鍵鼠腳本處理的裝置,所述裝置包括:
獲取單元,用于獲取待執(zhí)行的鍵鼠腳本;
檢測單元,用于檢測所述獲取單元獲取的所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;
刪除單元,用于當所述檢測單元檢測到所述鍵鼠腳本中存在所述冗余事件時,將所述冗余事件刪除;
所述檢測單元,還用于檢測所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應當記錄在所述鍵鼠腳本中的事件;
添加單元,用于當所述檢測單元檢測到所述鍵鼠腳本中缺少所述必要事件時,添加所述必要事件;
保存單元,用于保存處理后的鍵鼠腳本。
借由上述技術方案,本發(fā)明提供的鍵鼠腳本處理的方法和裝置,能夠在獲取待執(zhí)行的鍵鼠腳本后,檢測鍵鼠腳本中有無冗余事件以及是否缺少必要事件,當有冗余事件時,將冗余事件刪除,當缺少必要事件時,添加必要事件,從而得到處理后的鍵鼠腳本。與現(xiàn)有技術中直接執(zhí)行錄制的鍵鼠腳本相比,本發(fā)明不但可以使鍵鼠腳本的數(shù)據(jù)量減小,而且還能夠避免因缺少必要事件而造成Windows異?,F(xiàn)象的出現(xiàn)。
上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了一種鍵鼠腳本處理的方法的流程圖;
圖2示出了另一種鍵鼠腳本處理的方法的流程圖;
圖3示出了一種鍵鼠腳本處理的裝置的組成框圖;
圖4示出了另一種鍵鼠腳本處理的裝置的組成框圖。
具體實施方式
下面將參照附圖更詳細地描述本發(fā)明的示例性實施例。雖然附圖中顯示了本發(fā)明的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本發(fā)明而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本發(fā)明,并且能夠將本發(fā)明的范圍完整的傳達給本領域的技術人員。
本發(fā)明實施例提供了一種鍵鼠腳本處理的方法,如圖1所示,該方法包括:
101、獲取待執(zhí)行的鍵鼠腳本。
其中,鍵鼠腳本以事件的形式順序記錄用戶對鍵盤或鼠標的每一次操作,并且記錄相鄰事件之間的時間間隔,構成一個存儲有事件與時間間隔 的集合體。
示例性的,鍵鼠腳本中依次記錄按鍵A按下事件、100ms、按鍵A放開事件、5s、按鍵B按下事件、80ms、按鍵B放開事件、8s、鼠標移動事件、50ms、鼠標移動事件、50ms、鼠標移動事件、1s、鼠標左鍵按下事件、90ms、鼠標左鍵放開事件、8s、按鍵回車按下事件,說明用戶在整個操作過程中,先對按鍵A進行了操作,5s后,又對按鍵B進行了操作,8s后,又移動了鼠標,1s后,又對鼠標左鍵進行了操作,8s后,又對按鍵回車進行了操作。上述時間數(shù)值表示相鄰事件之間的時間間隔,本步驟及以下方案中涉及的數(shù)值僅為舉例說明,不作為對實際應用的具體限定。
需要說明的是,鍵鼠腳本中記錄的每個事件均以一串字節(jié)的形式存儲于終端,即每個事件占用一個或者多個連續(xù)字節(jié)的存儲空間。每串字節(jié)攜帶的信息包括:事件類型、操作焦點的坐標。其中,事件類型包括:鍵盤按鍵按下事件、鍵盤按鍵放開事件、鼠標移動事件、鼠標滾輪滾動事件、鼠標按鍵按下事件和鼠標按鍵放開事件。例如,一個事件為按鍵A按下事件,則該事件的事件類型為鍵盤按鍵的按鍵A按下事件,操作焦點的坐標為(400,500),可知用戶在終端坐標為(400,500)處,按下了按鍵A。
102、檢測鍵鼠腳本中是否存在冗余事件。
由于鍵鼠腳本中的各個事件是按照時間順序進行記錄的,所以在檢測鍵鼠腳本時,需要按照順序檢測鍵鼠腳本中的各個事件,檢測鍵鼠腳本中是否存在冗余事件。其中,冗余事件為對鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件,而回放狀態(tài)是指在鍵鼠腳本回放過程中游戲等的運行狀態(tài)。例如,用戶在錄制游戲鍵鼠操作過程中,隨意移動鼠標,卻未點擊鼠標或鍵盤,并沒有改變游戲的運行狀態(tài)。又如,游戲規(guī)定僅使用鍵盤上的方向鍵就可以進行上下左右的操作,完成游戲中的任務,而在游戲鍵鼠錄制中,用戶對其他按鍵進行了操作,如對按鍵A、按鍵B、按鍵Shift等進行了操作,而這些對其他按鍵的操作沒有改變游戲的運行狀態(tài)。雖然上述操作沒有對回放狀態(tài)產(chǎn)生影響,但是在鍵鼠腳本錄制過程中,同樣會將這些操作以事件的形式記錄下來,在鍵鼠腳本回放時,也會將這些操作過程重復一遍,因此將這些對鍵鼠腳本的回放狀態(tài)無影響的事件稱為冗余事件。
103、若鍵鼠腳本中存在冗余事件,則將冗余事件刪除。
由于冗余事件對游戲等的運行狀態(tài)沒有影響,所以當終端檢測到鍵鼠腳本中存在冗余事件時,可以將冗余事件刪除,以減小鍵鼠腳本的數(shù)據(jù)量,同時,由于刪除的冗余事件不會對回放狀態(tài)產(chǎn)生影響,因此刪除冗余事件不會改變鍵鼠腳本的回放結果。
此外,由于終端順序檢測鍵鼠腳本中的各個事件,所以當終端刪除當前所檢測到的冗余事件后,會繼續(xù)按照事件的順序對冗余事件之后的事件進行一一檢測。
104、檢測鍵鼠腳本中是否缺少必要事件。
其中,必要事件為應當記錄在鍵鼠腳本中的事件,包括對回放狀態(tài)產(chǎn)生影響的按下事件、放開事件、鼠標移動事件等。本步驟中,當終端檢測鍵鼠腳本中是否缺少必要事件時,終端可以檢測鍵鼠腳本的每一個按下事件最終是否放開,即是否有對應的放開事件。其原因在于,當鍵鼠腳本中缺少放開事件時,會使得鍵鼠腳本回放結束后,因缺少放開事件而使模擬操作持續(xù)處于按下的狀態(tài),由此導致目的窗口或者其他窗口發(fā)生卡死的現(xiàn)象,從而出現(xiàn)Windows異常。
105、若鍵鼠腳本中缺少必要事件,則添加必要事件。
當鍵鼠腳本中缺少必要事件時,會影響鍵鼠腳本的回放,甚至影響Windows系統(tǒng)的正常運行,因此需要在鍵鼠腳本中添加缺少的必要事件。例如,鍵鼠腳本中記錄有按鍵T按下事件,但是在該事件之后卻未檢測到按鍵T放開事件,說明鍵鼠腳本中缺少必要事件按鍵T放開事件。因此,需要在按鍵T按下事件之后添加按鍵T放開事件,以保證鍵鼠腳本的正?;胤?,以及Windows系統(tǒng)的正常運行。
需要說明的是,上述多個步驟中包含了終端對鍵鼠腳本中必要事件的缺失的檢測和處理,以及對鍵鼠腳本中冗余事件的檢測和處理。然而本發(fā)明實施例對這兩種情況的操作順序并不作限定。終端獲取待執(zhí)行的鍵鼠腳本以后,可以先對整個鍵鼠腳本檢測有無冗余事件的存在,并將所有的冗余事件刪除,對于刪除冗余事件后的鍵鼠腳本,終端再進行有無必要事件的缺失的檢測,當有缺失時,進行添加處理;也可以先對整個鍵鼠腳本檢 測有無必要事件的缺失,并添加缺失的必要事件,對于添加完缺失的必要事件后的鍵鼠腳本,終端再進行有無冗余事件的檢測,當有冗余事件時,進行刪除處理。
106、保存處理后的鍵鼠腳本。
在上述步驟對獲取的待執(zhí)行的鍵鼠腳本進行冗余事件的檢測和處理,以及進行必要事件的缺失的檢測和處理后,終端將處理完后的鍵鼠腳本進行保存,以便后續(xù)進行回放時執(zhí)行該鍵鼠腳本。
本發(fā)明實施例提供的鍵鼠腳本處理的方法,能夠在獲取待執(zhí)行的鍵鼠腳本后,檢測鍵鼠腳本中有無冗余事件以及是否缺少必要事件,當有冗余事件時,將冗余事件刪除,當缺少必要事件時,添加必要事件,從而得到處理后的鍵鼠腳本。與現(xiàn)有技術中直接執(zhí)行錄制的鍵鼠腳本相比,本發(fā)明不但可以使鍵鼠腳本的數(shù)據(jù)量減小,而且還能夠避免因缺少必要事件而造成Windows異?,F(xiàn)象的出現(xiàn)。
進一步的,作為對上述實施例的擴展與細化,本發(fā)明實施例還提供了另一種鍵鼠腳本處理的方法,如圖2所示,該方法包括:
201、獲取待執(zhí)行的鍵鼠腳本。
202、判斷鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合。
其中,預設優(yōu)化條件為終端預設的用于判斷是否為冗余事件的策略。通過判斷鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合,可以獲得與預設優(yōu)化條件匹配的事件集合,從而確定該事件集合中的事件為冗余事件,進而對冗余事件進行刪除處理,使得鍵鼠腳本的數(shù)據(jù)量減小。
下面對不同情況的事件或者事件集合進行判斷,從而對鍵鼠腳本中的冗余事件進行處理:
第一種情況:檢測鍵鼠腳本中是否存在多個連續(xù)的鼠標移動事件。若鍵鼠腳本中存在多個連續(xù)的鼠標移動事件,則確定多個連續(xù)的鼠標移動事件與預設優(yōu)化條件匹配。
在實際應用中,當用戶在進行游戲的鍵鼠錄制過程中,往往會出于非操作目的移動鼠標,而不進行附加操作(如按住鼠標左鍵移動鼠標,按住鍵盤上的按鍵移動鼠標等),例如不小心碰到鼠標,或者因個人習慣而單純 移動鼠標。對于這種只進行鼠標移動的操作,只是改變了鼠標的操作焦點的坐標,而未對游戲的狀態(tài)產(chǎn)生影響,因此可以將這些鼠標移動的事件歸為冗余事件,所以預設優(yōu)化條件中包含多個連續(xù)的鼠標移動事件的情況。由此可知,當終端檢測到鍵鼠腳本中存在多個連續(xù)的鼠標移動事件時,會確定該多個連續(xù)的鼠標移動事件與預設優(yōu)化條件相匹配。
需要說明的是,對于鼠標的移動操作,雖然在用戶看來是一次連續(xù)的移動過程,但是對于終端而言,一次鼠標移動過程是由成百上千個離散點所組成的近似連續(xù)的移動操作。因此,在進行鍵鼠腳本錄制時,終端會記錄下成百上千個事件(每個事件都記錄有鼠標移動的事件類型,以及對應離散點的坐標信息),所以鼠標的移動操作對鍵鼠腳本數(shù)據(jù)量的占用較大,如果判斷出在進行鼠標移動的同時,沒有附加其他操作(如按住鼠標左鍵移動鼠標,按住鍵盤上的按鍵移動鼠標等),而只是單獨進行鼠標移動,那么終端就將這樣的鼠標移動操作所對應的多個連續(xù)的鼠標移動事件刪除,從而可以在不影響鍵鼠腳本的回放狀態(tài)的前提下,降低鍵鼠腳本的數(shù)據(jù)量。
示例性的,鍵鼠腳本中的事件依次為按鍵Q按下事件、按鍵Q放開事件、鼠標移動事件、鼠標移動事件、鼠標移動事件、按鍵回車按下事件、按鍵回車放開事件,則終端可以檢測到該鍵鼠腳本中存在連續(xù)的3個鼠標移動事件。因此,終端可以確定該連續(xù)的3個鼠標移動事件與預設優(yōu)化條件匹配,從而將這3個鼠標移動事件定為冗余事件,并將其做刪除處理。
進一步的,當將鍵鼠腳本中所有的多個連續(xù)的鼠標移動事件刪除之后,在鍵鼠腳本回放的過程中,會出現(xiàn)操作焦點瞬間從一個點轉移到另一個相距較遠的點,而沒有用戶在錄制過程中的鼠標慢慢移動的焦點軌跡。然而用戶進行鼠標移動,往往是為了改變操作焦點的坐標,從而進一步點擊鼠標或者鍵盤上的鍵,進而改變游戲狀態(tài)。因此,為了保留用戶的正常鼠標移動操作,需要對第一種情況進行改進,以防止在“剔除”無用鼠標移動操作的同時,誤將正常的鼠標移動操作刪除,具體的,該改進方案如下:
檢測多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔是否大于第一預設時間閾值。若多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔大于第一預設時間閾值,則確定多個連續(xù)的鼠標移動事件與預設 優(yōu)化條件匹配。
其中,第一預設時間閾值可以為后臺統(tǒng)計的應用操作的最長時間閾值。
實際應用中,當用戶無意間移動了鼠標,或者隨意移動鼠標后,往往并無進行下一步操作的目的和意愿,最后一個鼠標移動事件與下一個操作事件之間的時間間隔會遠遠大于正常操作事件之間的時間間隔,因此可以通過這一特點對無用的鼠標移動操作和正常的鼠標移動操作進行區(qū)分。例如,用戶在觸發(fā)鼠標移動操作后,未立即進行鼠標點擊操作或者鍵盤上的按鍵操作,說明用戶并不是為了進行下一步的點擊而進行了鼠標移動的操作,所以這些由于用戶無目的地移動鼠標而記錄在鍵鼠腳本中的鼠標移動事件可以被歸為冗余事件。因此,預設優(yōu)化條件中包含在多個連續(xù)的鼠標移動事件后長時間未出現(xiàn)其他類型事件的情況。由此可知,當終端檢測到多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔大于第一預設時間閾值時,可以確定該多個連續(xù)的鼠標移動事件與預設優(yōu)化條件匹配,并將該多個連續(xù)的鼠標移動事件歸為冗余事件,從而將其刪除,以減小鍵鼠腳本的數(shù)據(jù)量。
示例性的,鍵鼠腳本中的事件以及事件間隔依次為按鍵C按下事件、100ms、按鍵C放開事件、5s、鼠標移動事件、50ms、鼠標移動事件、50ms、鼠標移動事件、50ms、鼠標移動事件、5min、鍵盤按鍵向右鍵按下事件、40ms、鍵盤按鍵向右鍵按下事件、40ms、鍵盤按鍵向右鍵按下事件、90ms、鍵盤按鍵向右鍵放開事件。若第一預設時間閾值為4min,則終端可以檢測到4個連續(xù)的鼠標移動事件中第四個鼠標移動事件之后的時間間隔大于4min,由此可以確定該4個連續(xù)的鼠標移動事件與預設優(yōu)化條件匹配,并將其確定為冗余事件,從而對冗余事件做刪除處理,使鍵鼠腳本得到進一步優(yōu)化。
進一步的,在鍵鼠腳本錄制的過程中,常常出現(xiàn)用戶一不小心壓在鍵盤上,使鍵盤上的按鍵持續(xù)處于按下狀態(tài),而這些鍵的按下并未導致改變回放狀態(tài)等問題。雖然這些鍵被長時間按下,卻未改變回放狀態(tài),但是這些按下與放開的操作也會記錄在鍵鼠腳本中,鍵鼠腳本在回放過程中也會重復這些操作。因此,這些未對回放狀態(tài)產(chǎn)生影響的長按操作所對應的事 件可以被歸為冗余事件。由此可知,預設優(yōu)化條件中包括未對回放狀態(tài)產(chǎn)生影響的長按操作的情況。其具體檢測方式如下述第二種情況:
第二種情況:檢測多個連續(xù)的相同按下事件中相鄰事件之間的時間間隔之和是否大于第二預設時間閾值。若時間間隔之和大于第二預設時間閾值,則確定多個連續(xù)的相同按下事件與預設優(yōu)化條件匹配。
其中,第二預設時間閾值可以為應用開發(fā)商提供的應用操作的最長時間閾值,也可以為后臺統(tǒng)計的應用操作的最長時間閾值。
需要說明的是,與鼠標移動類似,長按操作對于用戶來說感覺是一個操作,但是實際上,長按操作在終端記錄了多個連續(xù)的相同按下事件。因此,在計算長按操作的時長時,需要將該多個連續(xù)的相同按下事件中相鄰事件間的時間間隔進行相加,以獲得產(chǎn)生該多個連續(xù)的相同按下事件的總時長。
當長按按鍵的時間超過了應用開發(fā)商提供的應用操作的最長時間閾值,或者后臺統(tǒng)計的應用操作的最長時間閾值時,可以確定該長按操作為非正常情況下進行的長按操作。因此,當終端檢測到多個連續(xù)的相同按下事件中相鄰事件之間的時間間隔之和大于第二預設時間閾值時,可以確定多個連續(xù)的相同按下事件與預設優(yōu)化條件匹配,并將其歸為冗余事件,從而將其刪除,以減小鍵鼠腳本的數(shù)據(jù)量。
示例性的,鍵鼠腳本中有1001個連續(xù)按鍵A按下事件,相鄰事件的時間間隔均為100ms。當?shù)诙A設時間閾值為60s時,由于1001個連續(xù)按鍵A按下事件的時間間隔之和為1000*100=100000ms=100s,大于60s,所以該1001個連續(xù)按鍵A按下事件為與預設優(yōu)化條件匹配的事件集合。因此可以將該1001個連續(xù)按鍵A按下事件歸為冗余事件,將其刪除。
實際應用中,可以將游戲設計中涉及的按鍵的最大長按時長作為第二預設時間閾值使用,該最大長按時長可以由游戲開發(fā)商提供,也可以由游戲服務商后臺統(tǒng)計得出,并寫入到終端的配置文件(例如:***.dll文件)中。
需要說明的是,上述方案中的涉及的長按按鍵情況,是基于對回放狀態(tài)無影響的基礎之上的,因此,在將上述長按按鍵對應的多個連續(xù)相同的 按下事件進行刪除前,需要先判斷該按下事件是否為對回放狀態(tài)無影響的按鍵所觸發(fā)的事件。當該按下事件為對回放狀態(tài)無影響的按鍵所觸發(fā)的事件時,才可將其刪除。對于判斷是否為對回放狀態(tài)無影響的按鍵所觸發(fā)的事件的具體實現(xiàn)方式如下述第三種情況:
第三種情況:檢測鍵鼠腳本中是否存在預設按鍵以外的按鍵所觸發(fā)的事件。若鍵鼠腳本中存在預設按鍵以外的按鍵所觸發(fā)的事件,則確定預設按鍵以外的按鍵所觸發(fā)的事件與預設優(yōu)化條件匹配。
其中,預設按鍵可以為應用開發(fā)商提供的用于觸發(fā)應用操作的按鍵,也可以為后臺統(tǒng)計的用于觸發(fā)應用操作的按鍵。實際應用中,預設按鍵信息可以被預先寫入到終端的配置文件中。
由于游戲開發(fā)商在開發(fā)游戲時,往往會設置固定的若干按鍵(包括鍵盤或鼠標上的按鍵),進行游戲的編輯操作,而其他按鍵并不起作用。在游戲鍵鼠腳本錄制過程中,用戶往往會有意或無意按一些預設按鍵以外的按鍵,雖然針對這些按鍵的操作并不會對游戲狀態(tài)產(chǎn)生改變,但仍然被記錄在鍵鼠腳本當中,因此,這些預設按鍵以外的按鍵所觸發(fā)的事件可以被歸為冗余事件。由此可知,預設優(yōu)化條件中包括預設按鍵以外的按鍵觸發(fā)事件的情況。
具體的,終端可以對每一個預設按鍵觸發(fā)的事件做預設按鍵的標記。當終端檢測到當前事件未攜帶預設按鍵標記時,可以確定該當前事件為預設按鍵以外的按鍵所觸發(fā)的事件,并且可以確定該事件與預設優(yōu)化條件匹配;當終端檢測到當前事件攜帶預設按鍵標記時,可以確定當前事件是預設按鍵所觸發(fā)的事件,則繼續(xù)對下一事件進行檢測。
需要說明的是,上述第三種情況的方案,不僅可以實現(xiàn)對第二種情況中的多個相同按下事件的判斷,還可以實現(xiàn)對鍵鼠腳本中的其他任何事件的判斷,從而將鍵鼠腳本中的所有預設按鍵以外的按鍵所觸發(fā)的事件都檢測出來,并做進一步處理。
進一步的,當用戶對游戲窗口進行鍵鼠腳本錄制時,可能還會對其他窗口進行操作,然而由于在鍵鼠錄制過程中,終端僅針對鍵盤或者鼠標觸發(fā)的操作進行錄制,而不區(qū)分窗口,所以也會將用戶對其他窗口的操作錄 制進去,并且也會在鍵鼠腳本回放中回放這些操作。
例如,用戶在進行游戲的鍵鼠腳本錄制過程中,在某一時刻,用戶點擊了聊天軟件的圖標,并且找到一個叫張三的好友,向他發(fā)送了一個消息“周末一起出去玩吧!”。因此,在該聊天軟件的圖標位置不變的情況下,在鍵鼠腳本中的同一時刻,鼠標會如錄制過程一樣,點擊聊天軟件的圖標,并向張三發(fā)送相同的消息。而這種情況往往會對用戶造成影響,因此,這些對其他窗口的操作所對應的事件可以被歸為冗余事件。由此可知,預設優(yōu)化條件中包括對其他窗口進行操作的情況。判斷是否有對應其他窗口的事件的具體實現(xiàn)方式如下述第四種情況:
第四種情況:從事件中讀取操作焦點的坐標,并判斷坐標是否位于目標窗口中。若坐標不位于目標窗口中,則確定不位于目標窗口的坐標對應的事件與預設優(yōu)化條件匹配。
如上述步驟101中所述,鍵鼠腳本中的每個事件均攜帶關于操作焦點的坐標的信息,所以可以先獲取目標窗口的坐標范圍,然后從鍵鼠腳本的各個事件中讀取操作焦點的坐標。通過將讀取事件的操作焦點的坐標與目標窗口的坐標范圍相匹配,來判斷讀取的事件的操作焦點的坐標是否位于目標窗口。當讀取的事件的操作焦點的坐標不位于目標窗口的坐標范圍內時,終端確定不位于目標窗口的坐標對應的事件與預設優(yōu)化條件匹配。
203、若鍵鼠腳本中存在與預設優(yōu)化條件匹配的事件集合,則確定與預設優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將冗余事件刪除。
由于在步驟202中提到預設優(yōu)化條件為終端預設的用于判斷是否為冗余事件的策略,所以與預設優(yōu)化條件相匹配的事件為冗余事件。當檢測到鍵鼠腳本中存在與預設優(yōu)化條件匹配的事件集合時,將這些與預設優(yōu)化條件相匹配的事件集合中的事件確定為冗余事件,并將所有冗余事件進行刪除處理,以減小鍵鼠腳本的數(shù)據(jù)量。
進一步的,由于鍵鼠腳本中除了記錄各個事件外,還記錄了相鄰事件之間的時間間隔,所以當對所有的冗余事件進行刪除處理后,會出現(xiàn)多個連續(xù)時間間隔的情況。又由于終端在執(zhí)行鍵鼠腳本時,只是根據(jù)鍵鼠腳本中記錄的時間間隔的時長進行暫停,而依次執(zhí)行多個連續(xù)的時間間隔,與 直接執(zhí)行一個時長與所有時間間隔的時長之和相等的時間間隔效果相同,即所暫停的時間長短是一樣的。然而,每個時間間隔會分別占用一定的存儲空間,所以為了減小鍵鼠腳本的數(shù)據(jù)量,可以將多個連續(xù)的時間間隔合并為一個時間間隔。
示例性的,將冗余事件刪除后,鍵鼠腳本中有10個連續(xù)的時間間隔,其數(shù)值分別為100ms、1s、100ms、100ms、10s、50ms、50ms、2s、40ms、60ms,所以將這10個數(shù)值整個為1個數(shù)值后的值為13.5s。若這10個時間間隔分別占用一個字節(jié)的存儲空間,則總共占用10個字節(jié)的存儲空間,然而將這10個時間間隔整合為1個時間間隔后,所占用的存儲空間僅為一個字節(jié),從而減小了鍵鼠腳本的數(shù)據(jù)量,節(jié)省了鍵鼠腳本在終端中的存儲空間。
204、檢測當前事件之后是否缺少與當前事件對應的放開事件。
在上述實施例中提到,缺少放開事件會影響鍵鼠腳本的回放狀態(tài),甚至影響系統(tǒng)的正常運行,因此保證每個按下事件之后均有對應的放開事件是必要的,從而需要檢測當前事件之后是否缺少與當前事件對應的放開事件。
需要說明的是,實際應用中,當前事件可能是按下事件,也可能是放開事件,也可能是鼠標移動事件和鼠標滾輪滾動事件。當當前事件為鼠標移動事件或者鼠標滾輪滾動事件時,直接繼續(xù)檢測下一事件。當當前事件為按下事件時,對應該當前事件的放開事件為與當前事件操作相反的事件;而當當前事件為放開事件時,對應該當前事件的放開事件為該當前事件本身。例如,若當前事件為按鍵M按下事件,則對應該當前事件的放開事件為按鍵M放開事件;若當前事件為按鍵M放開事件,則對應該當前事件的放開事件為按鍵M放開事件。
實際應用中,終端每執(zhí)行一個按下事件和與其對應的放開事件,就可以完成一次按鍵的模擬操作,而當在放開事件之后重復添加相同的放開事件時,對按鍵的模擬操作并無影響,因為本方案中,只要保證一個按鍵在按下之后一定可以放開,即按下事件之后一定存在放開事件,而無需限制放開事件的數(shù)量。因此在添加放開事件時,無需對當前事件的事件類型進 行判斷。
進一步的,為了避免當前事件為放開事件時,也對其后的事件進行檢測,而降低對鍵鼠腳本的檢測速度,對上述方案進行如下改進:
在檢測當前事件之后是否缺少與當前事件對應的放開事件前,先檢測當前事件是否為按下事件。若當前事件為按下事件,則再繼續(xù)檢測當前事件之后是否缺少放開事件;若當前事件為放開事件,則不再對當前事件之后的事件進行檢測,而直接對與當前事件相鄰的下一事件進行按下事件的檢測,并判斷后續(xù)是否需要進行有無放開事件的檢測,進而進行相應的后續(xù)操作。
需要說明的是,無論是否需要進行按下事件的判斷,當對當前事件之后的事件進行檢測時,該檢測范圍都可以為僅針對與當前事件相鄰的下一事件進行檢測,也可以在與當前事件相鄰的若干事件中進行檢測,也可以在當前事件之后的所有事件內進行檢測。下面針對以下兩種檢測方式進行介紹:
方式一:檢測當前事件之后的所有事件中是否缺少放開事件。
終端遍歷當前事件之后的所有事件,檢測是否缺少對應當前事件的放開事件。這種對于當前事件之后的所有事件進行遍歷檢測的方式,可以防止事件檢測遺漏現(xiàn)象的產(chǎn)生。
在實際應用中,除了長按某一按鍵外,用戶對鍵盤或者鼠標的點擊往往是瞬間按下、瞬間放開,因此鍵鼠腳本中錄制的用戶對鍵盤或鼠標的點擊操作,往往是將一個按鍵按下事件與該按鍵的放開事件進行相鄰記錄,所以為了減少檢測時間,可以采用以下方式二進行檢測。
方式二:檢測與當前事件相鄰的下一事件是否為放開事件。
若與當前事件相鄰的下一事件是對應當前事件的放開事件,則終端繼續(xù)檢測與當前事件相鄰的下一事件的下一事件是否有對應的放開事件;若與當前事件相鄰的下一事件不是對應當前事件的放開事件,則在當前事件之后添加放開事件。
205、若當前事件之后缺少與當前事件對應的放開事件,則在當前事件之后添加放開事件。
若當前事件之后缺少與當前事件對應的放開事件,則有可能對鍵鼠腳本的回放產(chǎn)生影響,甚至導致Windows出現(xiàn)異常,因此應該在當前事件之后添加對應的放開事件以保證終端的正常運行。
由于無論對應當前事件的放開事件位于哪個位置,只要位于當前事件之后,都不會對回放結果或系統(tǒng)產(chǎn)生影響,所以在當前事件之后添加放開事件的具體實現(xiàn)方式可以為在當前事件與下一事件之間添加放開事件,可以為在當前事件之后的所有事件中,任意兩個事件之間添加放開事件,還可以為在當前事件之后的所有事件之后添加放開事件,本實施例不對放開事件的具體添加位置進行限定。下面對不同的添加方式進行介紹:
第一種方式:在當前事件之后、與當前事件相鄰的下一事件之前,添加放開事件。
一般性的,由于每個事件和與其對應的放開事件往往是相鄰記錄的,所以為了與鍵鼠腳本錄制過程中的事件的順序相一致,可以在當前事件之后、與當前事件相鄰的下一事件之前,添加放開事件。
在實際應用中,用戶常常會長按鍵盤或鼠標上的按鍵,而對于長按按鍵的情況,終端會在鍵鼠腳本中記錄多個連續(xù)相同的按下事件,例如,當用戶長按按鍵空格x秒時,計算機會記錄y個連續(xù)相同的按鍵空格按下事件。因此為了避免終端對多個連續(xù)相同的事件一一進行檢測,并多次添加相同的放開事件,而造成鍵鼠腳本回放緩慢,可以采用如下方式進行放開事件的添加:
第二種方式:檢測與當前事件相鄰的連續(xù)至少一個事件是否均與當前事件相同。若與當前事件相鄰的連續(xù)至少一個事件均與當前事件相同,則在連續(xù)至少一個事件中的最后一個事件之后,添加放開事件;若與當前事件相鄰的下一事件與當前事件不同,則在當前事件之后添加放開事件。
示例性的,鍵鼠腳本中記錄的事件依次為按鍵W按下事件、按鍵W放開事件、按鍵Y按下事件、按鍵Y按下事件、按鍵Y按下事件、鼠標移動事件、鼠標移動事件、鼠標移動事件、按鍵U按下事件、按鍵U放開事件。若當前事件為第一個按鍵Y按下事件,則在檢測到當前事件之后缺少對應的放開事件后,終端繼續(xù)檢測與當前事件相鄰的連續(xù)至少一個事件是否均 與當前事件相同。檢測結果為與當前事件相鄰的連續(xù)兩個事件與當前事件相同,因此終端在與當前事件相鄰的連續(xù)兩個事件中的第二個事件之后添加按鍵Y放開事件。
第三種方式:在所有事件之后添加放開事件。
由于只要每一個按下事件之后存在對應的放開事件,就不影響鍵鼠腳本的回放結果,所以為了將鍵鼠腳本中已有的事件與添加的放開事件區(qū)分開,可以在鍵鼠腳本中的所有事件之后添加放開事件,使得鍵鼠腳本中的最后一個事件之前均為已有的、未做添加的事件,使得鍵鼠腳本中的最后一個事件之后均為添加的事件。
在這種添加的事件均位于鍵鼠腳本中的已有事件之后的方式下,對于相鄰或者不相鄰的若干相同的事件均不存在對應的放開事件時,只要對該若干相同的事件中的第一個事件添加了對應的放開事件,那么其他事件之后便均有對應的放開事件,因此,避免了重復添加放開事件的情況。
進一步的,在實際應用中,用戶常常需要使用一些組合鍵來完成必要的操作,如用戶按下按鍵Ctrl后不放開,再按按鍵X,完成剪切的操作,而這個剪切操作在計算機中依次記錄了按鍵Ctrl按下事件、按鍵X按下事件,在按鍵X按下事件之后才記錄按鍵Ctrl放開事件和按鍵X放開事件,因此,當檢測到按鍵Ctrl按下事件之后不存在按鍵Ctrl放開事件時,在按鍵Ctrl按下事件與按鍵X按下事件之間添加按鍵Ctrl放開事件,則會使得剪切的功能失效,因此為了進一步優(yōu)化鍵鼠腳本,使其在避免產(chǎn)生Windows異常的基礎上,保證鍵鼠腳本回放結果不變,可以采用如下第四種方式進行操作:
第四種方式:檢測當前事件是否為事件組合中的事件。若當前事件為事件組合中的事件,則在事件組合中的最后一個事件之后,添加對應當前事件的放開事件;若當前事件不是事件組合中的事件,則在當前事件之后添加對應當前事件的放開事件。
其中,事件組合由觸發(fā)組合鍵所產(chǎn)生的多個事件組成,事件組合包括按鍵Ctrl事件、按鍵Alt事件、按鍵Shift事件、按鍵Fn事件。由于組合鍵是由按鍵Ctrl、按鍵Alt、按鍵Shift、按鍵Fn等特殊按鍵與鍵盤上的其他 字母等普通按鍵組成的,所以事件組合中還包括字母按鍵等其他按鍵的對應事件。
當檢測到當前事件為事件組合中的事件時,在事件組合中的最后一個事件之后,添加對應當前事件的放開事件,可以保證該事件組合觸發(fā)的組合鍵的特殊功能不被破壞。
示例性的,鍵鼠腳本中記錄的事件依次為按鍵O按下事件、按鍵O放開事件、按鍵Ctrl按下事件、按鍵C按下事件、按鍵C放開事件、按鍵M按下事件、鼠標移動事件、鼠標移動事件、按鍵回車按下事件、按鍵回車放開事件。若當前事件為按鍵Ctrl按下事件,則可以檢測到在按鍵Ctrl按下事件之后缺少按鍵Ctrl放開事件,而按鍵Ctrl與按鍵C又為組合鍵,事件組合中的事件有按鍵Ctrl按下事件、按鍵C按下事件、按鍵C放開事件,因此為避免破壞組合鍵按鍵Ctrl與按鍵C組合產(chǎn)生的復制功能,終端在事件組合中的最后一個事件(即按鍵C放開事件)之后添加按鍵Ctrl放開事件;若當前事件為按鍵M按下事件,則可以檢測到按鍵M按下事件之后缺少按鍵M放開事件,且按鍵M按下事件不是事件組合中的事件,所以在按鍵M按下事件之后添加按鍵M放開事件。
可選的,在實際應用中,用戶在使用組合鍵時,往往對后按下的按鍵先放開,對先按下的按鍵后放開,例如,用戶使用按鍵Ctrl、按鍵C實現(xiàn)復制功能時,往往是先按下按鍵Ctrl,在按住按鍵Ctrl的過程中,再按下按鍵C;而在放開按鍵時,往往是先放開按鍵C,再放開按鍵Ctrl。因此為了與用戶使用按鍵的順序一致,對上述第四種方式做如下改進:
若當前事件為事件組合中的事件,則在檢測到當前事件之后缺少放開事件后,繼續(xù)檢測當前事件之后的事件組合中的事件之后是否缺少對應的放開事件。若缺少對應的放開事件,則在事件組合中的最后一個事件之后,按照事件組合中事件的順序反向添加放開事件;若不缺少對應的放開事件,則在事件組合中的最后一個事件之后,添加對應當前事件的放開事件。
示例性的,鍵鼠腳本中記錄的事件依次為按鍵J按下事件、按鍵J放開事件、按鍵Ctrl按下事件、按鍵C按下事件、按鍵X按下事件、按鍵X放 開事件、鼠標移動事件、鼠標移動事件、鼠標左鍵按下事件、鼠標左鍵放開事件。若當前事件為按鍵Ctrl按下事件,則在檢測到按鍵Ctrl按下事件之后缺少按鍵Ctrl放開事件后,繼續(xù)檢測到按鍵C按下事件之后缺少按鍵C放開事件。因此,在按鍵C按下事件之后按事件順序反向添加放開事件,即依次添加按鍵C放開事件、按鍵Ctrl放開事件,以使得事件在鍵鼠腳本中的順序與用戶的操作順序保持一致。
需要說明的是,對于上述不同的添加放開事件的方式,在添加對應當前事件的放開事件之后,終端會對該添加的放開事件做添加標記,以區(qū)分已有的鍵鼠腳本中的事件和添加的事件。該標記與上述事件類型、操作焦點的坐標等信息的存儲形式相同,均可能占用一位、一個字節(jié),或者多個字節(jié)的存儲空間。當檢測到當前事件具有添加標記時,終端直接對下一事件以及下一事件之后的事件進行檢測,而不再對當前事件之后的事件進行檢測。
206、保存處理后的鍵鼠腳本。
本步驟與上述步驟106所述的保存處理后的鍵鼠腳本的內容一致,在此不再贅述。
進一步的,作為對上述各實施例的實現(xiàn),本發(fā)明實施例還提供了一種鍵鼠腳本處理的裝置,如圖3所示,該裝置包括:獲取單元31、檢測單元32、刪除單元33、添加單元34和保存單元35。其中,
獲取單元31,用于獲取待執(zhí)行的鍵鼠腳本;
檢測單元32,用于檢測獲取單元31獲取的鍵鼠腳本中是否存在冗余事件,冗余事件為對鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;
刪除單元33,用于當檢測單元32檢測到鍵鼠腳本中存在冗余事件時,將冗余事件刪除;
檢測單元32,還用于檢測鍵鼠腳本中是否缺少必要事件,必要事件為應當記錄在鍵鼠腳本中的事件;
添加單元34,用于當檢測單元32檢測到鍵鼠腳本中缺少必要事件時,添加必要事件;
保存單元35,用于保存處理后的鍵鼠腳本。
進一步的,檢測單元32,用于判斷獲取單元31獲取的鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合;
刪除單元33,用于當檢測單元32檢測到鍵鼠腳本中存在與預設優(yōu)化條件匹配的事件集合時,確定與預設優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將冗余事件刪除。
進一步的,如圖4所示,檢測單元32,包括:
第一檢測模塊321,用于檢測鍵鼠腳本中是否存在多個連續(xù)的鼠標移動事件;
第一確定模塊322,用于當?shù)谝粰z測模塊321檢測到鍵鼠腳本中存在多個連續(xù)的鼠標移動事件時,確定多個連續(xù)的鼠標移動事件與預設優(yōu)化條件匹配。
第一檢測模塊321,還用于在確定多個連續(xù)的鼠標移動事件與預設優(yōu)化條件匹配之前,檢測多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔是否大于第一預設時間閾值;
第一確定模塊322,還用于當?shù)谝粰z測模塊321檢測到多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔大于第一預設時間閾值時,確定多個連續(xù)的鼠標移動事件與預設優(yōu)化條件匹配。
第二檢測模塊323,用于檢測多個連續(xù)的相同按下事件中相鄰事件之間的時間間隔之和是否大于第二預設時間閾值;
第二確定模塊324,用于當?shù)诙z測模塊323檢測到時間間隔之和大于第二預設時間閾值時,確定多個連續(xù)的相同按下事件與預設優(yōu)化條件匹配。
第二檢測模塊323使用的第二預設時間閾值為應用開發(fā)商提供的應用操作的最長時間閾值,或者為后臺統(tǒng)計的應用操作的最長時間閾值。
第三檢測模塊325,用于檢測鍵鼠腳本中是否存在預設按鍵以外的按鍵所觸發(fā)的事件;
第三確定模塊326,用于當?shù)谌龣z測模塊325檢測到鍵鼠腳本中存在預設按鍵以外的按鍵所觸發(fā)的事件時,確定預設按鍵以外的按鍵所觸發(fā)的事件與預設優(yōu)化條件匹配。
第三檢測模塊325使用的預設按鍵為應用開發(fā)商提供的用于觸發(fā)應用 操作的按鍵,或者為后臺統(tǒng)計的用于觸發(fā)應用操作的按鍵。
讀取模塊327,用于從事件中讀取操作焦點的坐標;
判斷模塊328,用于判斷讀取模塊327讀取的坐標是否位于目標窗口;
第四確定模塊329,用于當判斷模塊328判斷結果為坐標不位于目標窗口時,確定不位于目標窗口的坐標對應的事件與預設優(yōu)化條件匹配。
刪除單元33,還用于在將冗余事件刪除之后,將多個連續(xù)的時間間隔合并為一個時間間隔。
進一步的,檢測單元32,用于檢測當前事件之后是否缺少與當前事件對應的放開事件;
添加單元34,用于當檢測單元32檢測到當前事件之后缺少與當前事件對應的放開事件時,在當前事件之后添加放開事件。
進一步的,如圖4所示,檢測單元32,包括:
第四檢測模塊3210,用于檢測當前事件是否為按下事件,若當前事件為按下事件,則檢測當前事件之后是否缺少放開事件。
第五檢測模塊3211,用于檢測當前事件之后的所有事件中是否缺少放開事件。
第六檢測模塊3212,用于檢測與當前事件相鄰的下一事件是否為放開事件。
進一步的,如圖4所示,添加單元34,包括:
第一添加模塊341,用于在當前事件之后、與當前事件相鄰的下一事件之前,添加放開事件。
第一檢測模塊342,用于檢測與當前事件相鄰的連續(xù)至少一個事件是否均與當前事件相同;
第二添加模塊343,用于當?shù)谝粰z測模塊342檢測到與當前事件相鄰的連續(xù)至少一個事件均與當前事件相同時,在連續(xù)至少一個事件中的最后一個事件之后,添加放開事件。
第三添加模塊344,用于在所有事件之后添加放開事件。
第二檢測模塊345,用于檢測當前事件是否為事件組合中的事件,事件 組合由觸發(fā)組合鍵所產(chǎn)生的多個事件組成;
第四添加模塊346,用于當?shù)诙z測模塊345檢測到當前事件為事件組合中的事件時,在事件組合中的最后一個事件之后,添加對應當前事件的放開事件。
本發(fā)明實施例提供的鍵鼠腳本處理的裝置,能夠在獲取待執(zhí)行的鍵鼠腳本后,檢測鍵鼠腳本中有無冗余事件以及是否缺少必要事件,當有冗余事件時,將冗余事件刪除,當缺少必要事件時,添加必要事件,從而得到處理后的鍵鼠腳本。與現(xiàn)有技術中直接執(zhí)行錄制的鍵鼠腳本相比,本發(fā)明不但可以使鍵鼠腳本的數(shù)據(jù)量減小,而且還能夠避免因缺少必要事件而造成Windows異?,F(xiàn)象的出現(xiàn)。
本發(fā)明實施例公開了:
A1、一種鍵鼠腳本處理的方法,所述方法包括:
獲取待執(zhí)行的鍵鼠腳本;
檢測所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;
若所述鍵鼠腳本中存在所述冗余事件,則將所述冗余事件刪除;
檢測所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應當記錄在所述鍵鼠腳本中的事件;
若所述鍵鼠腳本中缺少所述必要事件,則添加所述必要事件;
保存處理后的鍵鼠腳本。
A2、根據(jù)A1所述的方法,所述檢測所述鍵鼠腳本中是否存在冗余事件,包括:
判斷所述鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合;
所述若所述鍵鼠腳本中存在所述冗余事件,則將所述冗余事件刪除,包括:
若所述鍵鼠腳本中存在與預設優(yōu)化條件匹配的事件集合,則確定所述與預設優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將所述冗余事件刪除。
A3、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預設 優(yōu)化條件匹配的事件集合,包括:
檢測所述鍵鼠腳本中是否存在多個連續(xù)的鼠標移動事件;
若所述鍵鼠腳本中存在多個連續(xù)的鼠標移動事件,則確定所述多個連續(xù)的鼠標移動事件與所述預設優(yōu)化條件匹配。
A4、根據(jù)A3所述的方法,在所述確定所述多個連續(xù)的鼠標移動事件與所述預設優(yōu)化條件匹配之前,所述方法進一步包括:
檢測所述多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔是否大于第一預設時間閾值;
所述確定所述多個連續(xù)的鼠標移動事件與所述預設優(yōu)化條件匹配,包括:
若所述多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔大于所述第一預設時間閾值,則確定所述多個連續(xù)的鼠標移動事件與所述預設優(yōu)化條件匹配。
A5、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合,包括:
檢測多個連續(xù)的相同按下事件中相鄰事件之間的時間間隔之和是否大于第二預設時間閾值;
若所述時間間隔之和大于所述第二預設時間閾值,則確定所述多個連續(xù)的相同按下事件與所述預設優(yōu)化條件匹配。
A6、根據(jù)A5所述的方法,所述第二預設時間閾值為應用開發(fā)商提供的應用操作的最長時間閾值;
或者,所述第二預設時間閾值為后臺統(tǒng)計的應用操作的最長時間閾值。
A7、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合,包括:
檢測所述鍵鼠腳本中是否存在預設按鍵以外的按鍵所觸發(fā)的事件;
若所述鍵鼠腳本中存在預設按鍵以外的按鍵所觸發(fā)的事件,則確定所述預設按鍵以外的按鍵所觸發(fā)的事件與所述預設優(yōu)化條件匹配。
A8、根據(jù)A7所述的方法,所述預設按鍵為應用開發(fā)商提供的用于觸發(fā)應用操作的按鍵;
或者,所述預設按鍵為后臺統(tǒng)計的用于觸發(fā)應用操作的按鍵。
A9、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合,包括:
從事件中讀取操作焦點的坐標;
判斷所述坐標是否位于目標窗口;
若所述坐標不位于所述目標窗口,則確定不位于所述目標窗口的所述坐標對應的事件與所述預設優(yōu)化條件匹配。
A10、根據(jù)A1至A9中任意一項所述的方法,在所述將所述冗余事件刪除之后,所述方法進一步包括:
將多個連續(xù)的時間間隔合并為一個時間間隔。
A11、根據(jù)A1所述的方法,所述檢測所述鍵鼠腳本中是否缺少必要事件,包括:
檢測當前事件之后是否缺少與所述當前事件對應的放開事件;
所述若所述鍵鼠腳本中缺少所述必要事件,則添加所述必要事件,包括:
若所述當前事件之后缺少與所述當前事件對應的放開事件,則在所述當前事件之后添加所述放開事件。
A12、根據(jù)A11所述的方法,所述檢測當前事件之后是否缺少與所述當前事件對應的放開事件,包括:
檢測所述當前事件是否為按下事件;
若所述當前事件為按下事件,則檢測所述當前事件之后是否缺少所述放開事件。
A13、根據(jù)A11所述的方法,所述檢測當前事件之后是否缺少與所述當前事件對應的放開事件,包括:
檢測所述當前事件之后的所有事件中是否缺少所述放開事件。
A14、根據(jù)A11所述的方法,所述檢測當前事件之后是否缺少與所述當前事件對應的放開事件,包括:
檢測與所述當前事件相鄰的下一事件是否為所述放開事件。
A15、根據(jù)A11所述的方法,所述在所述當前事件之后添加所述放開 事件,包括:
在所述當前事件之后、與所述當前事件相鄰的下一事件之前,添加所述放開事件。
A16、根據(jù)A11所述的方法,所述在所述當前事件之后添加所述放開事件,包括:
檢測與所述當前事件相鄰的連續(xù)至少一個事件是否均與所述當前事件相同;
若與所述當前事件相鄰的連續(xù)至少一個事件均與所述當前事件相同,則在所述連續(xù)至少一個事件中的最后一個事件之后,添加所述放開事件。
A17、根據(jù)A11所述的方法,所述在所述當前事件之后添加所述放開事件,包括:
在所有事件之后添加所述放開事件。
A18、根據(jù)A11所述的方法,所述在所述當前事件之后添加所述放開事件,包括:
檢測所述當前事件是否為事件組合中的事件,所述事件組合由觸發(fā)組合鍵所產(chǎn)生的多個事件組成;
若所述當前事件為事件組合中的事件,則在所述事件組合中的最后一個事件之后,添加對應所述當前事件的放開事件。
B19、一種鍵鼠腳本處理的裝置,所述裝置包括:
獲取單元,用于獲取待執(zhí)行的鍵鼠腳本;
檢測單元,用于檢測所述獲取單元獲取的所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;
刪除單元,用于當所述檢測單元檢測到所述鍵鼠腳本中存在所述冗余事件時,將所述冗余事件刪除;
所述檢測單元,還用于檢測所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應當記錄在所述鍵鼠腳本中的事件;
添加單元,用于當所述檢測單元檢測到所述鍵鼠腳本中缺少所述必要事件時,添加所述必要事件;
保存單元,用于保存處理后的鍵鼠腳本。
B20、根據(jù)B19所述的裝置,所述檢測單元,用于判斷所述獲取單元獲取的所述鍵鼠腳本中是否存在與預設優(yōu)化條件匹配的事件集合;
所述刪除單元,用于當所述檢測單元檢測到所述鍵鼠腳本中存在與預設優(yōu)化條件匹配的事件集合時,確定所述與預設優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將所述冗余事件刪除。
B21、根據(jù)B20所述的裝置,所述檢測單元,包括:
第一檢測模塊,用于檢測所述鍵鼠腳本中是否存在多個連續(xù)的鼠標移動事件;
第一確定模塊,用于當所述第一檢測模塊檢測到所述鍵鼠腳本中存在多個連續(xù)的鼠標移動事件時,確定所述多個連續(xù)的鼠標移動事件與所述預設優(yōu)化條件匹配。
B22、根據(jù)B21所述的裝置,所述第一檢測模塊,還用于在所述確定所述多個連續(xù)的鼠標移動事件與所述預設優(yōu)化條件匹配之前,檢測所述多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔是否大于第一預設時間閾值;
所述第一確定模塊,還用于當所述第一檢測模塊檢測到所述多個連續(xù)的鼠標移動事件中最后一個事件之后的時間間隔大于所述第一預設時間閾值時,確定所述多個連續(xù)的鼠標移動事件與所述預設優(yōu)化條件匹配。
B23、根據(jù)B20所述的裝置,所述檢測單元,包括:
第二檢測模塊,用于檢測多個連續(xù)的相同按下事件中相鄰事件之間的時間間隔之和是否大于第二預設時間閾值;
第二確定模塊,用于當所述第二檢測模塊檢測到所述時間間隔之和大于所述第二預設時間閾值時,確定所述多個連續(xù)的相同按下事件與所述預設優(yōu)化條件匹配。
B24、根據(jù)B23所述的裝置,所述第二檢測模塊使用的所述第二預設時間閾值為應用開發(fā)商提供的應用操作的最長時間閾值,或者為后臺統(tǒng)計的應用操作的最長時間閾值。
B25、根據(jù)B20所述的裝置,所述檢測單元,包括:
第三檢測模塊,用于檢測所述鍵鼠腳本中是否存在預設按鍵以外的按鍵所觸發(fā)的事件;
第三確定模塊,用于當所述第三檢測模塊檢測到所述鍵鼠腳本中存在預設按鍵以外的按鍵所觸發(fā)的事件時,確定所述預設按鍵以外的按鍵所觸發(fā)的事件與所述預設優(yōu)化條件匹配。
B26、根據(jù)B25所述的裝置,所述第三檢測模塊使用的所述預設按鍵為應用開發(fā)商提供的用于觸發(fā)應用操作的按鍵,或者為后臺統(tǒng)計的用于觸發(fā)應用操作的按鍵。
B27、根據(jù)B20所述的裝置,所述檢測單元,包括:
讀取模塊,用于從事件中讀取操作焦點的坐標;
判斷模塊,用于判斷所述讀取模塊讀取的所述坐標是否位于目標窗口;
第四確定模塊,用于當所述判斷模塊判斷結果為所述坐標不位于所述目標窗口時,確定不位于所述目標窗口的所述坐標對應的事件與所述預設優(yōu)化條件匹配。
B28、根據(jù)B19至B27中任意一項所述的裝置,所述刪除單元,還用于在所述將所述冗余事件刪除之后,將多個連續(xù)的時間間隔合并為一個時間間隔。
B29、根據(jù)B19所述的裝置,所述檢測單元,用于檢測當前事件之后是否缺少與所述當前事件對應的放開事件;
所述添加單元,用于當所述檢測單元檢測到所述當前事件之后缺少與所述當前事件對應的放開事件時,在所述當前事件之后添加所述放開事件。
B30、根據(jù)B29所述的裝置,所述檢測單元,包括:
第四檢測模塊,用于檢測所述當前事件是否為按下事件,若所述當前事件為按下事件,則檢測所述當前事件之后是否缺少所述放開事件。
B31、根據(jù)B29所述的裝置,所述檢測單元,包括:
第五檢測模塊,用于檢測所述當前事件之后的所有事件中是否缺少所述放開事件。
B32、根據(jù)B29所述的裝置,所述檢測單元,包括:
第六檢測模塊,用于檢測與所述當前事件相鄰的下一事件是否為所述 放開事件。
B33、根據(jù)B29所述的裝置,所述添加單元,包括:
第一添加模塊,用于在所述當前事件之后、與所述當前事件相鄰的下一事件之前,添加所述放開事件。
B34、根據(jù)B29所述的裝置,所述添加單元,包括:
第一檢測模塊,用于檢測與所述當前事件相鄰的連續(xù)至少一個事件是否均與所述當前事件相同;
第二添加模塊,用于當所述第一檢測模塊檢測到與所述當前事件相鄰的連續(xù)至少一個事件均與所述當前事件相同時,在所述連續(xù)至少一個事件中的最后一個事件之后,添加所述放開事件。
B35、根據(jù)B29所述的裝置,所述添加單元,包括:
第三添加模塊,用于在所有事件之后添加所述放開事件。
B36、根據(jù)B29所述的裝置,所述添加單元,包括:
第二檢測模塊,用于檢測所述當前事件是否為事件組合中的事件,所述事件組合由觸發(fā)組合鍵所產(chǎn)生的多個事件組成;
第四添加模塊,用于當所述第二檢測模塊檢測到所述當前事件為事件組合中的事件時,在所述事件組合中的最后一個事件之后,添加對應所述當前事件的放開事件。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
可以理解的是,上述方法及裝置中的相關特征可以相互參考。另外,上述實施例中的“第一”、“第二”等是用于區(qū)分各實施例,而并不代表各實施例的優(yōu)劣。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的 描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的一種網(wǎng)絡通訊的方法、裝置及系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。