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

用于對事件進(jìn)行處理的方法和設(shè)備的制作方法

文檔序號:6562077閱讀:185來源:國知局
專利名稱:用于對事件進(jìn)行處理的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及面向?qū)ο蟮膱D形用戶界面(GUI)領(lǐng)域。更具體地,本發(fā)明提供了一種用于在事件驅(qū)動的面向?qū)ο蟮膱D形用戶界面(GUI)中對事件進(jìn)行記錄和重放的方法、計算機(jī)程序產(chǎn)品和數(shù)據(jù)處理系統(tǒng)。
背景技術(shù)
最早的交互式計算機(jī)依賴于電傳打字機(jī)(TTY)或文本終端與操作人進(jìn)行交互通信。人-機(jī)交互(HCI)的這些早期的形式只能實現(xiàn)基于文本或基于字符的信息交換。今天,許多計算機(jī)軟件產(chǎn)品利用圖形用戶界面或GUI。GUI是可視的人-機(jī)交互手段,其除了文本或字符之外還利用圖片或者其他可視的表示形式。
大多數(shù)GUI系統(tǒng)使用顯示在用戶顯示屏上并由用戶輸入激活的可視控件。典型的可視控件包括但并不局限于按鈕、文本框(用來輸入文本)、單選按鈕、復(fù)選框、選擇框和菜單欄。在一個典型的GUI中,指示設(shè)備,如鼠標(biāo),用來在顯示屏上移動光標(biāo)并激活可視控件。GUI還常常包括靜態(tài)顯示組件,如標(biāo)簽和圖標(biāo)等,它們是用于顯示的,但是其本身通常不具有輸入功能。但是有時,當(dāng)這些靜態(tài)顯示組件在顯示屏上相對于顯示屏上其他特征移動時,它們可以起到輸入的作用(比如拖放一個文件的圖標(biāo)到回收站可以表示刪除一個文件)。
很多GUI是所謂的“窗口”界面,因為它們將信息可視地排列在面板形式的顯示屏上或疊置于稱作“桌面”的背景上的“窗口”上。在很多系統(tǒng)中,窗口可以被指示設(shè)備拖放到顯示屏上的不同位置,被放大、縮小或者同其他的窗口交迭。典型地,一個窗口將含有多個可視控件以允許用戶通過激活窗口中的控件來與計算機(jī)程序進(jìn)行交互。一種叫做“對話框”的特定形式的窗口,就是在需要由用戶進(jìn)行一些輸入時,由程序顯示的。
窗口、可視控件以及靜態(tài)顯示組件,都稱作GUI組件,因為它們都是GUI的構(gòu)造模塊。有些GUI組件,比如窗口,叫做“容器組件”(或簡稱為“容器”),因為它們可以包含其他的組件。例如,一個窗口可以包含可視控件,諸如按鈕或者菜單欄;以及靜態(tài)顯示組件,諸如文本標(biāo)簽和圖標(biāo)等。一個容器還可以包含另一個容器。比如,在某些基于窗口的文字處理器中,文字處理器本身占用一個(主)窗口,同時正在編輯的每個文件占用在主窗口內(nèi)的另一窗口。
容器組件包括窗口,但也可以包括其他的可視的或者不可視的組件。比如,由美國芒廷維尤市(Mountain View)的SUN微系統(tǒng)公司出品的JAVATM編程語言,其中就詳細(xì)定義了各種各樣的可視容器組件,諸如窗口和對話框;以及不可視的容器組件,諸如“java.awt.Panel”容器組件,它可以單獨地用于將多個可容納的組件分組為一個單個的單元。容器的許多例子包括但不局限于窗口、對話框、面板、頁簽面板、記事本頁面,或可包含一個或多個其他GUI組件的任意其他GUI組件。
用于在GUI組件上提供基本的操作的實際功能性,比如顯示組件或者檢測在組件處導(dǎo)入的用戶輸入(如通過指示設(shè)備在組件處指示或點擊)等等,通常由系統(tǒng)級別的軟件來提供,比如由操作系統(tǒng)來完成。一般來說,應(yīng)用程序?qū)ο到y(tǒng)級別的軟件進(jìn)行調(diào)用以創(chuàng)建和維護(hù)GUI,同時系統(tǒng)級別的軟件檢測在特定GUI組件處導(dǎo)入的用戶輸入事件,并且向負(fù)責(zé)這些GUI組件的應(yīng)用程序發(fā)出事件通告。
比如,華盛頓的雷德蒙德市(Redmond)的微軟公司出品的WINDOWS操作系統(tǒng)可以提供用于創(chuàng)建GUI并且將用戶輸入事件轉(zhuǎn)發(fā)給適當(dāng)?shù)膽?yīng)用程序的服務(wù)。WINDOWS操作系統(tǒng)的主界面本身也是一個GUI。在其他的設(shè)置中,較高級的系統(tǒng)軟件可以在操作系統(tǒng)內(nèi)核的頂層進(jìn)行操作(例如,作為后臺程序或后臺進(jìn)程)來提供GUI服務(wù)。例如,是一個開放源代碼的GUI引擎,其作為操作系統(tǒng)中的進(jìn)程運(yùn)行。X11采用客戶機(jī)-服務(wù)器模型,其中,一個X11服務(wù)器進(jìn)程接受來自應(yīng)用程序(客戶機(jī))的用于提供GUI服務(wù)的請求并將與特定GUI組件有關(guān)的用戶輸入事件轉(zhuǎn)發(fā)給與這些組件相關(guān)聯(lián)的應(yīng)用程序。
作為替代,應(yīng)用程序也可以有自己的代碼來提供GUI服務(wù)。典型地,該代碼來自用于執(zhí)行基本GUI操作的可重復(fù)使用的代碼庫。
現(xiàn)在的許多編程語言實現(xiàn)都具有用于產(chǎn)生GUI的內(nèi)置功能,這通常通過為由系統(tǒng)級別的軟件所提供的GUI服務(wù)提供界面來完成,或者通過包括低級別GUI代碼的庫并在該編程語言中為之提供界面來完成。比如JAVATM編程語言就是面向?qū)ο蟮木幊陶Z言,其包括用于定義GUI的標(biāo)準(zhǔn)應(yīng)用編程接口(API)。當(dāng)前JAVATM編程語言標(biāo)準(zhǔn)包括的兩個API是抽象窗口工具包(AWT)API和Swing API(其是在AWT API的基礎(chǔ)上建立起來的)。在作為典型的面向?qū)ο蟮腉UI API的JAVATM編程語言中,每一種類型的GUI組件都被定義成一個類。
在面向?qū)ο蟮木幊陶Z言中,一個類就是一個數(shù)據(jù)類型的定義,其包括數(shù)據(jù)的集合,稱為成員變量;可以針對數(shù)據(jù)執(zhí)行的操作的集合,稱為方法(或者作為替代,稱為成員函數(shù))。所定義的數(shù)據(jù)類型中的數(shù)據(jù)的一個實際的集合稱為對象。在面向?qū)ο蟮木幊?OOP)的概念中,一個對象被稱為類的一個“實例”,因為它是根據(jù)類定義的數(shù)據(jù)結(jié)構(gòu)。在面向?qū)ο蟮某绦蛟O(shè)計語言中,用來產(chǎn)生一個對象的運(yùn)行時進(jìn)程稱為“實例化”,并且在運(yùn)行時存在的對象稱為是“已實例化的”。
面向?qū)ο蟮木幊陶Z言還提供所謂的“繼承性”。使用繼承性,可以根據(jù)一個或幾個現(xiàn)有的類(也叫“基”類)來定義一個新的類(稱為“派生”類),以便派生類繼承基類的一個或多個成員變量或方法。比如在JAVATM編程語言的AWT API中,“容器”就是稱為“組件”的基類的一個派生類,“容器”將包括“組件”的至少某些方法和成員變量。因此,可以說,“容器”是由“組件”派生出來的。在很多例子中,派生類將包含并非從基類繼承而來的其他的方法或成員變量。
并且,可以將一個派生類編寫為替換掉(override)基類的用于特定方法的代碼。比如一個基類“組件”可能具有一個方法叫做“顯示”(show),用來顯示GUI組件,派生類“容器”繼承了該方法。因為顯示一個容器(可能還包含其他的一些組件)比顯示一個普通的GUI組件更特殊,所以“容器”類會定義與“組件”類的代碼不同的用于“顯示”的代碼。
這一點非常重要,因為在大多數(shù)面向?qū)ο蟮恼Z言中,派生類中的對象被看作是基類的更特殊的實例。因此,“容器”對象可以存儲在屬于“組件”類型的變量中,或者采用“組件”作為參量的方法還可以采用“容器”作為參量,因為“容器”可以繼承“組件”的特征(即,成員變量和方法)。這種將派生類的對象看作它們好像仍是基類的實例的能力稱為“多態(tài)”。
在一個面向?qū)ο蟮腉UI API(諸如由JAVATM編程語言提供的那些)中, GUI組件被實例化為對象,并且在實例化的對象之間建立關(guān)系,以便定義GUI組件相對于彼此的位置和行為。比如“包含關(guān)系”就是GUI組件之間的關(guān)系,其將容器組件關(guān)聯(lián)到由該容器組件所包含的組件。例如,在JAVATM編程語言中,組件典型地通過容器的一個稱為“加入”(add)的方法來進(jìn)入與容器的包含關(guān)系中。
一個典型的GUI組件具有定義該組件的特征的一個或多個屬性。比如在典型的窗口GUI中的“按鈕”組件將具有用于定義該按鈕在顯示屏上的大小、顯示在按鈕表面上的文本和圖形、該按鈕的背景色、與該按鈕相關(guān)聯(lián)的快捷鍵等等的屬性。通常,實例化GUI組件的一部分程序代碼(比如,函數(shù)、方法、子程序、步驟等)還將包含用于將該組件的屬性設(shè)定為期望值的多行代碼。例如,在JAVATM編程語言以及其他的面向?qū)ο蟮木幊滔到y(tǒng)中,組件通常具有能夠被執(zhí)行來設(shè)定組件的特定屬性的方法。
在許多實例中,能夠記錄對于GUI的輸入(比如來自鍵盤或鼠標(biāo))以便保存和重放這些輸入將會是很有用的。比如記錄和重放輸入事件的能力將提高反復(fù)的GUI測試的效率。在許多GUI工具包中,諸如Eclipse公司開發(fā)的標(biāo)準(zhǔn)窗口小部件工具包(SWT)或JAVATMAWT/Swing API中,不存在給GUI組件分配永久的唯一標(biāo)識符的工具。所以每一次再現(xiàn)GUI(諸如在GUI應(yīng)用程序的后續(xù)運(yùn)行中),都要給GUI控件分配新的標(biāo)識符。這就使持久地保存輸入以便隨后回放變得很困難,因為沒有淺顯的方法來記住特定的輸入事件是以持久方式指向哪一控件的。
2005年4月28日的美國公開專利申請20050091510(MC KEON等人)提供了一種創(chuàng)建持久標(biāo)識符的方法。但是這種方法需要創(chuàng)建冗長且復(fù)雜的路徑標(biāo)識符來保持標(biāo)識符的唯一性。
所以,需要一種簡單且透明的方法,用于以持久的方式唯一地識別GUI元素以便隨后對所記錄的事件進(jìn)行回放。本發(fā)明提供了一種解決這一問題和其他問題的解決方案,并且提供優(yōu)于以往的解決方案的更多的優(yōu)勢。

發(fā)明內(nèi)容
本發(fā)明提供了一種用于記錄GUI事件以及用于持久地識別事件的目標(biāo)GUI組件以便隨后回放所記錄事件的方法、計算機(jī)程序產(chǎn)品和數(shù)據(jù)處理系統(tǒng)。根據(jù)本發(fā)明的優(yōu)選實施例,通過以明確限定的次序(例如深度優(yōu)先遍歷)遍歷組件層級結(jié)構(gòu),為每一個GUI組件分配一個數(shù)字標(biāo)識符。隨著在遍歷中訪問這些GUI組件,根據(jù)組件被訪問的次序順序地對組件進(jìn)行編號。當(dāng)接收到事件時,將這些事件與對應(yīng)于事件目標(biāo)組件的編號一起進(jìn)行記錄。在GUI程序的后續(xù)執(zhí)行中,再次以相同的次序?qū)蛹壗Y(jié)構(gòu)進(jìn)行遍歷,這可以和之前一樣使相同組件與相同標(biāo)識符相關(guān)聯(lián)。因此,通過將每個記錄的事件應(yīng)用到其由編號標(biāo)識的相應(yīng)的目標(biāo)組件,可以回放所記錄的事件。
前述內(nèi)容僅是概述并且因此必然包含對細(xì)節(jié)的簡化、概括和省略,所以,本領(lǐng)域內(nèi)的普通技術(shù)人員能認(rèn)識到這些概述只是說明性的,并且不以任何方式進(jìn)行限制。本發(fā)明的其他方面、發(fā)明特征和優(yōu)勢,僅通過權(quán)利要求書來限定,并將在隨后提出的非限制性詳細(xì)描述中變得更加明顯。


參照附圖,本領(lǐng)域的普通技術(shù)人員可以更好的理解本發(fā)明,并且本發(fā)明的多個目的、特征和優(yōu)勢將變得更加明顯,其中圖1是根據(jù)本發(fā)明一個優(yōu)選實施例的GUI組件層級結(jié)構(gòu)的示圖;圖2是根據(jù)本發(fā)明一個優(yōu)選實施例的修改的GUI組件層級結(jié)構(gòu)的示圖;圖3是根據(jù)本發(fā)明一個優(yōu)選實施例的經(jīng)過重新編號的GUI組件層級結(jié)構(gòu)的示圖;圖4是根據(jù)本發(fā)明一個優(yōu)選實施例的將舊的GUI組件標(biāo)識符映射到新的GUI組件標(biāo)識符的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)的示圖;圖5是一個流程圖,它描述了根據(jù)本發(fā)明一個優(yōu)選實施例的對GUI組件層級結(jié)構(gòu)進(jìn)行標(biāo)注的處理;圖6是一個流程圖,它描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的對事件進(jìn)行記錄以便隨后回放的處理;圖7A是諸如經(jīng)由圖6所示處理而生成的事件記錄的陣列的示圖;圖7B是根據(jù)本發(fā)明的一個優(yōu)選實施例的事件記錄的串行化形式的示圖;圖8是一個流程圖,它描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的對所記錄事件進(jìn)行回放的處理;以及圖9是其中能夠?qū)崿F(xiàn)本發(fā)明的一個優(yōu)選實施例的數(shù)據(jù)處理系統(tǒng)的框圖。
具體實施例方式
以下將提供對本發(fā)明的一個例子的詳細(xì)描述,并且其不應(yīng)當(dāng)被理解為限制本發(fā)明本身。相反,任意數(shù)目的變型都落入在說明書所附的權(quán)利要求中限定的本發(fā)明的范圍內(nèi)。
圖1是根據(jù)本發(fā)明的一個優(yōu)選實施例的GUI組件層級結(jié)構(gòu)100的示圖。GUI組件層級結(jié)構(gòu)100可以以包括但不限于Eclipse SWT和JAVATMAWT/Swing API的多個GUI工具包中的任意一種工具包來實現(xiàn)。根據(jù)該優(yōu)選的實施例,使用標(biāo)識符來標(biāo)識層級結(jié)構(gòu)100中的每個組件(例如,組件102、104和106)。在本例中,所選的標(biāo)識符是整數(shù),但是任意相似的可列舉的數(shù)字類型都可以用于表示標(biāo)識符??梢愿鶕?jù)明確限定的有序遍歷處理將這些標(biāo)識符編號分配給層級結(jié)構(gòu)100中的組件。
在這個特例中,根據(jù)從左到右的深度優(yōu)先遍歷(用虛線108表示)對組件進(jìn)行編號。如此,層級結(jié)構(gòu)100的根元素,即組件102的編號為“1”,因為它是在對層級結(jié)構(gòu)100的從左到右的深度優(yōu)先遍歷中被訪問的第一個組件。類似地,組件104是在從左到右的深度優(yōu)先遍歷中被訪問的第二個組件,因此它的編號為“2”;組件106是第三個被訪問的組件,因此它的編號為“3”,依次類推。因此,所得到的對層級結(jié)構(gòu)100中的組件的標(biāo)注完全由層級結(jié)構(gòu)100的拓?fù)鋪泶_定,而不是由任何其他數(shù)據(jù)(諸如組件自身內(nèi)部的其他數(shù)據(jù))來確定。因此,該標(biāo)注是持久的,即任何時候再現(xiàn)(具有同一拓?fù)涞?同一層級結(jié)構(gòu),都可以通過對該層級結(jié)構(gòu)執(zhí)行相同的明確限定的有序遍歷來重新創(chuàng)建相同的標(biāo)注。
此外,本領(lǐng)域的普通技術(shù)人員將能夠認(rèn)識到,所選擇的特定遍歷形式(例如,深度優(yōu)先、寬度優(yōu)先、從左到右、從右到左等)對于正確實施本發(fā)明來說并非是很關(guān)鍵的,只要所選擇的遍歷形式是一種使得對于每個可能的拓?fù)渲豢赡苡幸环N訪問組件的次序即可。盡管從左到右的深度優(yōu)先遍歷必然有此特性,但還有無數(shù)的其他可能的有序遍歷形式有此特性。
按圖2所示,一旦對組件層級結(jié)構(gòu)進(jìn)行了標(biāo)注,就可以對該層級結(jié)構(gòu)做出后續(xù)的修改。例如,在圖2中,修改的層級結(jié)構(gòu)200(其由圖1中的層級結(jié)構(gòu)100修改而來)中的組件202(標(biāo)注為“11”)與組件204(標(biāo)注為“7”)交換了位置。并且,還在層級結(jié)構(gòu)200中增加了附加的組件206,并將給定標(biāo)識符“12”,即依次為(“11”之后的)下一個數(shù)字標(biāo)識符。
如果必要或者如果方便,組件層級結(jié)構(gòu)一旦被修改,就要被重新編號。例如,圖3示出了層級結(jié)構(gòu)200的重新編號的版本300。當(dāng)這種重新編號發(fā)生時,可以創(chuàng)建諸如圖4中的表400(對應(yīng)于圖2和圖3中所示的標(biāo)注)之類的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu),以便將先前定義的標(biāo)識符(圖4中的列402)映射到相應(yīng)的新定義的標(biāo)識符(圖4中的列404)。
圖5-圖8示出了創(chuàng)建如圖1所示的已標(biāo)注的層級結(jié)構(gòu),以及使用該層級結(jié)構(gòu)來識別事件的目標(biāo)組件以便能夠記錄和回放這些組件和其相應(yīng)的目標(biāo)組件的處理。
圖5是表示根據(jù)本發(fā)明的一個優(yōu)選實施例的為GUI分配標(biāo)識符的處理的流程圖。這個處理在首次創(chuàng)建GUI本身時執(zhí)行,或者在對層級結(jié)構(gòu)進(jìn)行重新編號時執(zhí)行,以便與層級結(jié)構(gòu)中的組件相關(guān)聯(lián)的標(biāo)識符正確地反映層級結(jié)構(gòu)的當(dāng)前拓?fù)洹?br> 當(dāng)給GUI層級結(jié)構(gòu)標(biāo)注或重新標(biāo)注標(biāo)識符時,GUI組件的現(xiàn)有標(biāo)識符(如果有的話)的當(dāng)前值將被清除(方框502)。(在圖1提供的例子中,這些標(biāo)識符是數(shù)字標(biāo)識符。)然后,根據(jù)預(yù)先規(guī)定的次序?qū)蛹壗Y(jié)構(gòu)進(jìn)行遍歷,并且隨著在遍歷中訪問各個GUI組件,順序地對每個組件進(jìn)行編號(或者利用標(biāo)識符進(jìn)行標(biāo)記)(方框504)。
圖6是表示根據(jù)本發(fā)明的一個優(yōu)選實施例的對事件進(jìn)行記錄以便隨后回放的處理的流程圖。在本發(fā)明的一個優(yōu)選的實施例中,圖6所描述的處理被包括在事件處理器例程中,每當(dāng)事件發(fā)生時該例程就被異步地調(diào)用。當(dāng)檢測到事件時(方框600),檢測事件的目標(biāo)組件(方框602)。
隨后,創(chuàng)建與該事件相應(yīng)的事件記錄(方框604)。在該事件記錄中記錄與所標(biāo)識的目標(biāo)組件相對應(yīng)的數(shù)字標(biāo)識符(方框606)。還在該事件記錄中存儲與該事件有關(guān)的其他信息(方框608)。該信息可以包括事件類型(例如,鍵盤按壓、鼠標(biāo)點擊等)、屏幕坐標(biāo)或?qū)?yīng)于該事件的其他相似參數(shù),以及時戳或延遲信息。該時戳或延遲信息是可以用于在回放中重新創(chuàng)建事件的定時的任選信息,其諸如是從記錄最后事件開始已經(jīng)逝去的時間量。如圖8所示,該信息可以用于在所記錄的事件的應(yīng)用程序到GUI之間插入延遲的測量值。
圖6所描述的處理的結(jié)果是如圖7A所示的事件記錄(例如記錄701)的陣列700。陣列700表示所記錄事件的序列。陣列700中的每條記錄都包含與該事件相關(guān)的GUI組件的標(biāo)識符(標(biāo)識符702)、在該事件之前發(fā)生的延遲時間(延遲時間703),以及事件對象706的引用或指針704,其為事件的GUI工具包的表示形式,并且其包含與所關(guān)注事件的類型有關(guān)的信息。
陣列700中包含的信息可以存儲在持久存儲器中以供后續(xù)的使用。在本發(fā)明的一個優(yōu)選實施例中,完成該存儲的一種方式是將每條記錄(例如記錄701)轉(zhuǎn)換為串行化(文本)表示形式708,如圖7B所示。作為如何對事件記錄進(jìn)行串行化的一個例子,串行化的表示形式708包含前導(dǎo)符710,其表示串行化事件記錄的開始;所代表的事件的目標(biāo)組件的標(biāo)識符(標(biāo)識符712);延遲時間714;以及對該事件記錄所代表的事件的類型的識別(事件類型716)。本領(lǐng)域的普通技術(shù)人員能夠理解,在不偏離本發(fā)明的范圍和本質(zhì)的情況下并且沒有限制地,可以在本發(fā)明的實施例中使用事件記錄的各種各樣的不同串行化形式。此外,可以以這種串行化形式來存儲/代表不同數(shù)量的信息。例如,“鍵盤按壓”事件可以串行化為具有與所按壓的特定的鍵有關(guān)的附加信息。
作為替代,可以使用其他形式的持久存儲。這種其他形式的持久存儲可以作為圖7B中的串行化/平面文件(serialized/flat-file)存儲的補(bǔ)充或替代。例如,可以使用關(guān)系數(shù)據(jù)庫或其他形式的數(shù)據(jù)庫管理系統(tǒng)來存儲事件信息。
圖8是表示根據(jù)本發(fā)明的一個優(yōu)選實施例的對所記錄事件進(jìn)行回放的處理的流程圖。當(dāng)存在要進(jìn)行回放的事件時(方框800是),(從持久存儲器或從存儲器中)讀取下一個事件記錄(方框802)。然后,將當(dāng)前進(jìn)程或線程掛起(使其休眠)在事件記錄中所記錄的特定延遲時間量(方框804)。然后,從事件記錄中讀取與該事件的目標(biāo)組件相對應(yīng)的標(biāo)號,并通過如圖1所示地對GUI組件層級結(jié)構(gòu)進(jìn)行遍歷來對相應(yīng)的組件進(jìn)行定位(方框806)。然后,將所記錄的事件應(yīng)用到所識別的目標(biāo)組件(方框808)。重復(fù)該處理,直到?jīng)]有更多的事件需要回放為止(方框800)。
圖9示出了信息處理系統(tǒng)901,其是能夠執(zhí)行在此針對本發(fā)明的一個優(yōu)選實施例而描述的計算操作的計算機(jī)系統(tǒng)/服務(wù)器的簡化的例子。計算機(jī)系統(tǒng)901包括與主機(jī)總線902相連的處理器900。與總線902相連的還有層二(L2)高速緩沖存儲器904。主機(jī)-PCI橋906連接到主存儲器908,包括高速緩沖存儲器和主存儲器控制功能,并提供總線控制以處理PCI總線910、處理器900、L2高速緩存904、主存儲器908以及主機(jī)總線902之間的傳送。主存儲器908連接到主機(jī)-PCI橋906以及主機(jī)總線902。僅由主機(jī)處理器900使用的設(shè)備,諸如LAN(局域網(wǎng))卡930,連接到PCI總線910。服務(wù)處理器接口和ISA訪問通道912提供PCI總線910與PCI總線914之間的接口。以這種方式,PCI總線914與PCI總線910被隔離開。諸如閃存918之類的設(shè)備連接到PCI總線914。在一種實現(xiàn)中,閃存918包括BIOS(基本輸入輸出系統(tǒng))代碼,其包括用于各種低級別系統(tǒng)功能和系統(tǒng)引導(dǎo)功能的必要的處理器可執(zhí)行代碼。
PCI總線914提供了用于由主機(jī)處理器900和服務(wù)處理器916所共享的各種設(shè)備(包括,例如閃存918)的接口。PCI-ISA橋935提供處理PCI總線914與ISA總線940、通用串行總線(USB)功能性945、電源管理功能性955之間的傳送的總線控制,并且可以包括未示出的其他功能元件,諸如實時時鐘(RTC)、DMA(直接存儲器訪問)控制、中斷支持以及系統(tǒng)管理總線支持等。非易失性RAM 920連接到ISA總線940。服務(wù)處理器916包括JTAG和I2C總線922,其用于在初始化步驟中與處理器900通信。JTAG/I2C總線922還連接到L2高速緩存904、主機(jī)-PCI橋906以及主存儲器908,以便在處理器、服務(wù)處理器、L2高速緩存、主機(jī)-PCI橋以及主存儲器之間提供通信路徑。服務(wù)處理器916還可以訪問系統(tǒng)電源資源以便關(guān)閉信息處理設(shè)備901。
還可將外圍設(shè)備和一些輸入輸出(I/O)設(shè)備連接到各種接口(例如,連接到ISA總線940的并行接口962、串行接口964、鍵盤接口968和鼠標(biāo)接口970)。作為替代,很多I/O設(shè)備還可以由連接到ISA總線940的高級I/O控制器(未示出)來供應(yīng)。
為了將計算機(jī)系統(tǒng)901連接到另一個計算機(jī)系統(tǒng)以便通過網(wǎng)絡(luò)來復(fù)制文件,將LAN卡930連接到PCI總線910。類似地,為了通過電話線連接將計算機(jī)系統(tǒng)901連接到ISP(服務(wù)提供商)以便連接到因特網(wǎng),將調(diào)制解調(diào)器975連接在串行端口964和PCI-ISA橋935。
盡管在圖9中描述的計算機(jī)系統(tǒng)能夠執(zhí)行在此描述的處理,但這種計算機(jī)系統(tǒng)只是計算機(jī)系統(tǒng)的一個例子。本領(lǐng)域的普通技術(shù)人員將能夠理解,很多其他的計算機(jī)系統(tǒng)設(shè)計也能夠執(zhí)行在此描述的處理。
本發(fā)明的優(yōu)選實施例之一是客戶端應(yīng)用,即例如可以駐留在計算機(jī)隨機(jī)訪問存儲器中的代碼模塊中的一組指令(程序代碼)或其他功能描述性資料。在計算機(jī)需要之前,該組指令可以存儲在另一個計算機(jī)存儲器中,例如,在硬盤驅(qū)動器中,或者在諸如光盤(以便最終在CD ROM中使用)或軟盤(以便最終在軟盤驅(qū)動器中使用)之類的可移動存儲器中,或者通過因特網(wǎng)或其他計算機(jī)網(wǎng)絡(luò)下載。如此,本發(fā)明可以作為在計算機(jī)中使用的計算機(jī)程序產(chǎn)品來實現(xiàn)。此外,盡管所描述的各種方法都方便地以由軟件選擇性地激活或重新設(shè)置的通用計算機(jī)的形式來實現(xiàn),但是本領(lǐng)域的普通技術(shù)人員還能夠理解,這些方法還可以以硬件形式、以固件形式或者以構(gòu)造來執(zhí)行所需方法步驟的更專門的設(shè)備的形式來實現(xiàn)。功能描述性資料是為機(jī)器賦予功能性的信息。功能描述性資料包括但不限于計算機(jī)程序、指令、規(guī)則、事實、可計算函數(shù)的定義、對象以及數(shù)據(jù)結(jié)構(gòu)。
權(quán)利要求
1.一種計算機(jī)實現(xiàn)的方法,包括根據(jù)對圖形用戶界面組件層級結(jié)構(gòu)進(jìn)行的有序遍歷,為所述層級結(jié)構(gòu)中的多個組件分配標(biāo)識符;檢測事件;將與所述事件相關(guān)聯(lián)的目標(biāo)組件的相應(yīng)標(biāo)識符與所述事件一起進(jìn)行記錄。
2.根據(jù)權(quán)利要求1所述的方法,其中所述對所述層級結(jié)構(gòu)進(jìn)行的有序遍歷是深度優(yōu)先遍歷。
3.根據(jù)權(quán)利要求1所述的方法,其中所述標(biāo)識符是數(shù)字標(biāo)識符。
4.根據(jù)權(quán)利要求1所述的方法,其中將所述事件連同與從前一事件開始已經(jīng)逝去的時間量相對應(yīng)的延遲量一起進(jìn)行記錄。
5.根據(jù)權(quán)利要求1所述的方法,其中將所述事件記錄在持久存儲器中。
6.根據(jù)權(quán)利要求1所述的方法,還包括通過再現(xiàn)關(guān)于所述目標(biāo)組件的所記錄事件,回放所記錄事件,其中使用所記錄的標(biāo)識符來識別所述目標(biāo)組件。
7.根據(jù)權(quán)利要求1所述的方法,還包括對所述組件層級結(jié)構(gòu)進(jìn)行修改以獲得已修改的層級結(jié)構(gòu);以及根據(jù)對所述已修改的層級結(jié)構(gòu)進(jìn)行的有序遍歷為所述多個組件分配新的標(biāo)識符。
8.根據(jù)權(quán)利要求7所述的方法,還包括生成一個定義到所述新的標(biāo)識符的映射的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)。
9.根據(jù)權(quán)利要求1所述的方法,還包括將另外的組件增加到所述組件層級結(jié)構(gòu);以及響應(yīng)于增加所述另外的組件,為所述另外的組件分配下一個標(biāo)識符,其中所述下一個標(biāo)識符順序地跟在已經(jīng)分配的最后的標(biāo)識符后面。
10.一種數(shù)據(jù)處理系統(tǒng),包括至少一個處理器;與所述至少一個處理器相關(guān)聯(lián)的存儲器;以及所述存儲器中的一組指令,其中所述至少一個處理器執(zhí)行所述一組指令以執(zhí)行以下操作根據(jù)對圖形用戶界面組件層級結(jié)構(gòu)進(jìn)行的有序遍歷,為所述層級結(jié)構(gòu)中的多個組件分配標(biāo)識符;檢測事件;以及將與所述事件相關(guān)聯(lián)的目標(biāo)組件的相應(yīng)標(biāo)識符與所述事件一起進(jìn)行記錄。
11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中將所述事件連同與從前一事件開始已經(jīng)逝去的時間量相對應(yīng)的延遲量一起進(jìn)行記錄。
12.根據(jù)權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中將所述事件記錄在持久存儲器中。
13.根據(jù)權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中所述至少一個處理器執(zhí)行所述一組指令以執(zhí)行以下操作通過再現(xiàn)關(guān)于所述目標(biāo)組件的所記錄事件,回放所記錄事件,其中使用所記錄的標(biāo)識符來識別所述目標(biāo)組件。
14.根據(jù)權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中所述至少一個處理器執(zhí)行所述一組指令以執(zhí)行以下操作對所述組件層級結(jié)構(gòu)進(jìn)行修改以獲得已修改的層級結(jié)構(gòu);以及根據(jù)對所述已修改的層級結(jié)構(gòu)進(jìn)行的有序遍歷為所述多個組件分配新的標(biāo)識符。
全文摘要
本發(fā)明公開了一種用于記錄GUI事件以及用于持久地識別事件的目標(biāo)GUI組件以便隨后回放所記錄事件的方法、計算機(jī)程序產(chǎn)品和數(shù)據(jù)處理系統(tǒng)。根據(jù)本發(fā)明的優(yōu)選實施例,通過以明確限定的次序遍歷組件層級結(jié)構(gòu),為每一個GUI組件分配一個數(shù)字標(biāo)識符。隨著在遍歷中訪問這些GUI組件,根據(jù)組件被訪問的次序順序地對組件進(jìn)行編號。當(dāng)接收到事件時,將這些事件與對應(yīng)于事件的目標(biāo)組件的編號一起進(jìn)行記錄。在GUI程序的后續(xù)執(zhí)行中,再次以相同的次序?qū)蛹壗Y(jié)構(gòu)進(jìn)行遍歷,這使得以相同的方式將標(biāo)識編號分配給組件。因此,通過將每個記錄的事件應(yīng)用到經(jīng)由編號進(jìn)行識別的相應(yīng)的目標(biāo)組件,可以回放所記錄的事件。
文檔編號G06F9/44GK1987775SQ20061013711
公開日2007年6月27日 申請日期2006年10月20日 優(yōu)先權(quán)日2005年12月21日
發(fā)明者巴里·A·費根鮑姆 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
蕲春县| 社会| 边坝县| 湖南省| 古丈县| 凉城县| 淳安县| 易门县| 眉山市| 玉环县| 镇赉县| 科技| 临沂市| 甘肃省| 通州市| 彭泽县| 清新县| 武鸣县| 驻马店市| 奎屯市| 平谷区| 阜阳市| 宁津县| 阳高县| 延长县| 德保县| 合作市| 阿巴嘎旗| 西青区| 阳城县| 济阳县| 甘肃省| 石柱| 罗甸县| 宁陕县| 虞城县| 皋兰县| 通道| 泰兴市| 南乐县| 伊宁市|