两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種鍵鼠腳本處理的方法和裝置與流程

文檔序號(hào):11829405閱讀:240來(lái)源:國(guó)知局
一種鍵鼠腳本處理的方法和裝置與流程

本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種鍵鼠腳本處理的方法和裝置。



背景技術(shù):

鍵盤和鼠標(biāo)均為用戶設(shè)備的輸入設(shè)備,當(dāng)用戶玩游戲或者進(jìn)行編輯文檔等窗口操作時(shí),往往需要對(duì)某個(gè)操作過(guò)程進(jìn)行重復(fù)執(zhí)行,例如,重復(fù)點(diǎn)擊鼠標(biāo)左鍵,或者以一定的順序重復(fù)點(diǎn)擊鍵盤中的不同方向鍵。為了簡(jiǎn)化用戶的重復(fù)操作,現(xiàn)有技術(shù)提出了一種模擬用戶操作鍵盤和鼠標(biāo)的方式。在該方式中,用戶設(shè)備可以在用戶第一次執(zhí)行鍵鼠操作時(shí),對(duì)用戶的鍵鼠操作進(jìn)行錄制,獲得鍵鼠腳本,并在后續(xù)對(duì)鍵鼠腳本進(jìn)行回放,實(shí)現(xiàn)同一操作的自動(dòng)執(zhí)行。

現(xiàn)有技術(shù)中,腳本是以事件為單位進(jìn)行錄制的,除了鼠標(biāo)移動(dòng)和鼠標(biāo)滾輪的滾動(dòng)以外,鍵盤或鼠標(biāo)上任何一個(gè)按鍵的操作,均包含按下與放開(kāi)兩個(gè)動(dòng)作。在進(jìn)行腳本錄制時(shí),用戶設(shè)備將一個(gè)動(dòng)作作為一個(gè)事件進(jìn)行記錄,與此對(duì)應(yīng)的,針對(duì)某個(gè)按鍵的一次操作就包含了按下和放開(kāi)兩個(gè)事件。因此,鍵盤所涉及的事件包括每一個(gè)按鍵的按下事件和放開(kāi)事件;鼠標(biāo)所涉及的事件包括鼠標(biāo)左右鍵、鼠標(biāo)滾輪的按下事件和放開(kāi)事件、鼠標(biāo)滾輪滾動(dòng)事件以及鼠標(biāo)移動(dòng)事件。在進(jìn)行鍵鼠腳本錄制的過(guò)程中,用戶常常會(huì)觸發(fā)一些對(duì)游戲狀態(tài)不產(chǎn)生影響的操作,例如,用戶隨意移動(dòng)鼠標(biāo),卻沒(méi)有點(diǎn)擊鍵盤或者鼠標(biāo)上的任何按鍵。這種單純的鼠標(biāo)移動(dòng)不會(huì)導(dǎo)致游戲狀態(tài)的改變,因此通常沒(méi)有意義。雖然上述操作對(duì)游戲狀態(tài)沒(méi)有影響,但是電腦也會(huì)將該操作以事件的形式記錄到鍵鼠腳本中,從而使鍵鼠腳本的數(shù)據(jù)量增大,同時(shí)使鍵鼠腳本回放復(fù)雜。實(shí)際應(yīng)用中,通常將此類事件稱之為冗余事件。此外,由于Windows系統(tǒng)機(jī)制本身的缺陷,在鍵鼠腳本錄制過(guò)程中,往往會(huì)出現(xiàn)事件丟失現(xiàn)象,例如,用戶點(diǎn)擊了一下鼠標(biāo)左鍵,但是鍵鼠腳本中,只錄制了鼠標(biāo)左鍵按下事件,卻丟失了鼠標(biāo)左鍵放開(kāi)事件。 因此,像這種丟失放開(kāi)事件的情況,會(huì)使得鍵鼠腳本回放結(jié)束后,因缺少放開(kāi)事件而使模擬操作持續(xù)處于按下的狀態(tài),由此導(dǎo)致目的窗口或者其他窗口發(fā)生卡死的現(xiàn)象,使得用戶無(wú)法對(duì)目的窗口或其他窗口進(jìn)行打開(kāi)、關(guān)閉、拖動(dòng)等操作,進(jìn)而出現(xiàn)Windows異常。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明提供的一種鍵鼠腳本處理的方法和裝置,能夠去除冗余事件、補(bǔ)充缺少的必要事件,從而使鍵鼠腳本得到進(jìn)一步優(yōu)化。

依據(jù)本發(fā)明一個(gè)方面,提出了一種鍵鼠腳本處理的方法,所述方法包括:

獲取待執(zhí)行的鍵鼠腳本;

檢測(cè)所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對(duì)所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;

若所述鍵鼠腳本中存在所述冗余事件,則將所述冗余事件刪除;

檢測(cè)所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應(yīng)當(dāng)記錄在所述鍵鼠腳本中的事件;

若所述鍵鼠腳本中缺少所述必要事件,則添加所述必要事件;

保存處理后的鍵鼠腳本。

依據(jù)本發(fā)明另一個(gè)方面,還提出了一種鍵鼠腳本處理的裝置,所述裝置包括:

獲取單元,用于獲取待執(zhí)行的鍵鼠腳本;

檢測(cè)單元,用于檢測(cè)所述獲取單元獲取的所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對(duì)所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;

刪除單元,用于當(dāng)所述檢測(cè)單元檢測(cè)到所述鍵鼠腳本中存在所述冗余事件時(shí),將所述冗余事件刪除;

所述檢測(cè)單元,還用于檢測(cè)所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應(yīng)當(dāng)記錄在所述鍵鼠腳本中的事件;

添加單元,用于當(dāng)所述檢測(cè)單元檢測(cè)到所述鍵鼠腳本中缺少所述必要事件時(shí),添加所述必要事件;

保存單元,用于保存處理后的鍵鼠腳本。

借由上述技術(shù)方案,本發(fā)明提供的鍵鼠腳本處理的方法和裝置,能夠在獲取待執(zhí)行的鍵鼠腳本后,檢測(cè)鍵鼠腳本中有無(wú)冗余事件以及是否缺少必要事件,當(dāng)有冗余事件時(shí),將冗余事件刪除,當(dāng)缺少必要事件時(shí),添加必要事件,從而得到處理后的鍵鼠腳本。與現(xiàn)有技術(shù)中直接執(zhí)行錄制的鍵鼠腳本相比,本發(fā)明不但可以使鍵鼠腳本的數(shù)據(jù)量減小,而且還能夠避免因缺少必要事件而造成Windows異常現(xiàn)象的出現(xiàn)。

上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(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示出了一種鍵鼠腳本處理的方法的流程圖;

圖2示出了另一種鍵鼠腳本處理的方法的流程圖;

圖3示出了一種鍵鼠腳本處理的裝置的組成框圖;

圖4示出了另一種鍵鼠腳本處理的裝置的組成框圖。

具體實(shí)施方式

下面將參照附圖更詳細(xì)地描述本發(fā)明的示例性實(shí)施例。雖然附圖中顯示了本發(fā)明的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本發(fā)明而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本發(fā)明,并且能夠?qū)⒈景l(fā)明的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

本發(fā)明實(shí)施例提供了一種鍵鼠腳本處理的方法,如圖1所示,該方法包括:

101、獲取待執(zhí)行的鍵鼠腳本。

其中,鍵鼠腳本以事件的形式順序記錄用戶對(duì)鍵盤或鼠標(biāo)的每一次操作,并且記錄相鄰事件之間的時(shí)間間隔,構(gòu)成一個(gè)存儲(chǔ)有事件與時(shí)間間隔 的集合體。

示例性的,鍵鼠腳本中依次記錄按鍵A按下事件、100ms、按鍵A放開(kāi)事件、5s、按鍵B按下事件、80ms、按鍵B放開(kāi)事件、8s、鼠標(biāo)移動(dòng)事件、50ms、鼠標(biāo)移動(dòng)事件、50ms、鼠標(biāo)移動(dòng)事件、1s、鼠標(biāo)左鍵按下事件、90ms、鼠標(biāo)左鍵放開(kāi)事件、8s、按鍵回車按下事件,說(shuō)明用戶在整個(gè)操作過(guò)程中,先對(duì)按鍵A進(jìn)行了操作,5s后,又對(duì)按鍵B進(jìn)行了操作,8s后,又移動(dòng)了鼠標(biāo),1s后,又對(duì)鼠標(biāo)左鍵進(jìn)行了操作,8s后,又對(duì)按鍵回車進(jìn)行了操作。上述時(shí)間數(shù)值表示相鄰事件之間的時(shí)間間隔,本步驟及以下方案中涉及的數(shù)值僅為舉例說(shuō)明,不作為對(duì)實(shí)際應(yīng)用的具體限定。

需要說(shuō)明的是,鍵鼠腳本中記錄的每個(gè)事件均以一串字節(jié)的形式存儲(chǔ)于終端,即每個(gè)事件占用一個(gè)或者多個(gè)連續(xù)字節(jié)的存儲(chǔ)空間。每串字節(jié)攜帶的信息包括:事件類型、操作焦點(diǎn)的坐標(biāo)。其中,事件類型包括:鍵盤按鍵按下事件、鍵盤按鍵放開(kāi)事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)滾輪滾動(dòng)事件、鼠標(biāo)按鍵按下事件和鼠標(biāo)按鍵放開(kāi)事件。例如,一個(gè)事件為按鍵A按下事件,則該事件的事件類型為鍵盤按鍵的按鍵A按下事件,操作焦點(diǎn)的坐標(biāo)為(400,500),可知用戶在終端坐標(biāo)為(400,500)處,按下了按鍵A。

102、檢測(cè)鍵鼠腳本中是否存在冗余事件。

由于鍵鼠腳本中的各個(gè)事件是按照時(shí)間順序進(jìn)行記錄的,所以在檢測(cè)鍵鼠腳本時(shí),需要按照順序檢測(cè)鍵鼠腳本中的各個(gè)事件,檢測(cè)鍵鼠腳本中是否存在冗余事件。其中,冗余事件為對(duì)鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件,而回放狀態(tài)是指在鍵鼠腳本回放過(guò)程中游戲等的運(yùn)行狀態(tài)。例如,用戶在錄制游戲鍵鼠操作過(guò)程中,隨意移動(dòng)鼠標(biāo),卻未點(diǎn)擊鼠標(biāo)或鍵盤,并沒(méi)有改變游戲的運(yùn)行狀態(tài)。又如,游戲規(guī)定僅使用鍵盤上的方向鍵就可以進(jìn)行上下左右的操作,完成游戲中的任務(wù),而在游戲鍵鼠錄制中,用戶對(duì)其他按鍵進(jìn)行了操作,如對(duì)按鍵A、按鍵B、按鍵Shift等進(jìn)行了操作,而這些對(duì)其他按鍵的操作沒(méi)有改變游戲的運(yùn)行狀態(tài)。雖然上述操作沒(méi)有對(duì)回放狀態(tài)產(chǎn)生影響,但是在鍵鼠腳本錄制過(guò)程中,同樣會(huì)將這些操作以事件的形式記錄下來(lái),在鍵鼠腳本回放時(shí),也會(huì)將這些操作過(guò)程重復(fù)一遍,因此將這些對(duì)鍵鼠腳本的回放狀態(tài)無(wú)影響的事件稱為冗余事件。

103、若鍵鼠腳本中存在冗余事件,則將冗余事件刪除。

由于冗余事件對(duì)游戲等的運(yùn)行狀態(tài)沒(méi)有影響,所以當(dāng)終端檢測(cè)到鍵鼠腳本中存在冗余事件時(shí),可以將冗余事件刪除,以減小鍵鼠腳本的數(shù)據(jù)量,同時(shí),由于刪除的冗余事件不會(huì)對(duì)回放狀態(tài)產(chǎn)生影響,因此刪除冗余事件不會(huì)改變鍵鼠腳本的回放結(jié)果。

此外,由于終端順序檢測(cè)鍵鼠腳本中的各個(gè)事件,所以當(dāng)終端刪除當(dāng)前所檢測(cè)到的冗余事件后,會(huì)繼續(xù)按照事件的順序?qū)θ哂嗍录蟮氖录M(jìn)行一一檢測(cè)。

104、檢測(cè)鍵鼠腳本中是否缺少必要事件。

其中,必要事件為應(yīng)當(dāng)記錄在鍵鼠腳本中的事件,包括對(duì)回放狀態(tài)產(chǎn)生影響的按下事件、放開(kāi)事件、鼠標(biāo)移動(dòng)事件等。本步驟中,當(dāng)終端檢測(cè)鍵鼠腳本中是否缺少必要事件時(shí),終端可以檢測(cè)鍵鼠腳本的每一個(gè)按下事件最終是否放開(kāi),即是否有對(duì)應(yīng)的放開(kāi)事件。其原因在于,當(dāng)鍵鼠腳本中缺少放開(kāi)事件時(shí),會(huì)使得鍵鼠腳本回放結(jié)束后,因缺少放開(kāi)事件而使模擬操作持續(xù)處于按下的狀態(tài),由此導(dǎo)致目的窗口或者其他窗口發(fā)生卡死的現(xiàn)象,從而出現(xiàn)Windows異常。

105、若鍵鼠腳本中缺少必要事件,則添加必要事件。

當(dāng)鍵鼠腳本中缺少必要事件時(shí),會(huì)影響鍵鼠腳本的回放,甚至影響Windows系統(tǒng)的正常運(yùn)行,因此需要在鍵鼠腳本中添加缺少的必要事件。例如,鍵鼠腳本中記錄有按鍵T按下事件,但是在該事件之后卻未檢測(cè)到按鍵T放開(kāi)事件,說(shuō)明鍵鼠腳本中缺少必要事件按鍵T放開(kāi)事件。因此,需要在按鍵T按下事件之后添加按鍵T放開(kāi)事件,以保證鍵鼠腳本的正?;胤?,以及Windows系統(tǒng)的正常運(yùn)行。

需要說(shuō)明的是,上述多個(gè)步驟中包含了終端對(duì)鍵鼠腳本中必要事件的缺失的檢測(cè)和處理,以及對(duì)鍵鼠腳本中冗余事件的檢測(cè)和處理。然而本發(fā)明實(shí)施例對(duì)這兩種情況的操作順序并不作限定。終端獲取待執(zhí)行的鍵鼠腳本以后,可以先對(duì)整個(gè)鍵鼠腳本檢測(cè)有無(wú)冗余事件的存在,并將所有的冗余事件刪除,對(duì)于刪除冗余事件后的鍵鼠腳本,終端再進(jìn)行有無(wú)必要事件的缺失的檢測(cè),當(dāng)有缺失時(shí),進(jìn)行添加處理;也可以先對(duì)整個(gè)鍵鼠腳本檢 測(cè)有無(wú)必要事件的缺失,并添加缺失的必要事件,對(duì)于添加完缺失的必要事件后的鍵鼠腳本,終端再進(jìn)行有無(wú)冗余事件的檢測(cè),當(dāng)有冗余事件時(shí),進(jìn)行刪除處理。

106、保存處理后的鍵鼠腳本。

在上述步驟對(duì)獲取的待執(zhí)行的鍵鼠腳本進(jìn)行冗余事件的檢測(cè)和處理,以及進(jìn)行必要事件的缺失的檢測(cè)和處理后,終端將處理完后的鍵鼠腳本進(jìn)行保存,以便后續(xù)進(jìn)行回放時(shí)執(zhí)行該鍵鼠腳本。

本發(fā)明實(shí)施例提供的鍵鼠腳本處理的方法,能夠在獲取待執(zhí)行的鍵鼠腳本后,檢測(cè)鍵鼠腳本中有無(wú)冗余事件以及是否缺少必要事件,當(dāng)有冗余事件時(shí),將冗余事件刪除,當(dāng)缺少必要事件時(shí),添加必要事件,從而得到處理后的鍵鼠腳本。與現(xiàn)有技術(shù)中直接執(zhí)行錄制的鍵鼠腳本相比,本發(fā)明不但可以使鍵鼠腳本的數(shù)據(jù)量減小,而且還能夠避免因缺少必要事件而造成Windows異常現(xiàn)象的出現(xiàn)。

進(jìn)一步的,作為對(duì)上述實(shí)施例的擴(kuò)展與細(xì)化,本發(fā)明實(shí)施例還提供了另一種鍵鼠腳本處理的方法,如圖2所示,該方法包括:

201、獲取待執(zhí)行的鍵鼠腳本。

202、判斷鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合。

其中,預(yù)設(shè)優(yōu)化條件為終端預(yù)設(shè)的用于判斷是否為冗余事件的策略。通過(guò)判斷鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合,可以獲得與預(yù)設(shè)優(yōu)化條件匹配的事件集合,從而確定該事件集合中的事件為冗余事件,進(jìn)而對(duì)冗余事件進(jìn)行刪除處理,使得鍵鼠腳本的數(shù)據(jù)量減小。

下面對(duì)不同情況的事件或者事件集合進(jìn)行判斷,從而對(duì)鍵鼠腳本中的冗余事件進(jìn)行處理:

第一種情況:檢測(cè)鍵鼠腳本中是否存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件。若鍵鼠腳本中存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件,則確定多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件匹配。

在實(shí)際應(yīng)用中,當(dāng)用戶在進(jìn)行游戲的鍵鼠錄制過(guò)程中,往往會(huì)出于非操作目的移動(dòng)鼠標(biāo),而不進(jìn)行附加操作(如按住鼠標(biāo)左鍵移動(dòng)鼠標(biāo),按住鍵盤上的按鍵移動(dòng)鼠標(biāo)等),例如不小心碰到鼠標(biāo),或者因個(gè)人習(xí)慣而單純 移動(dòng)鼠標(biāo)。對(duì)于這種只進(jìn)行鼠標(biāo)移動(dòng)的操作,只是改變了鼠標(biāo)的操作焦點(diǎn)的坐標(biāo),而未對(duì)游戲的狀態(tài)產(chǎn)生影響,因此可以將這些鼠標(biāo)移動(dòng)的事件歸為冗余事件,所以預(yù)設(shè)優(yōu)化條件中包含多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件的情況。由此可知,當(dāng)終端檢測(cè)到鍵鼠腳本中存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件時(shí),會(huì)確定該多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件相匹配。

需要說(shuō)明的是,對(duì)于鼠標(biāo)的移動(dòng)操作,雖然在用戶看來(lái)是一次連續(xù)的移動(dòng)過(guò)程,但是對(duì)于終端而言,一次鼠標(biāo)移動(dòng)過(guò)程是由成百上千個(gè)離散點(diǎn)所組成的近似連續(xù)的移動(dòng)操作。因此,在進(jìn)行鍵鼠腳本錄制時(shí),終端會(huì)記錄下成百上千個(gè)事件(每個(gè)事件都記錄有鼠標(biāo)移動(dòng)的事件類型,以及對(duì)應(yīng)離散點(diǎn)的坐標(biāo)信息),所以鼠標(biāo)的移動(dòng)操作對(duì)鍵鼠腳本數(shù)據(jù)量的占用較大,如果判斷出在進(jìn)行鼠標(biāo)移動(dòng)的同時(shí),沒(méi)有附加其他操作(如按住鼠標(biāo)左鍵移動(dòng)鼠標(biāo),按住鍵盤上的按鍵移動(dòng)鼠標(biāo)等),而只是單獨(dú)進(jìn)行鼠標(biāo)移動(dòng),那么終端就將這樣的鼠標(biāo)移動(dòng)操作所對(duì)應(yīng)的多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件刪除,從而可以在不影響鍵鼠腳本的回放狀態(tài)的前提下,降低鍵鼠腳本的數(shù)據(jù)量。

示例性的,鍵鼠腳本中的事件依次為按鍵Q按下事件、按鍵Q放開(kāi)事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)移動(dòng)事件、按鍵回車按下事件、按鍵回車放開(kāi)事件,則終端可以檢測(cè)到該鍵鼠腳本中存在連續(xù)的3個(gè)鼠標(biāo)移動(dòng)事件。因此,終端可以確定該連續(xù)的3個(gè)鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件匹配,從而將這3個(gè)鼠標(biāo)移動(dòng)事件定為冗余事件,并將其做刪除處理。

進(jìn)一步的,當(dāng)將鍵鼠腳本中所有的多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件刪除之后,在鍵鼠腳本回放的過(guò)程中,會(huì)出現(xiàn)操作焦點(diǎn)瞬間從一個(gè)點(diǎn)轉(zhuǎn)移到另一個(gè)相距較遠(yuǎn)的點(diǎn),而沒(méi)有用戶在錄制過(guò)程中的鼠標(biāo)慢慢移動(dòng)的焦點(diǎn)軌跡。然而用戶進(jìn)行鼠標(biāo)移動(dòng),往往是為了改變操作焦點(diǎn)的坐標(biāo),從而進(jìn)一步點(diǎn)擊鼠標(biāo)或者鍵盤上的鍵,進(jìn)而改變游戲狀態(tài)。因此,為了保留用戶的正常鼠標(biāo)移動(dòng)操作,需要對(duì)第一種情況進(jìn)行改進(jìn),以防止在“剔除”無(wú)用鼠標(biāo)移動(dòng)操作的同時(shí),誤將正常的鼠標(biāo)移動(dòng)操作刪除,具體的,該改進(jìn)方案如下:

檢測(cè)多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔是否大于第一預(yù)設(shè)時(shí)間閾值。若多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔大于第一預(yù)設(shè)時(shí)間閾值,則確定多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè) 優(yōu)化條件匹配。

其中,第一預(yù)設(shè)時(shí)間閾值可以為后臺(tái)統(tǒng)計(jì)的應(yīng)用操作的最長(zhǎng)時(shí)間閾值。

實(shí)際應(yīng)用中,當(dāng)用戶無(wú)意間移動(dòng)了鼠標(biāo),或者隨意移動(dòng)鼠標(biāo)后,往往并無(wú)進(jìn)行下一步操作的目的和意愿,最后一個(gè)鼠標(biāo)移動(dòng)事件與下一個(gè)操作事件之間的時(shí)間間隔會(huì)遠(yuǎn)遠(yuǎn)大于正常操作事件之間的時(shí)間間隔,因此可以通過(guò)這一特點(diǎn)對(duì)無(wú)用的鼠標(biāo)移動(dòng)操作和正常的鼠標(biāo)移動(dòng)操作進(jìn)行區(qū)分。例如,用戶在觸發(fā)鼠標(biāo)移動(dòng)操作后,未立即進(jìn)行鼠標(biāo)點(diǎn)擊操作或者鍵盤上的按鍵操作,說(shuō)明用戶并不是為了進(jìn)行下一步的點(diǎn)擊而進(jìn)行了鼠標(biāo)移動(dòng)的操作,所以這些由于用戶無(wú)目的地移動(dòng)鼠標(biāo)而記錄在鍵鼠腳本中的鼠標(biāo)移動(dòng)事件可以被歸為冗余事件。因此,預(yù)設(shè)優(yōu)化條件中包含在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件后長(zhǎng)時(shí)間未出現(xiàn)其他類型事件的情況。由此可知,當(dāng)終端檢測(cè)到多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔大于第一預(yù)設(shè)時(shí)間閾值時(shí),可以確定該多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件匹配,并將該多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件歸為冗余事件,從而將其刪除,以減小鍵鼠腳本的數(shù)據(jù)量。

示例性的,鍵鼠腳本中的事件以及事件間隔依次為按鍵C按下事件、100ms、按鍵C放開(kāi)事件、5s、鼠標(biāo)移動(dòng)事件、50ms、鼠標(biāo)移動(dòng)事件、50ms、鼠標(biāo)移動(dòng)事件、50ms、鼠標(biāo)移動(dòng)事件、5min、鍵盤按鍵向右鍵按下事件、40ms、鍵盤按鍵向右鍵按下事件、40ms、鍵盤按鍵向右鍵按下事件、90ms、鍵盤按鍵向右鍵放開(kāi)事件。若第一預(yù)設(shè)時(shí)間閾值為4min,則終端可以檢測(cè)到4個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中第四個(gè)鼠標(biāo)移動(dòng)事件之后的時(shí)間間隔大于4min,由此可以確定該4個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件匹配,并將其確定為冗余事件,從而對(duì)冗余事件做刪除處理,使鍵鼠腳本得到進(jìn)一步優(yōu)化。

進(jìn)一步的,在鍵鼠腳本錄制的過(guò)程中,常常出現(xiàn)用戶一不小心壓在鍵盤上,使鍵盤上的按鍵持續(xù)處于按下?tīng)顟B(tài),而這些鍵的按下并未導(dǎo)致改變回放狀態(tài)等問(wèn)題。雖然這些鍵被長(zhǎng)時(shí)間按下,卻未改變回放狀態(tài),但是這些按下與放開(kāi)的操作也會(huì)記錄在鍵鼠腳本中,鍵鼠腳本在回放過(guò)程中也會(huì)重復(fù)這些操作。因此,這些未對(duì)回放狀態(tài)產(chǎn)生影響的長(zhǎng)按操作所對(duì)應(yīng)的事 件可以被歸為冗余事件。由此可知,預(yù)設(shè)優(yōu)化條件中包括未對(duì)回放狀態(tài)產(chǎn)生影響的長(zhǎng)按操作的情況。其具體檢測(cè)方式如下述第二種情況:

第二種情況:檢測(cè)多個(gè)連續(xù)的相同按下事件中相鄰事件之間的時(shí)間間隔之和是否大于第二預(yù)設(shè)時(shí)間閾值。若時(shí)間間隔之和大于第二預(yù)設(shè)時(shí)間閾值,則確定多個(gè)連續(xù)的相同按下事件與預(yù)設(shè)優(yōu)化條件匹配。

其中,第二預(yù)設(shè)時(shí)間閾值可以為應(yīng)用開(kāi)發(fā)商提供的應(yīng)用操作的最長(zhǎng)時(shí)間閾值,也可以為后臺(tái)統(tǒng)計(jì)的應(yīng)用操作的最長(zhǎng)時(shí)間閾值。

需要說(shuō)明的是,與鼠標(biāo)移動(dòng)類似,長(zhǎng)按操作對(duì)于用戶來(lái)說(shuō)感覺(jué)是一個(gè)操作,但是實(shí)際上,長(zhǎng)按操作在終端記錄了多個(gè)連續(xù)的相同按下事件。因此,在計(jì)算長(zhǎng)按操作的時(shí)長(zhǎng)時(shí),需要將該多個(gè)連續(xù)的相同按下事件中相鄰事件間的時(shí)間間隔進(jìn)行相加,以獲得產(chǎn)生該多個(gè)連續(xù)的相同按下事件的總時(shí)長(zhǎng)。

當(dāng)長(zhǎng)按按鍵的時(shí)間超過(guò)了應(yīng)用開(kāi)發(fā)商提供的應(yīng)用操作的最長(zhǎng)時(shí)間閾值,或者后臺(tái)統(tǒng)計(jì)的應(yīng)用操作的最長(zhǎng)時(shí)間閾值時(shí),可以確定該長(zhǎng)按操作為非正常情況下進(jìn)行的長(zhǎng)按操作。因此,當(dāng)終端檢測(cè)到多個(gè)連續(xù)的相同按下事件中相鄰事件之間的時(shí)間間隔之和大于第二預(yù)設(shè)時(shí)間閾值時(shí),可以確定多個(gè)連續(xù)的相同按下事件與預(yù)設(shè)優(yōu)化條件匹配,并將其歸為冗余事件,從而將其刪除,以減小鍵鼠腳本的數(shù)據(jù)量。

示例性的,鍵鼠腳本中有1001個(gè)連續(xù)按鍵A按下事件,相鄰事件的時(shí)間間隔均為100ms。當(dāng)?shù)诙A(yù)設(shè)時(shí)間閾值為60s時(shí),由于1001個(gè)連續(xù)按鍵A按下事件的時(shí)間間隔之和為1000*100=100000ms=100s,大于60s,所以該1001個(gè)連續(xù)按鍵A按下事件為與預(yù)設(shè)優(yōu)化條件匹配的事件集合。因此可以將該1001個(gè)連續(xù)按鍵A按下事件歸為冗余事件,將其刪除。

實(shí)際應(yīng)用中,可以將游戲設(shè)計(jì)中涉及的按鍵的最大長(zhǎng)按時(shí)長(zhǎng)作為第二預(yù)設(shè)時(shí)間閾值使用,該最大長(zhǎng)按時(shí)長(zhǎng)可以由游戲開(kāi)發(fā)商提供,也可以由游戲服務(wù)商后臺(tái)統(tǒng)計(jì)得出,并寫入到終端的配置文件(例如:***.dll文件)中。

需要說(shuō)明的是,上述方案中的涉及的長(zhǎng)按按鍵情況,是基于對(duì)回放狀態(tài)無(wú)影響的基礎(chǔ)之上的,因此,在將上述長(zhǎng)按按鍵對(duì)應(yīng)的多個(gè)連續(xù)相同的 按下事件進(jìn)行刪除前,需要先判斷該按下事件是否為對(duì)回放狀態(tài)無(wú)影響的按鍵所觸發(fā)的事件。當(dāng)該按下事件為對(duì)回放狀態(tài)無(wú)影響的按鍵所觸發(fā)的事件時(shí),才可將其刪除。對(duì)于判斷是否為對(duì)回放狀態(tài)無(wú)影響的按鍵所觸發(fā)的事件的具體實(shí)現(xiàn)方式如下述第三種情況:

第三種情況:檢測(cè)鍵鼠腳本中是否存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件。若鍵鼠腳本中存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件,則確定預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件與預(yù)設(shè)優(yōu)化條件匹配。

其中,預(yù)設(shè)按鍵可以為應(yīng)用開(kāi)發(fā)商提供的用于觸發(fā)應(yīng)用操作的按鍵,也可以為后臺(tái)統(tǒng)計(jì)的用于觸發(fā)應(yīng)用操作的按鍵。實(shí)際應(yīng)用中,預(yù)設(shè)按鍵信息可以被預(yù)先寫入到終端的配置文件中。

由于游戲開(kāi)發(fā)商在開(kāi)發(fā)游戲時(shí),往往會(huì)設(shè)置固定的若干按鍵(包括鍵盤或鼠標(biāo)上的按鍵),進(jìn)行游戲的編輯操作,而其他按鍵并不起作用。在游戲鍵鼠腳本錄制過(guò)程中,用戶往往會(huì)有意或無(wú)意按一些預(yù)設(shè)按鍵以外的按鍵,雖然針對(duì)這些按鍵的操作并不會(huì)對(duì)游戲狀態(tài)產(chǎn)生改變,但仍然被記錄在鍵鼠腳本當(dāng)中,因此,這些預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件可以被歸為冗余事件。由此可知,預(yù)設(shè)優(yōu)化條件中包括預(yù)設(shè)按鍵以外的按鍵觸發(fā)事件的情況。

具體的,終端可以對(duì)每一個(gè)預(yù)設(shè)按鍵觸發(fā)的事件做預(yù)設(shè)按鍵的標(biāo)記。當(dāng)終端檢測(cè)到當(dāng)前事件未攜帶預(yù)設(shè)按鍵標(biāo)記時(shí),可以確定該當(dāng)前事件為預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件,并且可以確定該事件與預(yù)設(shè)優(yōu)化條件匹配;當(dāng)終端檢測(cè)到當(dāng)前事件攜帶預(yù)設(shè)按鍵標(biāo)記時(shí),可以確定當(dāng)前事件是預(yù)設(shè)按鍵所觸發(fā)的事件,則繼續(xù)對(duì)下一事件進(jìn)行檢測(cè)。

需要說(shuō)明的是,上述第三種情況的方案,不僅可以實(shí)現(xiàn)對(duì)第二種情況中的多個(gè)相同按下事件的判斷,還可以實(shí)現(xiàn)對(duì)鍵鼠腳本中的其他任何事件的判斷,從而將鍵鼠腳本中的所有預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件都檢測(cè)出來(lái),并做進(jìn)一步處理。

進(jìn)一步的,當(dāng)用戶對(duì)游戲窗口進(jìn)行鍵鼠腳本錄制時(shí),可能還會(huì)對(duì)其他窗口進(jìn)行操作,然而由于在鍵鼠錄制過(guò)程中,終端僅針對(duì)鍵盤或者鼠標(biāo)觸發(fā)的操作進(jìn)行錄制,而不區(qū)分窗口,所以也會(huì)將用戶對(duì)其他窗口的操作錄 制進(jìn)去,并且也會(huì)在鍵鼠腳本回放中回放這些操作。

例如,用戶在進(jìn)行游戲的鍵鼠腳本錄制過(guò)程中,在某一時(shí)刻,用戶點(diǎn)擊了聊天軟件的圖標(biāo),并且找到一個(gè)叫張三的好友,向他發(fā)送了一個(gè)消息“周末一起出去玩吧!”。因此,在該聊天軟件的圖標(biāo)位置不變的情況下,在鍵鼠腳本中的同一時(shí)刻,鼠標(biāo)會(huì)如錄制過(guò)程一樣,點(diǎn)擊聊天軟件的圖標(biāo),并向張三發(fā)送相同的消息。而這種情況往往會(huì)對(duì)用戶造成影響,因此,這些對(duì)其他窗口的操作所對(duì)應(yīng)的事件可以被歸為冗余事件。由此可知,預(yù)設(shè)優(yōu)化條件中包括對(duì)其他窗口進(jìn)行操作的情況。判斷是否有對(duì)應(yīng)其他窗口的事件的具體實(shí)現(xiàn)方式如下述第四種情況:

第四種情況:從事件中讀取操作焦點(diǎn)的坐標(biāo),并判斷坐標(biāo)是否位于目標(biāo)窗口中。若坐標(biāo)不位于目標(biāo)窗口中,則確定不位于目標(biāo)窗口的坐標(biāo)對(duì)應(yīng)的事件與預(yù)設(shè)優(yōu)化條件匹配。

如上述步驟101中所述,鍵鼠腳本中的每個(gè)事件均攜帶關(guān)于操作焦點(diǎn)的坐標(biāo)的信息,所以可以先獲取目標(biāo)窗口的坐標(biāo)范圍,然后從鍵鼠腳本的各個(gè)事件中讀取操作焦點(diǎn)的坐標(biāo)。通過(guò)將讀取事件的操作焦點(diǎn)的坐標(biāo)與目標(biāo)窗口的坐標(biāo)范圍相匹配,來(lái)判斷讀取的事件的操作焦點(diǎn)的坐標(biāo)是否位于目標(biāo)窗口。當(dāng)讀取的事件的操作焦點(diǎn)的坐標(biāo)不位于目標(biāo)窗口的坐標(biāo)范圍內(nèi)時(shí),終端確定不位于目標(biāo)窗口的坐標(biāo)對(duì)應(yīng)的事件與預(yù)設(shè)優(yōu)化條件匹配。

203、若鍵鼠腳本中存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合,則確定與預(yù)設(shè)優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將冗余事件刪除。

由于在步驟202中提到預(yù)設(shè)優(yōu)化條件為終端預(yù)設(shè)的用于判斷是否為冗余事件的策略,所以與預(yù)設(shè)優(yōu)化條件相匹配的事件為冗余事件。當(dāng)檢測(cè)到鍵鼠腳本中存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合時(shí),將這些與預(yù)設(shè)優(yōu)化條件相匹配的事件集合中的事件確定為冗余事件,并將所有冗余事件進(jìn)行刪除處理,以減小鍵鼠腳本的數(shù)據(jù)量。

進(jìn)一步的,由于鍵鼠腳本中除了記錄各個(gè)事件外,還記錄了相鄰事件之間的時(shí)間間隔,所以當(dāng)對(duì)所有的冗余事件進(jìn)行刪除處理后,會(huì)出現(xiàn)多個(gè)連續(xù)時(shí)間間隔的情況。又由于終端在執(zhí)行鍵鼠腳本時(shí),只是根據(jù)鍵鼠腳本中記錄的時(shí)間間隔的時(shí)長(zhǎng)進(jìn)行暫停,而依次執(zhí)行多個(gè)連續(xù)的時(shí)間間隔,與 直接執(zhí)行一個(gè)時(shí)長(zhǎng)與所有時(shí)間間隔的時(shí)長(zhǎng)之和相等的時(shí)間間隔效果相同,即所暫停的時(shí)間長(zhǎng)短是一樣的。然而,每個(gè)時(shí)間間隔會(huì)分別占用一定的存儲(chǔ)空間,所以為了減小鍵鼠腳本的數(shù)據(jù)量,可以將多個(gè)連續(xù)的時(shí)間間隔合并為一個(gè)時(shí)間間隔。

示例性的,將冗余事件刪除后,鍵鼠腳本中有10個(gè)連續(xù)的時(shí)間間隔,其數(shù)值分別為100ms、1s、100ms、100ms、10s、50ms、50ms、2s、40ms、60ms,所以將這10個(gè)數(shù)值整個(gè)為1個(gè)數(shù)值后的值為13.5s。若這10個(gè)時(shí)間間隔分別占用一個(gè)字節(jié)的存儲(chǔ)空間,則總共占用10個(gè)字節(jié)的存儲(chǔ)空間,然而將這10個(gè)時(shí)間間隔整合為1個(gè)時(shí)間間隔后,所占用的存儲(chǔ)空間僅為一個(gè)字節(jié),從而減小了鍵鼠腳本的數(shù)據(jù)量,節(jié)省了鍵鼠腳本在終端中的存儲(chǔ)空間。

204、檢測(cè)當(dāng)前事件之后是否缺少與當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件。

在上述實(shí)施例中提到,缺少放開(kāi)事件會(huì)影響鍵鼠腳本的回放狀態(tài),甚至影響系統(tǒng)的正常運(yùn)行,因此保證每個(gè)按下事件之后均有對(duì)應(yīng)的放開(kāi)事件是必要的,從而需要檢測(cè)當(dāng)前事件之后是否缺少與當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件。

需要說(shuō)明的是,實(shí)際應(yīng)用中,當(dāng)前事件可能是按下事件,也可能是放開(kāi)事件,也可能是鼠標(biāo)移動(dòng)事件和鼠標(biāo)滾輪滾動(dòng)事件。當(dāng)當(dāng)前事件為鼠標(biāo)移動(dòng)事件或者鼠標(biāo)滾輪滾動(dòng)事件時(shí),直接繼續(xù)檢測(cè)下一事件。當(dāng)當(dāng)前事件為按下事件時(shí),對(duì)應(yīng)該當(dāng)前事件的放開(kāi)事件為與當(dāng)前事件操作相反的事件;而當(dāng)當(dāng)前事件為放開(kāi)事件時(shí),對(duì)應(yīng)該當(dāng)前事件的放開(kāi)事件為該當(dāng)前事件本身。例如,若當(dāng)前事件為按鍵M按下事件,則對(duì)應(yīng)該當(dāng)前事件的放開(kāi)事件為按鍵M放開(kāi)事件;若當(dāng)前事件為按鍵M放開(kāi)事件,則對(duì)應(yīng)該當(dāng)前事件的放開(kāi)事件為按鍵M放開(kāi)事件。

實(shí)際應(yīng)用中,終端每執(zhí)行一個(gè)按下事件和與其對(duì)應(yīng)的放開(kāi)事件,就可以完成一次按鍵的模擬操作,而當(dāng)在放開(kāi)事件之后重復(fù)添加相同的放開(kāi)事件時(shí),對(duì)按鍵的模擬操作并無(wú)影響,因?yàn)楸痉桨钢?,只要保證一個(gè)按鍵在按下之后一定可以放開(kāi),即按下事件之后一定存在放開(kāi)事件,而無(wú)需限制放開(kāi)事件的數(shù)量。因此在添加放開(kāi)事件時(shí),無(wú)需對(duì)當(dāng)前事件的事件類型進(jìn) 行判斷。

進(jìn)一步的,為了避免當(dāng)前事件為放開(kāi)事件時(shí),也對(duì)其后的事件進(jìn)行檢測(cè),而降低對(duì)鍵鼠腳本的檢測(cè)速度,對(duì)上述方案進(jìn)行如下改進(jìn):

在檢測(cè)當(dāng)前事件之后是否缺少與當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件前,先檢測(cè)當(dāng)前事件是否為按下事件。若當(dāng)前事件為按下事件,則再繼續(xù)檢測(cè)當(dāng)前事件之后是否缺少放開(kāi)事件;若當(dāng)前事件為放開(kāi)事件,則不再對(duì)當(dāng)前事件之后的事件進(jìn)行檢測(cè),而直接對(duì)與當(dāng)前事件相鄰的下一事件進(jìn)行按下事件的檢測(cè),并判斷后續(xù)是否需要進(jìn)行有無(wú)放開(kāi)事件的檢測(cè),進(jìn)而進(jìn)行相應(yīng)的后續(xù)操作。

需要說(shuō)明的是,無(wú)論是否需要進(jìn)行按下事件的判斷,當(dāng)對(duì)當(dāng)前事件之后的事件進(jìn)行檢測(cè)時(shí),該檢測(cè)范圍都可以為僅針對(duì)與當(dāng)前事件相鄰的下一事件進(jìn)行檢測(cè),也可以在與當(dāng)前事件相鄰的若干事件中進(jìn)行檢測(cè),也可以在當(dāng)前事件之后的所有事件內(nèi)進(jìn)行檢測(cè)。下面針對(duì)以下兩種檢測(cè)方式進(jìn)行介紹:

方式一:檢測(cè)當(dāng)前事件之后的所有事件中是否缺少放開(kāi)事件。

終端遍歷當(dāng)前事件之后的所有事件,檢測(cè)是否缺少對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件。這種對(duì)于當(dāng)前事件之后的所有事件進(jìn)行遍歷檢測(cè)的方式,可以防止事件檢測(cè)遺漏現(xiàn)象的產(chǎn)生。

在實(shí)際應(yīng)用中,除了長(zhǎng)按某一按鍵外,用戶對(duì)鍵盤或者鼠標(biāo)的點(diǎn)擊往往是瞬間按下、瞬間放開(kāi),因此鍵鼠腳本中錄制的用戶對(duì)鍵盤或鼠標(biāo)的點(diǎn)擊操作,往往是將一個(gè)按鍵按下事件與該按鍵的放開(kāi)事件進(jìn)行相鄰記錄,所以為了減少檢測(cè)時(shí)間,可以采用以下方式二進(jìn)行檢測(cè)。

方式二:檢測(cè)與當(dāng)前事件相鄰的下一事件是否為放開(kāi)事件。

若與當(dāng)前事件相鄰的下一事件是對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件,則終端繼續(xù)檢測(cè)與當(dāng)前事件相鄰的下一事件的下一事件是否有對(duì)應(yīng)的放開(kāi)事件;若與當(dāng)前事件相鄰的下一事件不是對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件,則在當(dāng)前事件之后添加放開(kāi)事件。

205、若當(dāng)前事件之后缺少與當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件,則在當(dāng)前事件之后添加放開(kāi)事件。

若當(dāng)前事件之后缺少與當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件,則有可能對(duì)鍵鼠腳本的回放產(chǎn)生影響,甚至導(dǎo)致Windows出現(xiàn)異常,因此應(yīng)該在當(dāng)前事件之后添加對(duì)應(yīng)的放開(kāi)事件以保證終端的正常運(yùn)行。

由于無(wú)論對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件位于哪個(gè)位置,只要位于當(dāng)前事件之后,都不會(huì)對(duì)回放結(jié)果或系統(tǒng)產(chǎn)生影響,所以在當(dāng)前事件之后添加放開(kāi)事件的具體實(shí)現(xiàn)方式可以為在當(dāng)前事件與下一事件之間添加放開(kāi)事件,可以為在當(dāng)前事件之后的所有事件中,任意兩個(gè)事件之間添加放開(kāi)事件,還可以為在當(dāng)前事件之后的所有事件之后添加放開(kāi)事件,本實(shí)施例不對(duì)放開(kāi)事件的具體添加位置進(jìn)行限定。下面對(duì)不同的添加方式進(jìn)行介紹:

第一種方式:在當(dāng)前事件之后、與當(dāng)前事件相鄰的下一事件之前,添加放開(kāi)事件。

一般性的,由于每個(gè)事件和與其對(duì)應(yīng)的放開(kāi)事件往往是相鄰記錄的,所以為了與鍵鼠腳本錄制過(guò)程中的事件的順序相一致,可以在當(dāng)前事件之后、與當(dāng)前事件相鄰的下一事件之前,添加放開(kāi)事件。

在實(shí)際應(yīng)用中,用戶常常會(huì)長(zhǎng)按鍵盤或鼠標(biāo)上的按鍵,而對(duì)于長(zhǎng)按按鍵的情況,終端會(huì)在鍵鼠腳本中記錄多個(gè)連續(xù)相同的按下事件,例如,當(dāng)用戶長(zhǎng)按按鍵空格x秒時(shí),計(jì)算機(jī)會(huì)記錄y個(gè)連續(xù)相同的按鍵空格按下事件。因此為了避免終端對(duì)多個(gè)連續(xù)相同的事件一一進(jìn)行檢測(cè),并多次添加相同的放開(kāi)事件,而造成鍵鼠腳本回放緩慢,可以采用如下方式進(jìn)行放開(kāi)事件的添加:

第二種方式:檢測(cè)與當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件是否均與當(dāng)前事件相同。若與當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件均與當(dāng)前事件相同,則在連續(xù)至少一個(gè)事件中的最后一個(gè)事件之后,添加放開(kāi)事件;若與當(dāng)前事件相鄰的下一事件與當(dāng)前事件不同,則在當(dāng)前事件之后添加放開(kāi)事件。

示例性的,鍵鼠腳本中記錄的事件依次為按鍵W按下事件、按鍵W放開(kāi)事件、按鍵Y按下事件、按鍵Y按下事件、按鍵Y按下事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)移動(dòng)事件、按鍵U按下事件、按鍵U放開(kāi)事件。若當(dāng)前事件為第一個(gè)按鍵Y按下事件,則在檢測(cè)到當(dāng)前事件之后缺少對(duì)應(yīng)的放開(kāi)事件后,終端繼續(xù)檢測(cè)與當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件是否均 與當(dāng)前事件相同。檢測(cè)結(jié)果為與當(dāng)前事件相鄰的連續(xù)兩個(gè)事件與當(dāng)前事件相同,因此終端在與當(dāng)前事件相鄰的連續(xù)兩個(gè)事件中的第二個(gè)事件之后添加按鍵Y放開(kāi)事件。

第三種方式:在所有事件之后添加放開(kāi)事件。

由于只要每一個(gè)按下事件之后存在對(duì)應(yīng)的放開(kāi)事件,就不影響鍵鼠腳本的回放結(jié)果,所以為了將鍵鼠腳本中已有的事件與添加的放開(kāi)事件區(qū)分開(kāi),可以在鍵鼠腳本中的所有事件之后添加放開(kāi)事件,使得鍵鼠腳本中的最后一個(gè)事件之前均為已有的、未做添加的事件,使得鍵鼠腳本中的最后一個(gè)事件之后均為添加的事件。

在這種添加的事件均位于鍵鼠腳本中的已有事件之后的方式下,對(duì)于相鄰或者不相鄰的若干相同的事件均不存在對(duì)應(yīng)的放開(kāi)事件時(shí),只要對(duì)該若干相同的事件中的第一個(gè)事件添加了對(duì)應(yīng)的放開(kāi)事件,那么其他事件之后便均有對(duì)應(yīng)的放開(kāi)事件,因此,避免了重復(fù)添加放開(kāi)事件的情況。

進(jìn)一步的,在實(shí)際應(yīng)用中,用戶常常需要使用一些組合鍵來(lái)完成必要的操作,如用戶按下按鍵Ctrl后不放開(kāi),再按按鍵X,完成剪切的操作,而這個(gè)剪切操作在計(jì)算機(jī)中依次記錄了按鍵Ctrl按下事件、按鍵X按下事件,在按鍵X按下事件之后才記錄按鍵Ctrl放開(kāi)事件和按鍵X放開(kāi)事件,因此,當(dāng)檢測(cè)到按鍵Ctrl按下事件之后不存在按鍵Ctrl放開(kāi)事件時(shí),在按鍵Ctrl按下事件與按鍵X按下事件之間添加按鍵Ctrl放開(kāi)事件,則會(huì)使得剪切的功能失效,因此為了進(jìn)一步優(yōu)化鍵鼠腳本,使其在避免產(chǎn)生Windows異常的基礎(chǔ)上,保證鍵鼠腳本回放結(jié)果不變,可以采用如下第四種方式進(jìn)行操作:

第四種方式:檢測(cè)當(dāng)前事件是否為事件組合中的事件。若當(dāng)前事件為事件組合中的事件,則在事件組合中的最后一個(gè)事件之后,添加對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件;若當(dāng)前事件不是事件組合中的事件,則在當(dāng)前事件之后添加對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件。

其中,事件組合由觸發(fā)組合鍵所產(chǎn)生的多個(gè)事件組成,事件組合包括按鍵Ctrl事件、按鍵Alt事件、按鍵Shift事件、按鍵Fn事件。由于組合鍵是由按鍵Ctrl、按鍵Alt、按鍵Shift、按鍵Fn等特殊按鍵與鍵盤上的其他 字母等普通按鍵組成的,所以事件組合中還包括字母按鍵等其他按鍵的對(duì)應(yīng)事件。

當(dāng)檢測(cè)到當(dāng)前事件為事件組合中的事件時(shí),在事件組合中的最后一個(gè)事件之后,添加對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件,可以保證該事件組合觸發(fā)的組合鍵的特殊功能不被破壞。

示例性的,鍵鼠腳本中記錄的事件依次為按鍵O按下事件、按鍵O放開(kāi)事件、按鍵Ctrl按下事件、按鍵C按下事件、按鍵C放開(kāi)事件、按鍵M按下事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)移動(dòng)事件、按鍵回車按下事件、按鍵回車放開(kāi)事件。若當(dāng)前事件為按鍵Ctrl按下事件,則可以檢測(cè)到在按鍵Ctrl按下事件之后缺少按鍵Ctrl放開(kāi)事件,而按鍵Ctrl與按鍵C又為組合鍵,事件組合中的事件有按鍵Ctrl按下事件、按鍵C按下事件、按鍵C放開(kāi)事件,因此為避免破壞組合鍵按鍵Ctrl與按鍵C組合產(chǎn)生的復(fù)制功能,終端在事件組合中的最后一個(gè)事件(即按鍵C放開(kāi)事件)之后添加按鍵Ctrl放開(kāi)事件;若當(dāng)前事件為按鍵M按下事件,則可以檢測(cè)到按鍵M按下事件之后缺少按鍵M放開(kāi)事件,且按鍵M按下事件不是事件組合中的事件,所以在按鍵M按下事件之后添加按鍵M放開(kāi)事件。

可選的,在實(shí)際應(yīng)用中,用戶在使用組合鍵時(shí),往往對(duì)后按下的按鍵先放開(kāi),對(duì)先按下的按鍵后放開(kāi),例如,用戶使用按鍵Ctrl、按鍵C實(shí)現(xiàn)復(fù)制功能時(shí),往往是先按下按鍵Ctrl,在按住按鍵Ctrl的過(guò)程中,再按下按鍵C;而在放開(kāi)按鍵時(shí),往往是先放開(kāi)按鍵C,再放開(kāi)按鍵Ctrl。因此為了與用戶使用按鍵的順序一致,對(duì)上述第四種方式做如下改進(jìn):

若當(dāng)前事件為事件組合中的事件,則在檢測(cè)到當(dāng)前事件之后缺少放開(kāi)事件后,繼續(xù)檢測(cè)當(dāng)前事件之后的事件組合中的事件之后是否缺少對(duì)應(yīng)的放開(kāi)事件。若缺少對(duì)應(yīng)的放開(kāi)事件,則在事件組合中的最后一個(gè)事件之后,按照事件組合中事件的順序反向添加放開(kāi)事件;若不缺少對(duì)應(yīng)的放開(kāi)事件,則在事件組合中的最后一個(gè)事件之后,添加對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件。

示例性的,鍵鼠腳本中記錄的事件依次為按鍵J按下事件、按鍵J放開(kāi)事件、按鍵Ctrl按下事件、按鍵C按下事件、按鍵X按下事件、按鍵X放 開(kāi)事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)移動(dòng)事件、鼠標(biāo)左鍵按下事件、鼠標(biāo)左鍵放開(kāi)事件。若當(dāng)前事件為按鍵Ctrl按下事件,則在檢測(cè)到按鍵Ctrl按下事件之后缺少按鍵Ctrl放開(kāi)事件后,繼續(xù)檢測(cè)到按鍵C按下事件之后缺少按鍵C放開(kāi)事件。因此,在按鍵C按下事件之后按事件順序反向添加放開(kāi)事件,即依次添加按鍵C放開(kāi)事件、按鍵Ctrl放開(kāi)事件,以使得事件在鍵鼠腳本中的順序與用戶的操作順序保持一致。

需要說(shuō)明的是,對(duì)于上述不同的添加放開(kāi)事件的方式,在添加對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件之后,終端會(huì)對(duì)該添加的放開(kāi)事件做添加標(biāo)記,以區(qū)分已有的鍵鼠腳本中的事件和添加的事件。該標(biāo)記與上述事件類型、操作焦點(diǎn)的坐標(biāo)等信息的存儲(chǔ)形式相同,均可能占用一位、一個(gè)字節(jié),或者多個(gè)字節(jié)的存儲(chǔ)空間。當(dāng)檢測(cè)到當(dāng)前事件具有添加標(biāo)記時(shí),終端直接對(duì)下一事件以及下一事件之后的事件進(jìn)行檢測(cè),而不再對(duì)當(dāng)前事件之后的事件進(jìn)行檢測(cè)。

206、保存處理后的鍵鼠腳本。

本步驟與上述步驟106所述的保存處理后的鍵鼠腳本的內(nèi)容一致,在此不再贅述。

進(jìn)一步的,作為對(duì)上述各實(shí)施例的實(shí)現(xiàn),本發(fā)明實(shí)施例還提供了一種鍵鼠腳本處理的裝置,如圖3所示,該裝置包括:獲取單元31、檢測(cè)單元32、刪除單元33、添加單元34和保存單元35。其中,

獲取單元31,用于獲取待執(zhí)行的鍵鼠腳本;

檢測(cè)單元32,用于檢測(cè)獲取單元31獲取的鍵鼠腳本中是否存在冗余事件,冗余事件為對(duì)鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;

刪除單元33,用于當(dāng)檢測(cè)單元32檢測(cè)到鍵鼠腳本中存在冗余事件時(shí),將冗余事件刪除;

檢測(cè)單元32,還用于檢測(cè)鍵鼠腳本中是否缺少必要事件,必要事件為應(yīng)當(dāng)記錄在鍵鼠腳本中的事件;

添加單元34,用于當(dāng)檢測(cè)單元32檢測(cè)到鍵鼠腳本中缺少必要事件時(shí),添加必要事件;

保存單元35,用于保存處理后的鍵鼠腳本。

進(jìn)一步的,檢測(cè)單元32,用于判斷獲取單元31獲取的鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合;

刪除單元33,用于當(dāng)檢測(cè)單元32檢測(cè)到鍵鼠腳本中存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合時(shí),確定與預(yù)設(shè)優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將冗余事件刪除。

進(jìn)一步的,如圖4所示,檢測(cè)單元32,包括:

第一檢測(cè)模塊321,用于檢測(cè)鍵鼠腳本中是否存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件;

第一確定模塊322,用于當(dāng)?shù)谝粰z測(cè)模塊321檢測(cè)到鍵鼠腳本中存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件時(shí),確定多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件匹配。

第一檢測(cè)模塊321,還用于在確定多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件匹配之前,檢測(cè)多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔是否大于第一預(yù)設(shè)時(shí)間閾值;

第一確定模塊322,還用于當(dāng)?shù)谝粰z測(cè)模塊321檢測(cè)到多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔大于第一預(yù)設(shè)時(shí)間閾值時(shí),確定多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與預(yù)設(shè)優(yōu)化條件匹配。

第二檢測(cè)模塊323,用于檢測(cè)多個(gè)連續(xù)的相同按下事件中相鄰事件之間的時(shí)間間隔之和是否大于第二預(yù)設(shè)時(shí)間閾值;

第二確定模塊324,用于當(dāng)?shù)诙z測(cè)模塊323檢測(cè)到時(shí)間間隔之和大于第二預(yù)設(shè)時(shí)間閾值時(shí),確定多個(gè)連續(xù)的相同按下事件與預(yù)設(shè)優(yōu)化條件匹配。

第二檢測(cè)模塊323使用的第二預(yù)設(shè)時(shí)間閾值為應(yīng)用開(kāi)發(fā)商提供的應(yīng)用操作的最長(zhǎng)時(shí)間閾值,或者為后臺(tái)統(tǒng)計(jì)的應(yīng)用操作的最長(zhǎng)時(shí)間閾值。

第三檢測(cè)模塊325,用于檢測(cè)鍵鼠腳本中是否存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件;

第三確定模塊326,用于當(dāng)?shù)谌龣z測(cè)模塊325檢測(cè)到鍵鼠腳本中存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件時(shí),確定預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件與預(yù)設(shè)優(yōu)化條件匹配。

第三檢測(cè)模塊325使用的預(yù)設(shè)按鍵為應(yīng)用開(kāi)發(fā)商提供的用于觸發(fā)應(yīng)用 操作的按鍵,或者為后臺(tái)統(tǒng)計(jì)的用于觸發(fā)應(yīng)用操作的按鍵。

讀取模塊327,用于從事件中讀取操作焦點(diǎn)的坐標(biāo);

判斷模塊328,用于判斷讀取模塊327讀取的坐標(biāo)是否位于目標(biāo)窗口;

第四確定模塊329,用于當(dāng)判斷模塊328判斷結(jié)果為坐標(biāo)不位于目標(biāo)窗口時(shí),確定不位于目標(biāo)窗口的坐標(biāo)對(duì)應(yīng)的事件與預(yù)設(shè)優(yōu)化條件匹配。

刪除單元33,還用于在將冗余事件刪除之后,將多個(gè)連續(xù)的時(shí)間間隔合并為一個(gè)時(shí)間間隔。

進(jìn)一步的,檢測(cè)單元32,用于檢測(cè)當(dāng)前事件之后是否缺少與當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件;

添加單元34,用于當(dāng)檢測(cè)單元32檢測(cè)到當(dāng)前事件之后缺少與當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件時(shí),在當(dāng)前事件之后添加放開(kāi)事件。

進(jìn)一步的,如圖4所示,檢測(cè)單元32,包括:

第四檢測(cè)模塊3210,用于檢測(cè)當(dāng)前事件是否為按下事件,若當(dāng)前事件為按下事件,則檢測(cè)當(dāng)前事件之后是否缺少放開(kāi)事件。

第五檢測(cè)模塊3211,用于檢測(cè)當(dāng)前事件之后的所有事件中是否缺少放開(kāi)事件。

第六檢測(cè)模塊3212,用于檢測(cè)與當(dāng)前事件相鄰的下一事件是否為放開(kāi)事件。

進(jìn)一步的,如圖4所示,添加單元34,包括:

第一添加模塊341,用于在當(dāng)前事件之后、與當(dāng)前事件相鄰的下一事件之前,添加放開(kāi)事件。

第一檢測(cè)模塊342,用于檢測(cè)與當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件是否均與當(dāng)前事件相同;

第二添加模塊343,用于當(dāng)?shù)谝粰z測(cè)模塊342檢測(cè)到與當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件均與當(dāng)前事件相同時(shí),在連續(xù)至少一個(gè)事件中的最后一個(gè)事件之后,添加放開(kāi)事件。

第三添加模塊344,用于在所有事件之后添加放開(kāi)事件。

第二檢測(cè)模塊345,用于檢測(cè)當(dāng)前事件是否為事件組合中的事件,事件 組合由觸發(fā)組合鍵所產(chǎn)生的多個(gè)事件組成;

第四添加模塊346,用于當(dāng)?shù)诙z測(cè)模塊345檢測(cè)到當(dāng)前事件為事件組合中的事件時(shí),在事件組合中的最后一個(gè)事件之后,添加對(duì)應(yīng)當(dāng)前事件的放開(kāi)事件。

本發(fā)明實(shí)施例提供的鍵鼠腳本處理的裝置,能夠在獲取待執(zhí)行的鍵鼠腳本后,檢測(cè)鍵鼠腳本中有無(wú)冗余事件以及是否缺少必要事件,當(dāng)有冗余事件時(shí),將冗余事件刪除,當(dāng)缺少必要事件時(shí),添加必要事件,從而得到處理后的鍵鼠腳本。與現(xiàn)有技術(shù)中直接執(zhí)行錄制的鍵鼠腳本相比,本發(fā)明不但可以使鍵鼠腳本的數(shù)據(jù)量減小,而且還能夠避免因缺少必要事件而造成Windows異?,F(xiàn)象的出現(xiàn)。

本發(fā)明實(shí)施例公開(kāi)了:

A1、一種鍵鼠腳本處理的方法,所述方法包括:

獲取待執(zhí)行的鍵鼠腳本;

檢測(cè)所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對(duì)所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;

若所述鍵鼠腳本中存在所述冗余事件,則將所述冗余事件刪除;

檢測(cè)所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應(yīng)當(dāng)記錄在所述鍵鼠腳本中的事件;

若所述鍵鼠腳本中缺少所述必要事件,則添加所述必要事件;

保存處理后的鍵鼠腳本。

A2、根據(jù)A1所述的方法,所述檢測(cè)所述鍵鼠腳本中是否存在冗余事件,包括:

判斷所述鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合;

所述若所述鍵鼠腳本中存在所述冗余事件,則將所述冗余事件刪除,包括:

若所述鍵鼠腳本中存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合,則確定所述與預(yù)設(shè)優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將所述冗余事件刪除。

A3、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預(yù)設(shè) 優(yōu)化條件匹配的事件集合,包括:

檢測(cè)所述鍵鼠腳本中是否存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件;

若所述鍵鼠腳本中存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件,則確定所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與所述預(yù)設(shè)優(yōu)化條件匹配。

A4、根據(jù)A3所述的方法,在所述確定所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與所述預(yù)設(shè)優(yōu)化條件匹配之前,所述方法進(jìn)一步包括:

檢測(cè)所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔是否大于第一預(yù)設(shè)時(shí)間閾值;

所述確定所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與所述預(yù)設(shè)優(yōu)化條件匹配,包括:

若所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔大于所述第一預(yù)設(shè)時(shí)間閾值,則確定所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與所述預(yù)設(shè)優(yōu)化條件匹配。

A5、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合,包括:

檢測(cè)多個(gè)連續(xù)的相同按下事件中相鄰事件之間的時(shí)間間隔之和是否大于第二預(yù)設(shè)時(shí)間閾值;

若所述時(shí)間間隔之和大于所述第二預(yù)設(shè)時(shí)間閾值,則確定所述多個(gè)連續(xù)的相同按下事件與所述預(yù)設(shè)優(yōu)化條件匹配。

A6、根據(jù)A5所述的方法,所述第二預(yù)設(shè)時(shí)間閾值為應(yīng)用開(kāi)發(fā)商提供的應(yīng)用操作的最長(zhǎng)時(shí)間閾值;

或者,所述第二預(yù)設(shè)時(shí)間閾值為后臺(tái)統(tǒng)計(jì)的應(yīng)用操作的最長(zhǎng)時(shí)間閾值。

A7、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合,包括:

檢測(cè)所述鍵鼠腳本中是否存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件;

若所述鍵鼠腳本中存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件,則確定所述預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件與所述預(yù)設(shè)優(yōu)化條件匹配。

A8、根據(jù)A7所述的方法,所述預(yù)設(shè)按鍵為應(yīng)用開(kāi)發(fā)商提供的用于觸發(fā)應(yīng)用操作的按鍵;

或者,所述預(yù)設(shè)按鍵為后臺(tái)統(tǒng)計(jì)的用于觸發(fā)應(yīng)用操作的按鍵。

A9、根據(jù)A2所述的方法,所述判斷所述鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合,包括:

從事件中讀取操作焦點(diǎn)的坐標(biāo);

判斷所述坐標(biāo)是否位于目標(biāo)窗口;

若所述坐標(biāo)不位于所述目標(biāo)窗口,則確定不位于所述目標(biāo)窗口的所述坐標(biāo)對(duì)應(yīng)的事件與所述預(yù)設(shè)優(yōu)化條件匹配。

A10、根據(jù)A1至A9中任意一項(xiàng)所述的方法,在所述將所述冗余事件刪除之后,所述方法進(jìn)一步包括:

將多個(gè)連續(xù)的時(shí)間間隔合并為一個(gè)時(shí)間間隔。

A11、根據(jù)A1所述的方法,所述檢測(cè)所述鍵鼠腳本中是否缺少必要事件,包括:

檢測(cè)當(dāng)前事件之后是否缺少與所述當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件;

所述若所述鍵鼠腳本中缺少所述必要事件,則添加所述必要事件,包括:

若所述當(dāng)前事件之后缺少與所述當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件,則在所述當(dāng)前事件之后添加所述放開(kāi)事件。

A12、根據(jù)A11所述的方法,所述檢測(cè)當(dāng)前事件之后是否缺少與所述當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件,包括:

檢測(cè)所述當(dāng)前事件是否為按下事件;

若所述當(dāng)前事件為按下事件,則檢測(cè)所述當(dāng)前事件之后是否缺少所述放開(kāi)事件。

A13、根據(jù)A11所述的方法,所述檢測(cè)當(dāng)前事件之后是否缺少與所述當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件,包括:

檢測(cè)所述當(dāng)前事件之后的所有事件中是否缺少所述放開(kāi)事件。

A14、根據(jù)A11所述的方法,所述檢測(cè)當(dāng)前事件之后是否缺少與所述當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件,包括:

檢測(cè)與所述當(dāng)前事件相鄰的下一事件是否為所述放開(kāi)事件。

A15、根據(jù)A11所述的方法,所述在所述當(dāng)前事件之后添加所述放開(kāi) 事件,包括:

在所述當(dāng)前事件之后、與所述當(dāng)前事件相鄰的下一事件之前,添加所述放開(kāi)事件。

A16、根據(jù)A11所述的方法,所述在所述當(dāng)前事件之后添加所述放開(kāi)事件,包括:

檢測(cè)與所述當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件是否均與所述當(dāng)前事件相同;

若與所述當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件均與所述當(dāng)前事件相同,則在所述連續(xù)至少一個(gè)事件中的最后一個(gè)事件之后,添加所述放開(kāi)事件。

A17、根據(jù)A11所述的方法,所述在所述當(dāng)前事件之后添加所述放開(kāi)事件,包括:

在所有事件之后添加所述放開(kāi)事件。

A18、根據(jù)A11所述的方法,所述在所述當(dāng)前事件之后添加所述放開(kāi)事件,包括:

檢測(cè)所述當(dāng)前事件是否為事件組合中的事件,所述事件組合由觸發(fā)組合鍵所產(chǎn)生的多個(gè)事件組成;

若所述當(dāng)前事件為事件組合中的事件,則在所述事件組合中的最后一個(gè)事件之后,添加對(duì)應(yīng)所述當(dāng)前事件的放開(kāi)事件。

B19、一種鍵鼠腳本處理的裝置,所述裝置包括:

獲取單元,用于獲取待執(zhí)行的鍵鼠腳本;

檢測(cè)單元,用于檢測(cè)所述獲取單元獲取的所述鍵鼠腳本中是否存在冗余事件,所述冗余事件為對(duì)所述鍵鼠腳本的回放狀態(tài)不產(chǎn)生影響的事件;

刪除單元,用于當(dāng)所述檢測(cè)單元檢測(cè)到所述鍵鼠腳本中存在所述冗余事件時(shí),將所述冗余事件刪除;

所述檢測(cè)單元,還用于檢測(cè)所述鍵鼠腳本中是否缺少必要事件,所述必要事件為應(yīng)當(dāng)記錄在所述鍵鼠腳本中的事件;

添加單元,用于當(dāng)所述檢測(cè)單元檢測(cè)到所述鍵鼠腳本中缺少所述必要事件時(shí),添加所述必要事件;

保存單元,用于保存處理后的鍵鼠腳本。

B20、根據(jù)B19所述的裝置,所述檢測(cè)單元,用于判斷所述獲取單元獲取的所述鍵鼠腳本中是否存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合;

所述刪除單元,用于當(dāng)所述檢測(cè)單元檢測(cè)到所述鍵鼠腳本中存在與預(yù)設(shè)優(yōu)化條件匹配的事件集合時(shí),確定所述與預(yù)設(shè)優(yōu)化條件匹配的事件集合中的事件為冗余事件,并將所述冗余事件刪除。

B21、根據(jù)B20所述的裝置,所述檢測(cè)單元,包括:

第一檢測(cè)模塊,用于檢測(cè)所述鍵鼠腳本中是否存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件;

第一確定模塊,用于當(dāng)所述第一檢測(cè)模塊檢測(cè)到所述鍵鼠腳本中存在多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件時(shí),確定所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與所述預(yù)設(shè)優(yōu)化條件匹配。

B22、根據(jù)B21所述的裝置,所述第一檢測(cè)模塊,還用于在所述確定所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與所述預(yù)設(shè)優(yōu)化條件匹配之前,檢測(cè)所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔是否大于第一預(yù)設(shè)時(shí)間閾值;

所述第一確定模塊,還用于當(dāng)所述第一檢測(cè)模塊檢測(cè)到所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件中最后一個(gè)事件之后的時(shí)間間隔大于所述第一預(yù)設(shè)時(shí)間閾值時(shí),確定所述多個(gè)連續(xù)的鼠標(biāo)移動(dòng)事件與所述預(yù)設(shè)優(yōu)化條件匹配。

B23、根據(jù)B20所述的裝置,所述檢測(cè)單元,包括:

第二檢測(cè)模塊,用于檢測(cè)多個(gè)連續(xù)的相同按下事件中相鄰事件之間的時(shí)間間隔之和是否大于第二預(yù)設(shè)時(shí)間閾值;

第二確定模塊,用于當(dāng)所述第二檢測(cè)模塊檢測(cè)到所述時(shí)間間隔之和大于所述第二預(yù)設(shè)時(shí)間閾值時(shí),確定所述多個(gè)連續(xù)的相同按下事件與所述預(yù)設(shè)優(yōu)化條件匹配。

B24、根據(jù)B23所述的裝置,所述第二檢測(cè)模塊使用的所述第二預(yù)設(shè)時(shí)間閾值為應(yīng)用開(kāi)發(fā)商提供的應(yīng)用操作的最長(zhǎng)時(shí)間閾值,或者為后臺(tái)統(tǒng)計(jì)的應(yīng)用操作的最長(zhǎng)時(shí)間閾值。

B25、根據(jù)B20所述的裝置,所述檢測(cè)單元,包括:

第三檢測(cè)模塊,用于檢測(cè)所述鍵鼠腳本中是否存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件;

第三確定模塊,用于當(dāng)所述第三檢測(cè)模塊檢測(cè)到所述鍵鼠腳本中存在預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件時(shí),確定所述預(yù)設(shè)按鍵以外的按鍵所觸發(fā)的事件與所述預(yù)設(shè)優(yōu)化條件匹配。

B26、根據(jù)B25所述的裝置,所述第三檢測(cè)模塊使用的所述預(yù)設(shè)按鍵為應(yīng)用開(kāi)發(fā)商提供的用于觸發(fā)應(yīng)用操作的按鍵,或者為后臺(tái)統(tǒng)計(jì)的用于觸發(fā)應(yīng)用操作的按鍵。

B27、根據(jù)B20所述的裝置,所述檢測(cè)單元,包括:

讀取模塊,用于從事件中讀取操作焦點(diǎn)的坐標(biāo);

判斷模塊,用于判斷所述讀取模塊讀取的所述坐標(biāo)是否位于目標(biāo)窗口;

第四確定模塊,用于當(dāng)所述判斷模塊判斷結(jié)果為所述坐標(biāo)不位于所述目標(biāo)窗口時(shí),確定不位于所述目標(biāo)窗口的所述坐標(biāo)對(duì)應(yīng)的事件與所述預(yù)設(shè)優(yōu)化條件匹配。

B28、根據(jù)B19至B27中任意一項(xiàng)所述的裝置,所述刪除單元,還用于在所述將所述冗余事件刪除之后,將多個(gè)連續(xù)的時(shí)間間隔合并為一個(gè)時(shí)間間隔。

B29、根據(jù)B19所述的裝置,所述檢測(cè)單元,用于檢測(cè)當(dāng)前事件之后是否缺少與所述當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件;

所述添加單元,用于當(dāng)所述檢測(cè)單元檢測(cè)到所述當(dāng)前事件之后缺少與所述當(dāng)前事件對(duì)應(yīng)的放開(kāi)事件時(shí),在所述當(dāng)前事件之后添加所述放開(kāi)事件。

B30、根據(jù)B29所述的裝置,所述檢測(cè)單元,包括:

第四檢測(cè)模塊,用于檢測(cè)所述當(dāng)前事件是否為按下事件,若所述當(dāng)前事件為按下事件,則檢測(cè)所述當(dāng)前事件之后是否缺少所述放開(kāi)事件。

B31、根據(jù)B29所述的裝置,所述檢測(cè)單元,包括:

第五檢測(cè)模塊,用于檢測(cè)所述當(dāng)前事件之后的所有事件中是否缺少所述放開(kāi)事件。

B32、根據(jù)B29所述的裝置,所述檢測(cè)單元,包括:

第六檢測(cè)模塊,用于檢測(cè)與所述當(dāng)前事件相鄰的下一事件是否為所述 放開(kāi)事件。

B33、根據(jù)B29所述的裝置,所述添加單元,包括:

第一添加模塊,用于在所述當(dāng)前事件之后、與所述當(dāng)前事件相鄰的下一事件之前,添加所述放開(kāi)事件。

B34、根據(jù)B29所述的裝置,所述添加單元,包括:

第一檢測(cè)模塊,用于檢測(cè)與所述當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件是否均與所述當(dāng)前事件相同;

第二添加模塊,用于當(dāng)所述第一檢測(cè)模塊檢測(cè)到與所述當(dāng)前事件相鄰的連續(xù)至少一個(gè)事件均與所述當(dāng)前事件相同時(shí),在所述連續(xù)至少一個(gè)事件中的最后一個(gè)事件之后,添加所述放開(kāi)事件。

B35、根據(jù)B29所述的裝置,所述添加單元,包括:

第三添加模塊,用于在所有事件之后添加所述放開(kāi)事件。

B36、根據(jù)B29所述的裝置,所述添加單元,包括:

第二檢測(cè)模塊,用于檢測(cè)所述當(dāng)前事件是否為事件組合中的事件,所述事件組合由觸發(fā)組合鍵所產(chǎn)生的多個(gè)事件組成;

第四添加模塊,用于當(dāng)所述第二檢測(cè)模塊檢測(cè)到所述當(dāng)前事件為事件組合中的事件時(shí),在所述事件組合中的最后一個(gè)事件之后,添加對(duì)應(yīng)所述當(dāng)前事件的放開(kāi)事件。

在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(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)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。

在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。

類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(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ō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(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í)施例的一種網(wǎng)絡(luò)通訊的方法、裝置及系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(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)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
丁青县| 丰原市| 杨浦区| 武鸣县| 涪陵区| 会同县| 衡阳县| 津市市| 滨海县| 和硕县| 朔州市| 永年县| 澄江县| 莱阳市| 搜索| 东莞市| 桐乡市| 宽城| 商河县| 怀安县| 英吉沙县| 博爱县| 天气| 岱山县| 德阳市| 黄骅市| 紫金县| 台北县| 临猗县| 长治市| 昌乐县| 赤水市| 怀宁县| 抚宁县| 淮北市| 高安市| 蒲江县| 左贡县| 凌海市| 襄樊市| 东台市|