欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

鍵鼠腳本回放的方法及裝置與流程

文檔序號(hào):11829117閱讀:305來源:國知局
鍵鼠腳本回放的方法及裝置與流程

本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種鍵鼠腳本回放的方法及裝置。



背景技術(shù):

在電腦操作過程中,為了簡化用戶重復(fù)執(zhí)行某些鍵盤鼠標(biāo)的操作,可以對(duì)用戶的鍵鼠操作進(jìn)行腳本錄制,得到記錄有一系列操作的鍵鼠腳本,并通過回放鍵鼠腳本的方式模擬用戶此前執(zhí)行的鍵鼠操作?,F(xiàn)有的回放模式包括后臺(tái)和托管兩種模式,后臺(tái)模式通過窗口句柄識(shí)別目的窗口(即回放所針對(duì)的對(duì)象窗口),并基于發(fā)送消息的方式實(shí)現(xiàn)鍵鼠腳本的執(zhí)行;而托管模式則不關(guān)注目的窗口,僅著眼于鍵鼠光標(biāo)的坐標(biāo)進(jìn)行腳本執(zhí)行。因此后臺(tái)模式下用戶可以對(duì)其他窗口進(jìn)行操作,而托管模式則需要保證目的窗口位于桌面中并處于頂層位置。

在上述鍵鼠腳本回放的過程中,發(fā)明人發(fā)現(xiàn):在以托管模式進(jìn)行回放的過程中,由于光標(biāo)是全局光標(biāo),整個(gè)桌面中只有一個(gè),當(dāng)用戶插入手動(dòng)操作時(shí),就會(huì)“搶奪”腳本執(zhí)行所操作的光標(biāo),當(dāng)用戶將光標(biāo)移出目的窗口后,就會(huì)導(dǎo)致執(zhí)行鍵鼠腳本的失效。例如,在托管模式下執(zhí)行鍵鼠腳本在目的窗口輸入賬號(hào)時(shí),用戶將光標(biāo)移動(dòng)到其他窗口,則鍵鼠腳本會(huì)基于當(dāng)前的光標(biāo)位置在其他窗口中繼續(xù)輸入賬號(hào),導(dǎo)致鍵鼠腳本回放發(fā)生錯(cuò)誤。



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

有鑒于此,本發(fā)明提出了一種鍵鼠腳本回放的方法及裝置,主要目的在于解決用戶的無關(guān)操作對(duì)鍵鼠腳本回放造成干擾的問題。

依據(jù)本發(fā)明的第一個(gè)方面,本發(fā)明提供了一種鍵鼠腳本回放的方法,包括:

在通過托管模式進(jìn)行鍵鼠腳本回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置;

確定焦點(diǎn)位置所在的當(dāng)前窗口;

判斷當(dāng)前窗口與目的窗口是否為同一個(gè)窗口;

若當(dāng)前窗口與目的窗口不為同一個(gè)窗口,則切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

依據(jù)本發(fā)明的第二個(gè)方面,本發(fā)明提供了一種鍵鼠腳本回放的裝置,包括:

獲取單元,用于在通過托管模式進(jìn)行鍵鼠腳本回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置;

確定單元,用于確定獲取單元獲取的所述焦點(diǎn)位置所在的當(dāng)前窗口;

判斷單元,用于判斷確定單元確定的當(dāng)前窗口與目的窗口是否為同一個(gè)窗口;

切換單元,用于當(dāng)判斷單元判斷當(dāng)前窗口與目的窗口不為同一個(gè)窗口時(shí),切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

借由上述技術(shù)方案,本發(fā)明實(shí)施例提供的鍵鼠腳本回放的方法及裝置,能夠在以托管模式對(duì)鍵鼠腳本進(jìn)行回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置并確定焦點(diǎn)位置所在的當(dāng)前窗口,判斷焦點(diǎn)位置所在的當(dāng)前窗口與目的窗口是否為同一個(gè)窗口,若不為同一個(gè)窗口,則切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。由于托管模式僅著眼于操作焦點(diǎn)的焦點(diǎn)位置進(jìn)行腳本執(zhí)行,而托管模式下的操作焦點(diǎn)是全局焦點(diǎn),整個(gè)桌面中只有一個(gè),因此在現(xiàn)有技術(shù)中,當(dāng)用戶插入手動(dòng)操作時(shí),就會(huì)“搶奪”腳本執(zhí)行的操作焦點(diǎn),當(dāng)用戶將操作焦點(diǎn)移出目的窗口后,就會(huì)導(dǎo)致執(zhí)行鍵鼠腳本的失效。與現(xiàn)有技術(shù)相比,本發(fā)明能夠在用戶將操作焦點(diǎn)移出目的窗口對(duì)其他窗口進(jìn)行操作時(shí),自動(dòng)切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放,從而避免用戶的無關(guān)操作對(duì)鍵鼠腳本回放造成干擾。

上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。

附圖說明

通過閱讀下文優(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í)施例提供的一種在托管模式下回放鍵鼠腳本出現(xiàn)錯(cuò)誤的示意圖;

圖2示出了本發(fā)明實(shí)施例提供的一種鍵鼠腳本回放的方法的流程圖;

圖3示出了本發(fā)明實(shí)施例提供的一種鍵鼠腳本回放的裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

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

用戶通常在計(jì)算機(jī)上執(zhí)行某些任務(wù)的過程中會(huì)重復(fù)進(jìn)行一系列的點(diǎn)擊操作,例如在游戲中通過重復(fù)點(diǎn)擊目標(biāo)對(duì)象完成任務(wù)。由于大量的重復(fù)點(diǎn)擊操作是一個(gè)機(jī)械執(zhí)行的過程,如果通過用戶人為進(jìn)行點(diǎn)擊不僅造成用戶的操作疲勞,而且還容易使點(diǎn)擊出現(xiàn)錯(cuò)誤。為了簡化用戶重復(fù)執(zhí)行鍵鼠操作,可以在用戶首次進(jìn)行鍵鼠操作時(shí)對(duì)用戶執(zhí)行的鍵鼠操作進(jìn)行腳本錄制,獲得鍵鼠腳本后,由計(jì)算機(jī)對(duì)鍵鼠腳本進(jìn)行回放,模擬用戶此前執(zhí)行的鍵鼠操作,實(shí)現(xiàn)鍵鼠操作的自動(dòng)執(zhí)行。為了解放用戶的操作,提高點(diǎn)擊的效率和準(zhǔn)確性,現(xiàn)有技術(shù)中提供了一種方法,即對(duì)用戶的點(diǎn)擊操作進(jìn)行腳本錄制,得到記錄有需要重復(fù)執(zhí)行的一系列點(diǎn)擊操作的鍵鼠腳本。在執(zhí)行相關(guān)任務(wù)的過程中,只需要對(duì)相關(guān)的鍵鼠腳本進(jìn)行回放即可代替用戶的手動(dòng)操作完成任務(wù)。但是現(xiàn)有的腳本回放模式還存在一定的缺陷,由于托管模式僅著眼于操作焦點(diǎn)的焦點(diǎn)位置進(jìn)行腳本執(zhí)行,而托管模式下的操作焦點(diǎn)是全局焦點(diǎn),整個(gè)桌面中只有一個(gè),當(dāng)以托管模式進(jìn)行鍵鼠腳本回放的過程中,在執(zhí)行相鄰兩個(gè)操作的間隙用戶移動(dòng)了操作焦點(diǎn),使操作焦點(diǎn)移出目的窗口,則按照托管模式的回放規(guī)則,會(huì)基于移動(dòng)后的操作焦點(diǎn)繼續(xù)進(jìn)行腳本回放,從而使針對(duì)目的窗口的腳本回放出現(xiàn)錯(cuò)誤。

為了更好的理解在托管模式進(jìn)行鍵鼠腳本回放的過程中可能出現(xiàn)的錯(cuò)誤,以下提供一個(gè)場(chǎng)景,以在回放鍵鼠腳本進(jìn)行賬號(hào)輸入的過程中用戶移動(dòng)了鼠標(biāo)指針為例來說明鍵鼠腳本回放出現(xiàn)的錯(cuò)誤。如圖1所示,在屏幕桌面上,賬號(hào)登陸界面作為目的窗口,網(wǎng)頁作為其他窗口,當(dāng)以托管模式回放鍵鼠腳本在賬號(hào)登陸界面輸入賬號(hào)a*c1**4的過程中,當(dāng)輸入完a、*、c后,在c與下一個(gè)要輸入的字符1之間的間隙內(nèi),用戶將鼠標(biāo)指針移動(dòng)到網(wǎng)頁的搜索框內(nèi),則在托管模式下鍵鼠腳本的執(zhí)行會(huì)以鼠標(biāo)指針當(dāng)前的位置繼續(xù)進(jìn)行賬號(hào)的輸入,使得在網(wǎng)頁搜索框內(nèi)繼續(xù)輸入字符1**4,結(jié)果造成在賬號(hào)登陸界面的輸入出現(xiàn)錯(cuò)誤。

因此,為了解決用戶的無關(guān)操作對(duì)鍵鼠腳本回放造成干擾的問題,本發(fā)明實(shí)施例提供了一種鍵鼠腳本回放的方法,該方法能夠避免在托管模式進(jìn)行鍵鼠腳本回放過程中用戶移動(dòng)操作焦點(diǎn)對(duì)鍵鼠腳本回放造成干擾。如圖2所示,該方法包括:

101、獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置。

在通過托管模式進(jìn)行鍵鼠腳本回放的過程中,基于托管模式僅著眼于操作焦點(diǎn)的焦點(diǎn)位置進(jìn)行腳本執(zhí)行的特點(diǎn),當(dāng)用戶在腳本中相鄰的兩個(gè)操作之間手動(dòng)插入腳本以外的操作,使操作焦點(diǎn)移出目的窗口后,會(huì)造成針對(duì)目的窗口的腳本執(zhí)行出現(xiàn)錯(cuò)誤。因此需要對(duì)操作焦點(diǎn)的焦點(diǎn)位置進(jìn)行監(jiān)控,判斷其是否位于目的窗口中,如果焦點(diǎn)位置不在目的窗口中,則說明存在腳本執(zhí)行以外的用戶操作,會(huì)使針對(duì)目的窗口的鍵鼠腳本回放出現(xiàn)錯(cuò)誤。因此,本發(fā)明實(shí)施例中在判斷操作焦點(diǎn)是否位于目的窗口中之前,首先需要確定操作焦點(diǎn)的焦點(diǎn)位置。在本步驟中獲取操作焦點(diǎn)的焦點(diǎn)位置可以通過操作焦點(diǎn)的坐標(biāo)來表示,作為焦點(diǎn)位置的坐標(biāo)是由數(shù)字組成的。

102、確定焦點(diǎn)位置所在的當(dāng)前窗口。

在進(jìn)行鍵鼠腳本回放的過程中,由于用戶可以手動(dòng)插入其他操作,因此操作焦點(diǎn)的焦點(diǎn)的位置可能位于目的窗口中,也可能位于目的窗口外的其他窗口。在本步驟中,可以利用相應(yīng)的函數(shù)根據(jù)步驟101獲取的焦點(diǎn)位置得到焦點(diǎn)位置所在的當(dāng)前窗口,當(dāng)前窗口可以為目的窗口,也可以為其他窗口。

103、判斷當(dāng)前窗口與目的窗口是否為同一個(gè)窗口。

當(dāng)步驟102獲取到焦點(diǎn)位置所在的當(dāng)前窗口后,就需要判斷焦點(diǎn)位置所在的當(dāng)前窗口是否為目的窗口。在Windows系統(tǒng)中,系統(tǒng)會(huì)為每個(gè)窗口分配一個(gè)句柄,本實(shí)施例可以通過句柄標(biāo)識(shí)對(duì)當(dāng)前窗口和目的窗口進(jìn)行比較,判斷兩者是否為同一個(gè)窗口。

104、若當(dāng)前窗口與目的窗口不為同一個(gè)窗口,則切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

當(dāng)通過步驟103確定當(dāng)前窗口與目的窗口不為同一個(gè)窗口,即操作焦點(diǎn)的焦點(diǎn)位置位于目的窗口外,此時(shí)若繼續(xù)以托管模式進(jìn)行腳本回放,則會(huì)造成針對(duì)目的窗口的鍵鼠腳本回放出現(xiàn)錯(cuò)誤;而后臺(tái)模式通過窗口句柄識(shí)別目的窗口(即回放所針對(duì)的對(duì)象窗口),并基于發(fā)送消息的方式實(shí)現(xiàn)鍵鼠腳本的執(zhí)行?;谏鲜鲈颍诖_定當(dāng)前窗口與目的窗口不為同一個(gè)窗口,且在鍵鼠腳本執(zhí)行下一個(gè)操作之前,應(yīng)該立即切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

由于在后臺(tái)模式下進(jìn)行鍵鼠腳本的執(zhí)行是通過目的窗口對(duì)消息指令的執(zhí)行實(shí)現(xiàn)的,不再依賴全局焦點(diǎn),因此用戶操作對(duì)全局焦點(diǎn)的控制不會(huì)對(duì)鍵鼠腳本的回放造成干擾。

本發(fā)明實(shí)施例提供的鍵鼠腳本回放的方法,能夠在以托管模式對(duì)鍵鼠腳本進(jìn)行回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置并確定焦點(diǎn)位置所在的當(dāng)前窗口,判斷焦點(diǎn)位置所在的當(dāng)前窗口與目的窗口是否為同一個(gè)窗口,若不為同一個(gè)窗口,則切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。由于托管模式僅著眼于操作焦點(diǎn)的焦點(diǎn)位置進(jìn)行腳本執(zhí)行,而托管模式下的操作焦點(diǎn)是全局焦點(diǎn),整個(gè)桌面中只有一個(gè),因此在現(xiàn)有技術(shù)中,當(dāng)用戶插入手動(dòng)操作時(shí),就會(huì)“搶奪”腳本執(zhí)行的操作焦點(diǎn),當(dāng)用戶將操作焦點(diǎn)移出目的窗口后,就會(huì)導(dǎo)致執(zhí)行鍵鼠腳本的失效。與現(xiàn)有技術(shù)相比,本發(fā)明能夠在用戶將操作焦點(diǎn)移出目的窗口對(duì)其他窗口進(jìn)行操作時(shí),自動(dòng)切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放,從而避免用戶的無關(guān)操作對(duì)鍵鼠腳本回放造成干擾。

為了更好的對(duì)上述圖2所示的方法進(jìn)行理解,作為對(duì)上述方法的細(xì)化 和擴(kuò)展,本發(fā)明實(shí)施例將針對(duì)圖2中的步驟進(jìn)行詳細(xì)說明。

在本發(fā)明實(shí)施例的實(shí)際操作過程中,需要在一定的時(shí)機(jī)獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置。如果在托管模式下鍵鼠腳本執(zhí)行每一個(gè)鍵鼠操作之后才獲取焦點(diǎn)位置,例如當(dāng)操作焦點(diǎn)在目的窗口外執(zhí)行了一個(gè)鍵鼠操作A后才獲取焦點(diǎn)位置,并根據(jù)焦點(diǎn)位置繼續(xù)執(zhí)行圖2中的步驟102、步驟103、步驟104,這樣做雖然會(huì)以后臺(tái)模式使鍵鼠腳本繼續(xù)針對(duì)目的窗口進(jìn)行操作,但還是會(huì)缺失對(duì)目的窗口執(zhí)行鍵鼠操作A,造成針對(duì)目的窗口的鍵鼠腳本回放不完整。因此,需要在按照鍵鼠腳本執(zhí)行每一步鍵鼠操作之前就獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置,并執(zhí)行后續(xù)步驟102、步驟103和步驟104。

當(dāng)按照正確的時(shí)機(jī)獲取操作焦點(diǎn)的焦點(diǎn)位置時(shí),就需要準(zhǔn)確的獲取焦點(diǎn)位置的坐標(biāo)。在實(shí)際應(yīng)用中,用戶的操作類型包括鼠標(biāo)操作和鍵盤操作,對(duì)應(yīng)的,對(duì)鼠標(biāo)操作的操作焦點(diǎn)為鼠標(biāo)指針,對(duì)鍵盤操作的操作焦點(diǎn)為鍵盤光標(biāo)。在進(jìn)行鍵鼠腳本回放的過程中,由于存在不同的操作類型,因此針對(duì)用戶不同的操作,獲取焦點(diǎn)位置的坐標(biāo)的方式也會(huì)有不同。

當(dāng)操作焦點(diǎn)為鼠標(biāo)指針時(shí),獲取操作焦點(diǎn)的焦點(diǎn)位置其實(shí)是獲取鼠標(biāo)指針的坐標(biāo)。在Windows系統(tǒng)中,系統(tǒng)會(huì)發(fā)出一個(gè)通知,告訴應(yīng)用程序某個(gè)事情發(fā)生了。例如,單擊鼠標(biāo)、改變窗口尺寸、按下鍵盤上的一個(gè)鍵都會(huì)使Windows系統(tǒng)發(fā)送一個(gè)消息給應(yīng)用程序。Windows消息本事是作為一個(gè)記錄傳遞給應(yīng)用程序的,這個(gè)記錄(一般在C/C++/匯編中稱為“結(jié)構(gòu)體”)中包含了消息的類型以及其他信息。對(duì)于移動(dòng)鼠標(biāo)所產(chǎn)生的消息來說,這個(gè)記錄中包含了鼠標(biāo)光標(biāo)當(dāng)前的坐標(biāo)。因此,作為一個(gè)可選的實(shí)施方式,當(dāng)用戶對(duì)鼠標(biāo)進(jìn)行了操作時(shí),可以利用Windows消息處理機(jī)制從Windows消息的結(jié)構(gòu)體信息中獲取鼠標(biāo)指針的坐標(biāo)。

當(dāng)操作焦點(diǎn)為鍵盤光標(biāo)時(shí),獲取操作焦點(diǎn)的焦點(diǎn)位置其實(shí)是獲取鍵盤光標(biāo)的坐標(biāo)。在Windows系統(tǒng)中,窗口就是通過消息與操作系統(tǒng)互動(dòng)的,窗口不能直接與使用者交流,使用者移動(dòng)鍵盤光標(biāo)、點(diǎn)擊鍵盤等都是通過操作系統(tǒng)與窗口通信的,窗口信息處理函數(shù)極為重要,沒有它窗口便不能工作。因此,作為一個(gè)可選的實(shí)施方式,在實(shí)際應(yīng)用中可以通過調(diào)用系統(tǒng)函數(shù)從窗口消息中獲取坐標(biāo)。示例性的,可以調(diào)用Windows系統(tǒng)中提供的 GetGUIThreadInfo函數(shù)從當(dāng)前窗口的窗口信息中獲取鍵盤光標(biāo)的坐標(biāo)。

在通過上述不同的實(shí)施方式獲取到鼠標(biāo)指針或鍵盤光標(biāo)的坐標(biāo)后,就需要確定操作焦點(diǎn)的坐標(biāo)所在的當(dāng)前窗口。在Windows系統(tǒng)中,句柄是一個(gè)系統(tǒng)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的引用。例如,當(dāng)對(duì)一個(gè)窗口進(jìn)行操作時(shí),系統(tǒng)會(huì)分配給該窗口一個(gè)句柄,應(yīng)用程序根據(jù)窗口句柄就能要求系統(tǒng)對(duì)該窗口進(jìn)行如移動(dòng)窗口、改變窗口尺寸等操作。在本質(zhì)上句柄是一種內(nèi)部代碼,通過該代碼能引用受系統(tǒng)控制的特殊元素,如窗口、圖標(biāo)、字體、菜單等。由于在Windows系統(tǒng)中,句柄是和對(duì)象一一對(duì)應(yīng)的無符號(hào)整數(shù)值,對(duì)象可以映射到唯一的句柄,句柄也可以映射到唯一的對(duì)象。因此,確定操作焦點(diǎn)的坐標(biāo)所在的當(dāng)前窗口實(shí)際上是確定操作焦點(diǎn)的坐標(biāo)所在的當(dāng)前窗口的窗口句柄。而在Windows系統(tǒng)提供的各種函數(shù)中,WindowFromPoint函數(shù)具有獲得包含指定點(diǎn)的窗口的句柄這一功能。因此,作為一種可選的實(shí)施方式,可以調(diào)用WindowFromPoint函數(shù)獲取操作焦點(diǎn)的坐標(biāo)所在的當(dāng)前窗口的窗口句柄。

由于句柄和對(duì)象是一一對(duì)應(yīng)的,可以通過窗口句柄的比對(duì)來判斷窗口是否為同一個(gè)窗口。因此,當(dāng)獲取到操作焦點(diǎn)的坐標(biāo)所在的當(dāng)前窗口的窗口句柄后,需要與目的窗口的窗口句柄進(jìn)行比對(duì),判斷當(dāng)前窗口與目的窗口是否為同一個(gè)窗口。若當(dāng)前窗口的窗口句柄與目的窗口的窗口句柄相同,則確定當(dāng)前窗口與目的窗口是同一個(gè)窗口;若當(dāng)前窗口的窗口句柄與目的窗口的窗口句柄不同,則確定當(dāng)前窗口與目的窗口不是同一個(gè)窗口。當(dāng)確定當(dāng)前窗口與目的窗口不是同一個(gè)窗口后,在鍵鼠腳本執(zhí)行下一個(gè)操作之前立即切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放,避免用戶的操作對(duì)鍵鼠腳本回放產(chǎn)生干擾。

由于本發(fā)明實(shí)施例提供的鍵鼠腳本回放的方法在實(shí)施過程中,從獲取焦點(diǎn)位置、確定焦點(diǎn)位置所在的當(dāng)前窗口、判斷當(dāng)前窗口與目的窗口是否為同一個(gè)窗口等步驟是一個(gè)重復(fù)循環(huán)的過程,因此在后續(xù)多次執(zhí)行上述步驟的過程中,當(dāng)確定當(dāng)前窗口與目的窗口為同一個(gè)窗口時(shí),本發(fā)明實(shí)施例進(jìn)一步提供了從后臺(tái)模式切換回托管模式進(jìn)行鍵鼠腳本回放的實(shí)現(xiàn)方式。

本發(fā)明實(shí)施例在執(zhí)行鍵鼠腳本的每一步操作之前,都能獲取到當(dāng)前操 作焦點(diǎn)的焦點(diǎn)位置并判斷其是否位于目的窗口中,并根據(jù)判斷結(jié)果進(jìn)行后臺(tái)模式的切換,避免了針對(duì)目的窗口的鍵鼠腳本回放出現(xiàn)錯(cuò)誤。同時(shí),針對(duì)該方法持續(xù)獲取焦點(diǎn)位置、確定焦點(diǎn)位置所在的當(dāng)前窗口、判斷當(dāng)前窗口與目的窗口是否為同一個(gè)窗口的特點(diǎn),本發(fā)明實(shí)施例還提供了在后續(xù)再次確定當(dāng)前窗口與目的窗口為同一個(gè)窗口時(shí),重新切換回托管模式進(jìn)行鍵鼠腳本回放的方式,從而能夠在用戶操作或系統(tǒng)環(huán)境復(fù)雜的情況下,準(zhǔn)確識(shí)別哪些操作應(yīng)該以托管模式進(jìn)行,哪些操作應(yīng)該以后臺(tái)模式執(zhí)行,在避免用戶操作對(duì)鍵鼠腳本回放造成干擾的情況下,實(shí)現(xiàn)了針對(duì)用戶的操作而進(jìn)行的托管模式和后臺(tái)模式的相互切換,與現(xiàn)有技術(shù)中回放模式單一相比,本發(fā)明實(shí)施例能夠在鍵鼠腳本回放過程中實(shí)現(xiàn)托管模式和后臺(tái)模式的靈活切換。

進(jìn)一步的,作為對(duì)上述圖2所示方法的實(shí)現(xiàn),本發(fā)明實(shí)施例還提供了一種鍵鼠腳本回放的裝置,如圖3所示,該裝置包括:獲取單元31、確定單元32、判斷單元33及切換單元34,其中,

獲取單元31,用于在通過托管模式進(jìn)行鍵鼠腳本回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置;

確定單元32,用于確定獲取單元31獲取的焦點(diǎn)位置所在的當(dāng)前窗口;

判斷單元33,用于判斷確定單元32確定的當(dāng)前窗口與目的窗口是否為同一個(gè)窗口;

切換單元34,用于當(dāng)判斷單元33判斷當(dāng)前窗口與目的窗口不為同一個(gè)窗口時(shí),切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

進(jìn)一步的,獲取單元31用于在執(zhí)行鍵鼠腳本的每一步鍵鼠操作之前,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置。

進(jìn)一步的,獲取單元31用于在當(dāng)前操作焦點(diǎn)為鼠標(biāo)指針時(shí),利用Windows消息獲取鼠標(biāo)指針的坐標(biāo)。

進(jìn)一步的,獲取單元31用于在當(dāng)前操作焦點(diǎn)為鍵盤光標(biāo)時(shí),獲取當(dāng)前窗口的窗口信息,并從窗口信息中獲得鍵盤光標(biāo)的坐標(biāo)。

進(jìn)一步的,獲取單元31用于調(diào)用GetGUIThreadInfo函數(shù)獲取當(dāng)前窗口的窗口信息。

進(jìn)一步的,確定單元32用于調(diào)用WindowFromPoint函數(shù)獲取坐標(biāo)所在的當(dāng)前窗口的窗口句柄。

進(jìn)一步的,判斷單元33用于將當(dāng)前窗口的窗口句柄與目的窗口的窗口句柄進(jìn)行比較;

判斷單元33用于當(dāng)當(dāng)前窗口的窗口句柄與目的窗口的窗口句柄相同時(shí),確定當(dāng)前窗口與目的窗口是同一個(gè)窗口;

判斷單元33用于當(dāng)當(dāng)前窗口的窗口句柄與目的窗口的窗口句柄不同時(shí),確定當(dāng)前窗口與目的窗口不是同一個(gè)窗口。

進(jìn)一步的,切換單元34用于當(dāng)判斷單元33確定當(dāng)前窗口與目的窗口不為同一個(gè)窗口時(shí),切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

本發(fā)明實(shí)施例提供的鍵鼠腳本回放的裝置,能夠在以托管模式對(duì)鍵鼠腳本進(jìn)行回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置并確定焦點(diǎn)位置所在的當(dāng)前窗口,判斷焦點(diǎn)位置所在的當(dāng)前窗口與目的窗口是否為同一個(gè)窗口,若不為同一個(gè)窗口,則切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。由于托管模式僅著眼于操作焦點(diǎn)的焦點(diǎn)位置進(jìn)行腳本執(zhí)行,而托管模式下的操作焦點(diǎn)是全局焦點(diǎn),整個(gè)桌面中只有一個(gè),因此在現(xiàn)有技術(shù)中,當(dāng)用戶插入手動(dòng)操作時(shí),就會(huì)“搶奪”腳本執(zhí)行的操作焦點(diǎn),當(dāng)用戶將操作焦點(diǎn)移出目的窗口后,就會(huì)導(dǎo)致執(zhí)行鍵鼠腳本的失效。與現(xiàn)有技術(shù)相比,本發(fā)明能夠在用戶將操作焦點(diǎn)移出目的窗口對(duì)其他窗口進(jìn)行操作時(shí),自動(dòng)切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放,從而避免用戶的無關(guān)操作對(duì)鍵鼠腳本回放造成干擾。

此外,本發(fā)明實(shí)施例在執(zhí)行鍵鼠腳本的每一步操作之前,都能獲取到當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置并判斷其是否位于目的窗口中,并根據(jù)判斷結(jié)果進(jìn)行后臺(tái)模式的切換,避免了針對(duì)目的窗口的鍵鼠腳本回放出現(xiàn)錯(cuò)誤。同時(shí),針對(duì)該方法持續(xù)獲取焦點(diǎn)位置、確定焦點(diǎn)位置所在的當(dāng)前窗口、判斷當(dāng)前窗口與目的窗口是否為同一個(gè)窗口的特點(diǎn),本發(fā)明實(shí)施例還提供了在后續(xù)再次確定當(dāng)前窗口與目的窗口為同一個(gè)窗口時(shí),重新切換回托管模式進(jìn)行鍵鼠腳本回放的方式,從而能夠在用戶操作或系統(tǒng)環(huán)境復(fù)雜的情況下,準(zhǔn)確識(shí)別哪些操作應(yīng)該以托管模式進(jìn)行,哪些操作應(yīng)該以后臺(tái)模式執(zhí)行, 在避免用戶操作對(duì)鍵鼠腳本回放造成干擾的情況下,實(shí)現(xiàn)了針對(duì)用戶的操作而進(jìn)行的托管模式和后臺(tái)模式的相互切換,與現(xiàn)有技術(shù)中回放模式單一相比,本發(fā)明實(shí)施例能夠在鍵鼠腳本回放過程中實(shí)現(xiàn)托管模式和后臺(tái)模式的靈活切換。

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

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

在通過托管模式進(jìn)行鍵鼠腳本回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置;

確定所述焦點(diǎn)位置所在的當(dāng)前窗口;

判斷所述當(dāng)前窗口與目的窗口是否為同一個(gè)窗口;

若所述當(dāng)前窗口與所述目的窗口不為同一個(gè)窗口,則切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

A2、根據(jù)A1所述的方法,所述獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置,包括:

在執(zhí)行所述鍵鼠腳本的每一步鍵鼠操作之前,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置。

A3、根據(jù)A1所述的方法,所述當(dāng)前操作焦點(diǎn)為鼠標(biāo)指針,所述獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置,包括:

利用Windows消息獲取所述鼠標(biāo)指針的坐標(biāo)。

A4、根據(jù)A1所述的方法,所述當(dāng)前操作焦點(diǎn)為鍵盤光標(biāo),所述獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置,包括:

獲取所述當(dāng)前窗口的窗口信息,并從所述窗口信息中獲得所述鍵盤光標(biāo)的坐標(biāo)。

A5、根據(jù)A4所述的方法,所述獲取所述當(dāng)前窗口的窗口信息,包括:

調(diào)用GetGUIThreadInfo函數(shù)獲取所述當(dāng)前窗口的窗口信息。

A6、根據(jù)A3至A5中任一項(xiàng)所述的方法,所述確定所述焦點(diǎn)位置所在的當(dāng)前窗口,包括:

調(diào)用WindowFromPoint函數(shù)獲取所述坐標(biāo)所在的當(dāng)前窗口的窗口句柄。

A7、根據(jù)A6所述的方法,所述判斷所述當(dāng)前窗口與目的窗口是否為 同一個(gè)窗口,包括:

將所述當(dāng)前窗口的窗口句柄與所述目的窗口的窗口句柄進(jìn)行比較;

若所述當(dāng)前窗口的窗口句柄與所述目的窗口的窗口句柄相同,則確定所述當(dāng)前窗口與所述目的窗口是同一個(gè)窗口;

若所述當(dāng)前窗口的窗口句柄與所述目的窗口的窗口句柄不同,則確定所述當(dāng)前窗口與所述目的窗口不是同一個(gè)窗口。

A8、根據(jù)A2所述的方法,所述方法進(jìn)一步包括:

若所述當(dāng)前窗口與所述目的窗口為同一個(gè)窗口,則切換到托管模式進(jìn)行鍵鼠腳本回放。

B9、一種鍵鼠腳本回放的裝置,所述裝置包括:

獲取單元,用于在通過托管模式進(jìn)行鍵鼠腳本回放的過程中,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置;

確定單元,用于確定所述獲取單元獲取的所述焦點(diǎn)位置所在的當(dāng)前窗口;

判斷單元,用于判斷所述確定單元確定的所述當(dāng)前窗口與目的窗口是否為同一個(gè)窗口;

切換單元,用于當(dāng)所述判斷單元判斷所述當(dāng)前窗口與所述目的窗口不為同一個(gè)窗口時(shí),切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

B10、根據(jù)B9所述的裝置,所述獲取單元用于在執(zhí)行所述鍵鼠腳本的每一步鍵鼠操作之前,獲取當(dāng)前操作焦點(diǎn)的焦點(diǎn)位置。

B11、根據(jù)B9所述的裝置,所述獲取單元用于在當(dāng)前操作焦點(diǎn)為鼠標(biāo)指針時(shí),利用Windows消息獲取所述鼠標(biāo)指針的坐標(biāo)。

B12、根據(jù)B9所述的裝置,所述獲取單元用于在當(dāng)前操作焦點(diǎn)為鍵盤光標(biāo)時(shí),獲取所述當(dāng)前窗口的窗口信息,并從所述窗口信息中獲得所述鍵盤光標(biāo)的坐標(biāo)。

B13、根據(jù)B12所述的裝置,所述獲取單元用于調(diào)用GetGUIThreadInfo函數(shù)獲取所述當(dāng)前窗口的窗口信息。

B14、根據(jù)B11至B13中任一項(xiàng)所述的裝置,所述確定單元用于調(diào)用WindowFromPoint函數(shù)獲取所述坐標(biāo)所在的當(dāng)前窗口的窗口句柄。

B15、根據(jù)B14所述的裝置,所述判斷單元用于將所述當(dāng)前窗口的窗口句柄與所述目的窗口的窗口句柄進(jìn)行比較;

所述判斷單元用于當(dāng)所述當(dāng)前窗口的窗口句柄與所述目的窗口的窗口句柄相同時(shí),確定所述當(dāng)前窗口與所述目的窗口是同一個(gè)窗口;

所述判斷單元用于當(dāng)所述當(dāng)前窗口的窗口句柄與所述目的窗口的窗口句柄不同時(shí),確定所述當(dāng)前窗口與所述目的窗口不是同一個(gè)窗口。

B16、根據(jù)B10所述的裝置,所述切換單元用于當(dāng)所述判斷單元確定所述當(dāng)前窗口與所述目的窗口不為同一個(gè)窗口時(shí),切換到后臺(tái)模式進(jìn)行鍵鼠腳本回放。

在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實(shí)施例中的“第一”、“第二”等是用于區(qū)分各實(shí)施例,而并不代表各實(shí)施例的優(yōu)劣。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。

在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。

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

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

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。

本發(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)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的發(fā)明名稱(如確定網(wǎng)站內(nèi)鏈接等級(jí)的裝置)中的一些或者全部部件的一些或者全部功能。本發(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)行說明而不是對(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ī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
安溪县| 方山县| 高雄市| 苗栗县| 秦安县| 宁津县| 贞丰县| 泰宁县| 丰宁| 濮阳县| 武陟县| 蕲春县| 东明县| 将乐县| 华蓥市| 扬州市| 泾阳县| 无锡市| 普兰店市| 宁明县| 昌黎县| 惠东县| 新源县| 灵宝市| 天等县| 佛冈县| 合川市| 马边| 耿马| 江达县| 孟连| 六安市| 西乌珠穆沁旗| 会东县| 诏安县| 乐安县| 富平县| 宁陵县| 伊金霍洛旗| 平昌县| 公主岭市|