專利名稱::用戶接口自動框架的類和接口的制作方法
技術領域:
:本發(fā)明涉及輔助技術(assistivetechnology)、自動化測試和其它產品領域,所述產品對用戶接口信息以及具有用戶接口信息的這些產品的交互作用進行收集。
背景技術:
:輔助技術(AT)的產品是用于為在學習、交流和訪問計算機軟件所含有和表達的信息這些方面需要輔助的計算機用戶提供幫助。這些產品需要與計算機接口相關的信息。同樣,現(xiàn)有的自動化測試產品和用戶接口命令輔助程序也需要有關用戶接口的信息。當前,這些產品并不具有足夠的用戶接口(UI)信息源。上述3種類型的產品(客戶)需要得到其它方面的必要支持以實現(xiàn)(1)收集有關應用程序用戶接口的信息;(2)無論采用什么技術創(chuàng)建UI,都能可編程地揭示和詢問UI單元;(3)產生鍵盤和指針輸入;以及(4)了解哪種類型的狀態(tài)或功能當前有效。目前,還沒有哪種單一技術可以為某一AT產品提供所有這些能力。而且,當前的AT產品并不都是與所有的圖形操作系統(tǒng)(OS)技術完全兼容,并且缺乏以集中方式過濾和調整冗余或誤導通知的能力。而另一缺陷在于現(xiàn)有的自動和存取基本架構缺乏可擴展性,并且因此需要改變OS層以添加新功能。而且,目前,為收集有關應用程序用戶接口的信息,AT產品必須寫入應用程序定制代碼以便為用戶獲得信息。而寫入這些應用程序定制代碼的處理是費時并需要不斷維護。當前的自動基礎架構也缺乏以相容方式過濾和調整冗余或誤導事件通知的能力。這樣,事件的消費者就需要獨立地過濾信息。當前的系統(tǒng)允許將AT產品以3級顆粒度(granularity)級別請求事件通知(1)桌面上的一切;(2)在特定的進程中(例如打開字處理程序);或3)在特定進程中的線程(進程中的多對象操作)。目前,當客戶接收一個事件,它就對產生了該事件的特定窗口的窗口句柄和指示哪里產生事件的其它信息位進行接收??蛻糇龀鼋徊嫣幚碚{用以檢索與該事件相關的UI對象。利用該對象,客戶可以做出附加交叉處理調用以請求有關該對象的信息。如果客戶需要五段信息,那么,客戶就必須做出5次交叉處理調用。交叉處理調用是非常緩慢的,因此,使用當前存取基礎架構收集UI信息的執(zhí)行成本是很高的。這種類型的已知情況在圖11中示出。服務器應用程序12激活事件6。核心程序14判定必須通知哪些客戶,并向感興趣的客戶10發(fā)送事件通知18。客戶10經過處理邊界2向服務器應用程序12發(fā)出對有關事件通知18的對象的請求16。服務器應用程序12返回對象20,并且隨后,客戶10可以開始發(fā)送對與激活事件的UI控制相關信息的請求16。服務器應用程序12經過處理邊界2將所請求的信息20返回給客戶10。另一種選擇是將客戶代碼作為進程中的動態(tài)鏈接庫(.DDL)進行加載。這種選擇具有一些缺陷。首先,它需要系統(tǒng)協(xié)助將客戶代碼加載到進程中。其次,由于一旦將客戶代碼加載到應用程序的進程中,就很難對其收集的信息進行限制,因此,它會產生安全問題。再次,對于客戶來說為了使其成為有效的技術,就必須將其加載到系統(tǒng)上運行的每個進程中。比較理想的做法是僅將可信任的客戶加載到另一應用程序進程中。而且,需要系統(tǒng)能夠給予客戶對其想要接收的事件通知進行規(guī)定的能力。在已知的系統(tǒng)中,客戶可能需要做出大量交叉處理調用,并隨后分析信息以判定它是否對該事件感興趣。需要一種機制能夠以更加有效的方式執(zhí)行對該事件的過濾,并能很容易地進行升級以支持新的系統(tǒng)或應用程序事件。而且,需要一種僅使用可信任成份的系統(tǒng),以緩解安全問題。目前,當查詢有關用戶接口的信息時,要求AT產品對樹進行訪問,該樹是特定UI框架的本身結構。因此,對于多個UI框架就需要多個樹來傳送用戶接口信息。這些不同的樹可能含有不感興趣的信息或對用戶不可見,例如隱藏的容器對象,它對最終用戶控制的可視UI控制進行管理。因此,就需要一種僅具有用戶感興趣的節(jié)點的單一標準的樹。需要一種解決方案來解決對AT產品、自動測試工具和命令輔助程序的需求。這種解決方案可以由所有的圖形OS技術使用,并能允許對所有形式的UI和UI組件的存取訪問。
發(fā)明內容本發(fā)明針對一種為客戶提供用戶接口信息的方法和計算機應用程序。在本發(fā)明的一個方面,提供了一種在為客戶提供用戶接口信息的存取系統(tǒng)中使用的工具系統(tǒng)。該存取系統(tǒng)包括客戶側和提供者側。該工具系統(tǒng)包括客戶側自動工具,包括查詢用戶接口信息的客戶自動類。該客戶自動類包括事件登記工具和邏輯單元揭示工具。這組工具還包括提供者側自動工具,以便為客戶提供用戶接口信息。提供者側自動工具包括自動提供者類,具有為客戶提供事件信息的工具。在另一方面,客戶側工具組包括客戶側自動機制和客戶側邏輯單元機制,客戶側自動機制包含從提供者側查詢用戶接口事件信息,而客戶側邏輯單元機制包括表示在邏輯樹中用戶接口單元的邏輯單元類。在另一方面,提供者工具包括提供者側自動類和提供者側自動接口,提供者側自動類包括用于向客戶提供事件通知的工具,而提供者側自動接口用于揭示用戶接口屬性。提供者側工具進一步包括原始單元接口,用于返回有關特定相關單元的信息;以及原始單元上下文(context)接口,用于管理與特定事件無關的事件和功能。在另一方面,本發(fā)明包括應用程序接口系統(tǒng),用于通過存取系統(tǒng)向客戶提供用戶接口信息。該存取系統(tǒng)包括將用戶接口信息從提供者側傳送到客戶側的一種機制,以及有選擇性地揭示用戶接口信息的邏輯樹。應用程序接口系統(tǒng)包括用于幫助客戶獲得用戶接口信息的客戶側應用程序接口。客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類和輸入類。提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口和控制模式提供者接口。在另一個方面,本發(fā)明包括一種計算機可執(zhí)行方法,用于通過存取系統(tǒng)向客戶提供用戶接口信息。該方法包括用于幫助客戶獲得用戶接口信息的客戶側應用程序接口,其中客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類和輸入類。該方法還包括提供提供者側應用程序接口以響應客戶請求,該提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口和控制模式提供者接口。在另一方面,本發(fā)明包括一種計算機可執(zhí)行方法,用于通過存取系統(tǒng)向客戶提供用戶接口信息。該方法包括使用從客戶自動類中選擇的事件句柄請求用戶接口信息,以及包括一種使用相應的引發(fā)事件方法來為提供者提供用戶接口事件通知的方法。對于本領域的熟練技術人員來說,本發(fā)明的其它優(yōu)點和新穎特征將通過下面的描述變得更加顯而易見,或可以從本發(fā)明的實施中了解。本發(fā)明將結合下述附圖進行詳細描述。圖1是適用于實現(xiàn)本發(fā)明的計算系統(tǒng)環(huán)境框圖;圖2是在存取系統(tǒng)、客戶環(huán)境和服務器環(huán)境之間的互動框圖;圖3是說明存取系統(tǒng)核心的組件框圖;圖4(A)-4(D)是說明從本機單元(nativeelement)創(chuàng)建邏輯樹;圖5是示出創(chuàng)建邏輯樹的過程次序的流程圖;圖6示出形成邏輯單元的對話框和其組件;圖7是說明涉及激活本發(fā)明事件機制過程的流程圖;圖8是說明本發(fā)明實施例中客戶側API的框圖;圖9是說明本發(fā)明實施例中服務器側API的框圖;圖10是說明使用本發(fā)明存取系統(tǒng)的實施例說明在客戶和服務器之間互動的框圖;圖11是示出已知的事件通知系統(tǒng)。具體實施例方式示范操作環(huán)境圖1說明了可以實現(xiàn)本發(fā)明的一個示范計算系統(tǒng)環(huán)境100的實例。該計算系統(tǒng)環(huán)境100僅是一種適合的計算系統(tǒng)環(huán)境的示例,并非要將本發(fā)明的使用或功能范圍局限于此。計算環(huán)境100也不能解釋為必須對有關示范操作環(huán)境100說明的任一組件或組合具有依賴或要求。本發(fā)明可以用計算機可執(zhí)行指令的通用環(huán)境來描述,例如計算機執(zhí)行的程序模塊。通常,程序模塊包括執(zhí)行特定任務或執(zhí)行特定抽象數(shù)據(jù)類型的例行程序、程序、對象、組件、數(shù)據(jù)結構等。而且,本領域的技術人員可以理解本發(fā)明可以用其它計算機系統(tǒng)配置實現(xiàn),包括手持設備、多處理器系統(tǒng)、基于微處理器或可編程的消費類電子產品、迷你計算機、大型計算機等。本發(fā)明還可以在分布式計算環(huán)境中實現(xiàn),其中由通過通信網絡鏈接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,在本地和遠程計算機存儲媒體中都可包含程序模塊,所述媒體包括存儲器存儲設備。參照圖1,一種執(zhí)行本發(fā)明的示范系統(tǒng)100包括以計算機110形式出現(xiàn)的通用計算設備,它包括處理單元120、系統(tǒng)存儲器130和系統(tǒng)總線121,它將包括系統(tǒng)存儲器在內的各種系統(tǒng)組件耦合到處理單元120。計算機110典型地包括各種計算機可讀媒體。作為示例而不是限定,計算機可讀媒體包括計算機存儲媒體和通信媒體。系統(tǒng)存儲器130包括易失和/或非易失存儲器形式的計算機存儲媒體,例如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132。在ROM131中通常存儲了基本的輸入/輸出系統(tǒng)133(BIOS),它包含幫助,例如在啟動期間,在計算機110各單元之間傳輸信息的基本例行程序。RAM132通常包括處理單元120需要立刻存取和/或當前正在處理的數(shù)據(jù)和/或程序模塊。作為示例而不是限定,圖1示出了操作系統(tǒng)134、應用程序135、其它程序模塊136以及程序數(shù)據(jù)137。計算機110可以包括其它可移動/不可移動、易失/非易失計算機存儲媒體。僅作為示例而不是限定,圖1示出了對不可移動非易失磁性媒體進行讀寫的硬盤驅動器141、對可移動非易失磁盤152進行讀寫的磁盤驅動器151,以及對可移動非易失光盤156,例如CDROM或其它光媒體進行讀寫的光盤驅動器155。其它可以用于示范操作環(huán)境的可移動/不可移動、易失/非易失計算機存儲媒體包括(但不局限于)磁帶盒、閃存卡、數(shù)字通用盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅動器141通常通過不可移動存儲器接口例如接口140與系統(tǒng)總線121相連,而磁盤驅動器151和光盤驅動器155通常通過可移動存儲器接口例如接150與系統(tǒng)總線121相連。在圖1中討論和說明的驅動器及其相關計算機存儲媒體為計算機110提供了對計算機可讀指令、數(shù)據(jù)結構、程序模塊和其它數(shù)據(jù)的存儲。在圖1中,例如,硬盤驅動器141示出存儲了操作系統(tǒng)144、應用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件既可與操作系統(tǒng)134、應用程序135、其它程序模塊136以及程序數(shù)據(jù)137相同,也可以不同。對操作系統(tǒng)144、應用程序145、其它程序模塊146和程序數(shù)據(jù)147給出不同的參考標記是為了說明至少它們是不同的副本。通過輸入設備,例如鍵盤162和指示設備161(通常為鼠標、軌跡球或觸摸板),用戶將命令和信息輸入到計算機110。其它輸入設備(未示出)包括麥克風、操縱桿、游戲手柄、衛(wèi)星天線、掃描儀等。這些設備和其它的輸入設備通常通過耦合到系統(tǒng)總線的用戶輸入接口160連接到處理單元120,但也可以通過其它接口和總線結構,例如并行口、游戲端口或通用串行總線(USB)進行連接。通過一種接口,例如視頻接口190,也可將監(jiān)視器191或其它類型的顯示設備連接到系統(tǒng)總線121。除了監(jiān)視器,計算機還可以包括其它通過輸出外圍接口195連接的外圍輸出設備,例如揚聲器197和打印機196。在本發(fā)明中的計算機110可以在使用邏輯連接到一個或多個遠程計算機,例如遠程計算機180,的聯(lián)網環(huán)境中工作。遠程計算機180可以是個人計算機,并且雖然在圖1中僅示出了存儲器存儲設備181,但它通常包括上述有關計算機110所描述的許多單元或所有的單元。圖1中描述的邏輯連接包括局域網(LAN)171和廣域網(WAN)173,但也包括其它網絡。當在LAN聯(lián)網環(huán)境中使用,計算機110通過網絡接口或適配器170連接到LAN171。當在WAN聯(lián)網環(huán)境中使用,計算機110通常包括調制解調器172或其它在WAN173上建立通信的裝置,例如因特網。調制解調器172,可以是內置也可以外置,可以通過用戶輸入接口160或其它合適的機制連接到系統(tǒng)總線121。在聯(lián)網的環(huán)境,針對計算機110描述的程序模塊或部分程序模塊可以存儲在遠程存儲器存儲設備上。通過示例但不是限定,圖1示出將遠程應用程序185駐留在存儲器設備181上。需要了解所示的網絡連接只是示例,還可以使用其它裝置來建立計算機之間的通信鏈路。雖然,計算機110的許多其它內部組件并沒有示出,但本領域的技術人員可以理解這些組件和互連已經眾所周知。因此,有關計算機110的內部構造沒有必要在本發(fā)明中進一步詳述。存取系統(tǒng)結構如圖2所示,存取系統(tǒng)200與客戶環(huán)境300和服務器環(huán)境400交互。存取系統(tǒng)200可以在上述圖1所述的計算機環(huán)境100中實現(xiàn)。存取系統(tǒng)200包括便于與客戶300交互的客戶側存取接口220,便于與服務器側400交互的服務器側存取接口230,以及存取系統(tǒng)核心201。本發(fā)明的存取系統(tǒng)200提供了可編程訪問用戶接口(UI)的客戶側API305以及提供者側API440。存取系統(tǒng)200允許應用程序自身或任何它們所使用的組件可存取??蛻舡h(huán)境300最好包括輔助技術(AT)產品或自動UI測試工具。服務器側400可執(zhí)行多種不同的技術,如圖2所示。服務器系統(tǒng)410包括適配器412和核心程序414,它可以在第一類型的UI中找到。服務器系統(tǒng)420包括代理組件422和控制程序424,它可以在第二類型的UI中找到,例如由位于華盛頓州雷蒙德的微軟公司所出品的微軟操作系統(tǒng)產品中使用的Win32UI。服務器系統(tǒng)430包括適配器432和內部OM434,它可以在可選的第三類型UI中找到。如圖3所示,包含在存取系統(tǒng)200中的一種事件機制依賴于UI自動客戶202和UI自動服務器204,便于與客戶環(huán)境300和服務器環(huán)境400交互。UI自動客戶202和UI自動服務器204將參照本發(fā)明的事件機制210在下面詳細描述。本發(fā)明的存取系統(tǒng)200為客戶(AT產品)提供如下能力1)收集有關應用程序用戶接口的信息;2)無論采用什么技術創(chuàng)建UI,都能可編程地揭示和詢問UI單元;(3)產生鍵盤和指針輸入;以及(4)了解哪種類型的狀態(tài)或功能當前有效。存取系統(tǒng)200允許應用程序使得其自身和其組件可存取。如圖2和3所示的結構展示了存取系統(tǒng)200的一些主要方面,包括1)邏輯UI樹;2)控制模式;3)事件機制;4)屬性;和5)客戶和服務器側API,所有這些都將在下面詳細描述。UI存取邏輯樹222存取系統(tǒng)200的一個完整組件就是邏輯樹222,如圖4(D)所示的一個示例。樹222包含在客戶側存取接口220中。邏輯樹是UI單元的基礎結構層次的過濾圖,而不是必須由控制或應用程序開發(fā)程序所執(zhí)行的單獨樹。實際上,它切斷了一些意義明確的屬性,感興趣的或不感興趣的,這些屬性指示了在邏輯樹222中是否應該揭示出該結構單元。存取系統(tǒng)核心201消化這些信息以產生過濾的UI邏輯樹222,隨后,將其提供給AT產品或測試腳本。邏輯樹222是單元樹,每個單元表示了一種控制、控制中的一項或一分組結構,它們可以是對話框、窗格或框架。邏輯樹222的結構應該表示用戶可察覺到的應用程序UI(即使該控制實際上是使用一種不同的基礎結構執(zhí)行)。樹應該隨時間保持穩(wěn)定。只要對于用戶來說應用程序看上去是相同的,即使在場景后的應用程序執(zhí)行細節(jié)已經變化,表示該應用程序的邏輯樹222也要保持相同。為結構和執(zhí)行原因而存在的本機的一些單元,例如在微軟OS產品中的外殼“ShDocView”窗口,不應該在該樹中出現(xiàn),因為用戶不能察覺到它們。邏輯樹222是從多個分段中創(chuàng)建的單一樹,它能將多個不同的處理進行統(tǒng)一,因此,使得它們對于客戶端來說是相同的。邏輯樹222允許批量檢索,并且能獲得屬性列表的一個值。當用戶正常地激活跨處(crossprocess)調用以請求值時,存取系統(tǒng)200將通過使用邏輯樹222來取出它們。邏輯樹222是從用于創(chuàng)建原始樹的分段中構建,而不象已有系統(tǒng)中在一步中就構建成。如圖5所示,有3個主要過程來創(chuàng)建邏輯樹222。在過程72,存取系統(tǒng)200定位基礎技術的本機各單元,并到達如圖4(A)所示的本機樹。在過程74,存取系統(tǒng)200組合本機各單元以形成如圖4(B)所示的原始樹20。最后,在過程76,通過隱藏原始樹20中不感興趣的組件來獲得邏輯樹222,如圖4(D)所示。圖4(A)說明了兩種本機樹10和14,它們是從基礎技術,例如Win32UI或任意其它可用UI的本機單元中構建的。本機樹10包括父節(jié)點11和多個彼此具有不同關系的后代12。同樣,本機樹14包括具有多個子節(jié)點16的父節(jié)點15。子節(jié)點16可以彼此作為兄弟節(jié)點來描述。如圖4(B)所示,本機樹10和14可以結合形成原始樹20。原始樹20包括父節(jié)點21,具有兩個子節(jié)點22和30。子節(jié)點22具有后代23-29,而子節(jié)點30具有后代31-33。該原始樹20是本機樹10和14、形成節(jié)點22-29的本機樹10的節(jié)點以及形成節(jié)點30-33的本機樹14的節(jié)點的組合。通過如圖4(C)和4(D)概括所示的方法,原始樹20轉換成了邏輯樹222。在從原始樹20轉換為邏輯樹222的過程中,開發(fā)程序可以在原始樹中插入暗示。開發(fā)程序可以將原始樹20中的節(jié)點標記為“隱藏自身”或“隱藏自身及子節(jié)點”或“隱藏節(jié)點的子節(jié)點”等。開發(fā)程序也可以橫向移動節(jié)點或將節(jié)點放置在子節(jié)點之前。對原始樹20中這些“暗示”和修改被用來形成邏輯樹222。例如,在圖4(C)中,開發(fā)程序將原始樹20的節(jié)點24-26和33標記為不感興趣,如框40和41所示。通常,含有對用戶不可見的單元的節(jié)點被標記為不感興趣。而有關可視UI的節(jié)點通常被認為是感興趣的,并且將被包含在邏輯樹222中提供給AT客戶300使用。如圖4(D)所示,標記為不感興趣的這些節(jié)點并沒有包含在邏輯樹222中。存取系統(tǒng)200使用邏輯樹222來查找有關事件的信息、系統(tǒng)的狀態(tài)、對象的位置以及控制信息。已知的系統(tǒng)不具備在它們的樹中進行研究的能力。而邏輯樹222可以基于客戶300的選擇進行瀏覽,并提供信息,而不用顧慮服務器側使用的應用程序。邏輯樹222是一種單獨的標準樹,它是UI的邏輯表現(xiàn),并且形成只包含客戶200感興趣單元的形式。因此,邏輯樹222呈現(xiàn)出一種層次體系,能精密映射到展示給最終用戶的結構,而不是強迫AT產品過濾UI單元的結構體系并猜測呈現(xiàn)給最終用戶的模式。這對AT產品將UI描述給用戶的任務進行了大大簡化,并幫助了用戶與應用程序的互動。因為該邏輯UI樹222是存取系統(tǒng)200的基礎部分,存取系統(tǒng)200所有的其它組件都是根據(jù)邏輯樹222工作。例如,圖6示出具有非常簡單的結構的簡易對話框60。然而,當審視現(xiàn)有可用存取技術時,該對話框60的結構卻驚人地復雜。它包含264個AT產品要過濾的對象,以便只向最終用戶揭示有意義的對象。通過存取系統(tǒng)200和其對邏輯UI樹222的支持,擁有該對話框60的開發(fā)程序可以設定一些屬性以將下述圖6中所示的結構呈現(xiàn)給AT產品300。如圖6所示,對于“運行”對話,開發(fā)程序可以指示飛行窗口圖形62和“請打入你需要打開的程序、目錄、文檔的名字或因特網資源和窗口”63為感興趣的。開發(fā)程序也可以指定包含記事本、字、計算器等的組合框64、以及確定65、取消66和瀏覽67按鈕為感興趣。這為開發(fā)程序提供了一種低成本機制來標記它們的單元體系,并因此,通過UI存取系統(tǒng)200產生它們的應用程序UI的邏輯表現(xiàn)。每個所示出的特征都可以由與該節(jié)點與邏輯樹222中每個其它節(jié)點具有特定關系的一個節(jié)點表示。該邏輯表現(xiàn)為測試團隊、AT產品或客戶300提供了直接利益。雖然邏輯樹222是用戶最終感興趣的東西,但原始樹20也具有一些重要的功能。邏輯樹222僅含有用戶能夠涉及的單元,而原始單元樹20含有表示基礎框架的執(zhí)行結構的節(jié)點,例如22。例如,對于Win32UI分段,該樹將包含表示HWND的節(jié)點。從某方面來說,原始樹20是在邏輯單元樹222和基礎框架自身的本機單元樹之間的“中間結構”。原始樹20作為創(chuàng)建邏輯單元樹222的基礎使用,并且本機元素通過它首先插入到系統(tǒng)中。原始樹20也可用于調試和測試。對于定點或描述哪里是特定有問題的節(jié)點是很有用的。基本原始單元節(jié)點的功能包括瀏覽原始單元樹的方法;跳轉到對應邏輯單元(存在的話)的方法;含有該單元“調試字符串”的屬性,例如,對于HWND節(jié)點為“HWNDOx483FE”;以及其它“在場景基礎架構之后”的方法。這些其它方法實現(xiàn)了命中測試和定位;事件;以及揭示框架可以很容易提供的屬性(例如聚焦、有效)。原始單元樹20含有節(jié)點22-33,它們表示了來自不同再現(xiàn)引擎的單元。該原始單元樹用作再現(xiàn)引擎的開始點以將它們自身插入到存取系統(tǒng)200中,并從適應本機單元的輕適配對象(例如從Win32的HWND)創(chuàng)建成標準的邏輯樹222。它還適用于處理主持轉換(hostingtransition),其中一種技術主導另一種技術。由于原始單元樹20是邏輯樹222創(chuàng)建的基礎,它可以用于檢驗邏輯樹222是否完成、連接,并能用于檢查未說明單元。該原始單元樹20可進一步用于其它類似基礎結構的任務例如,提供一些基礎單元ID,并提供一些基礎框架配置的單元屬性,例如聚焦、有效和位置。原始單元樹20并不是AT產品或客戶300的主要信息源,并不用于邏輯瀏覽,且不揭示給最終用戶。原始單元樹20也不能用于獲取樹中的單元位置,因此,它能及時返回到一些未來的點。邏輯單元樹222執(zhí)行所有這些功能。原始單元樹20通??梢詮幕A再現(xiàn)技術(HWND,Element)的原始單元機械地創(chuàng)建,而不需要表示邏輯單元的知識。因此,它可用于查找邏輯樹222沒有考慮到的原始單元。原始單元樹20是一種有用的調試和診斷工具,因為它允許對獲取的節(jié)點位置進行類似“堆棧(stack-dump)”的描述。而且,已知的系統(tǒng)中的樹是基于代碼特定標準,而難以用逆向技術執(zhí)行。本方法使用的是通用的抽象“原始單元”類型,可以用任何基礎再現(xiàn)技術執(zhí)行和代表。為了獲得原始單元樹,調用原始單元根節(jié)點將獲得桌面單元,通過驗證其父節(jié)點為Null來確定該根節(jié)點,它是所有其它節(jié)點的最終祖先。為了獲得其它單元,調用一種從特定點獲得原始單元的方法將返回使用有效屏幕坐標的單元。在獲得原始單元樹之后,可以通過檢查單元(父節(jié)點、繼承節(jié)點和子節(jié)點)來檢驗和驗證該樹。在操作中,客戶300可以使用關系,例如父節(jié)點、下一繼承節(jié)點、前一繼承節(jié)點、第一子節(jié)點、最后子節(jié)點等,來瀏覽原始單元樹20。客戶300可以從原始單元跳轉到邏輯樹222中的對應邏輯單元。事件機制當客戶300想要保持被告知各個事件,客戶300可以通過如圖3所示的UI自動客戶202進行登記以獲得信息。客戶300指定它希望接收的對象信息、它想要信息去的地方以及想要取回的屬性列表??蛻粽埱笏偷経I自動客戶202。UI自動客戶202能夠監(jiān)視桌面上的任何處理。UI自動服務器204保持對監(jiān)聽的客戶300的追蹤,并知道如何取回給UI自動客戶202。UI自動客戶202告知UI引擎206客戶的興趣,所以,UI引擎206知道何時告知UI自動服務器204該事件。UI引擎不需要使用客戶的建議,但可以選擇它以免總是要將事件通知UI自動服務器204,或者在僅當客戶監(jiān)聽所有事件時通知UI自動服務器204。該建議在僅當一個客戶在監(jiān)聽事件時如果UI引擎想要開啟UI自動服務器204通知時很有效。UI引擎會這樣做以避免UI可能的速度下降,和避免加載它并不需要的代碼模塊。UI引擎206隨后告知UI自動服務器204一個UI事件。UI自動服務器204將所請求的邏輯單元返回給客戶300,并將信息發(fā)送給客戶300,所述信息包括客戶300所請求的事件的屬性。UI自動服務器204決定哪些信息是在客戶所請求的范圍,并且僅當該信息是感興趣時才形成一個邏輯單元。形成邏輯單元包括在UI自動服務器側的預取客戶所指定的在處理事件時其要使用的屬性組。例如,UI自動服務器204可以揭示組合框的邏輯單元。其范圍是該組合框和其子節(jié)點。該客戶300可以請求子節(jié)點/父節(jié)點/依賴關系來定義登記階段期間的范圍。在UI自動服務器204判定信息是否在所請求范圍內之后,就創(chuàng)建一個邏輯單元。該UI自動客戶202通過對從UI自動服務器204接收所請求信息的目標應用程序進行對話,并將對象發(fā)送到客戶300上的合適空間來為客戶300服務。當客戶300登記以接收事件通知時,就創(chuàng)建UI自動服務器204。作為示例,UI引擎206可以是運行微軟Word字處理應用程序??蛻?00登記需要名字屬性的變化??蛻舻牡怯浺饎?chuàng)建UI自動服務器204??蛻舻牡怯浺步ㄗhUI引擎206開始告知UI自動服務器204需要名字屬性。UI引擎206沒有取得范圍信息。UI引擎206調用服務器側的一個API。UI引擎206規(guī)定1)哪個屬性改變;2)屬性的新值;以及3)可能的舊值。UI自動服務器204的創(chuàng)建是基于客戶300感興趣的事件,且從而知道感興趣的事件、屬性、客戶和范圍,因此,它就能知道是否有客戶300對創(chuàng)建的邏輯單元感興趣。如果有超過一個的客戶300通過一個特定的UI自動服務器204登記事件,并且這些客戶300登記的是需要相同的事件,并隨同返回的邏輯單元要求大量取得屬性,那么當UI自動服務器204將事件發(fā)送回客戶300時,每個客戶都將得到隨同邏輯單元返回的所請求大量取得屬性的組合。對于每個進行監(jiān)聽的客戶300,UI自動服務器204告知客戶300,將與事件相關的邏輯單元傳送給客戶。UI自動服務器204僅創(chuàng)建一個邏輯單元。這是對現(xiàn)有技術的很大改進,現(xiàn)有技術中,要求每個客戶300都請求其自身的事件源對象副本。如果當客戶登記事件時,UI引擎206不利用UI自動客戶建議,UI引擎206可以詢問UI自動服務器204是否有任何存取客戶300在監(jiān)聽,并且如果沒有一個在監(jiān)聽,就可以避免創(chuàng)建信息和將其發(fā)送給UI自動服務器204的工作。例如,屏幕閱讀器是客戶300,并規(guī)定了它想要信息送到哪里、聚焦變化對象以接收事件以及感興趣的特定屬性列表。向UI引擎206提供建議,并且引擎知道它應該將事件發(fā)送到UI自動服務器204。依據(jù)檢測的聚焦變化,UI引擎206通知UI自動服務器204。UI自動服務器204將其轉換成熟知的接口并將事件和對象發(fā)送給UI自動客戶202。UI自動客戶202將對象發(fā)送到客戶300中的合適空間。上述組件與已有系統(tǒng)相比,其改進在于消除了在核心程序中對事件的中央存儲。取而代之以UI自動服務器204了解所有對其運行的上下文程序中取得信息感興趣的客戶300。核心存儲的消除還創(chuàng)建了一種更加對等的互動,因為,UI自動服務器204實現(xiàn)了在核心程序中先前所執(zhí)行的功能。本發(fā)明的存取系統(tǒng)200為客戶300提供了指定其想要了解的東西的能力,這樣,使用UI自動服務器204在服務器側就實現(xiàn)了過濾。圖7是有關事件登記和通知方法的過程的流程圖。在步驟80,客戶300請求事件通知。在步驟82,UI自動客戶202將請求發(fā)送給UI自動服務器204。在步驟84,UI自動客戶建議UI引擎206它要求通知。在步驟86,UI自動服務器204從UI引擎206接收通知。在步驟88,UI自動服務器204過濾所接收的信息。在步驟90,如果所接收的信息被查明是用戶不感興趣的,UI自動服務器204就丟棄該信息,并在步驟92繼續(xù)等待通知?;蛘?,如果在步驟90發(fā)現(xiàn)該信息是感興趣的,在步驟94,UI自動服務器204就創(chuàng)建邏輯單元,并將其發(fā)送給UI自動客戶202。在步驟96,UI自動客戶202將所接收的信息放入客戶300中其合適的位置。存取系統(tǒng)200的事件機制210允許客戶300登記以接收UI中屬性變化、控制結構的樹變化、多媒體事件和相關信息的事件通知。沒有這些能力的話,客戶300必須連續(xù)調查系統(tǒng)中所有的UI單元,以驗證是否有任何信息、結構或狀態(tài)改變。存取系統(tǒng)200事件機制210也允許客戶300接收非處理(out-of-process)事件,請求隨事件通知一起返回的屬性集合,并為事件登記多個單元。事件機制210揭示了AT產品或測試應用程序用于登記事件的接口;AT產品執(zhí)行用于接收事件通知的對象的接口;以及控制執(zhí)行程序用于通知UI事件的事件引擎的接口。事件機制210用于允許AT產品和測試應用程序獨立于用于再現(xiàn)UI的UI引擎來接收事件,并允許AT產品和測試應用程序追蹤頂層應用程序窗口并聚焦,而不用顧慮基礎技術。在可用情況下,將事件與來自應用程序邏輯單元樹222的邏輯單元相關聯(lián)。在邏輯單元不可用的情況下,將事件與人們可讀字符串或其它已知代表事件源的對象相關聯(lián)。事件機制210基于在事件登記期間用戶提供的選擇來進行過濾。通過在服務器處使用客戶過濾選擇,在創(chuàng)建事件相關數(shù)據(jù)并將其通過跨處理發(fā)送給客戶之前,事件機制210通過減少大量交叉處理調用從本質上改善了非處理性能。事件機制210提供了一種方式,在事件登記期間指定對于事件感興趣的邏輯單元的屬性。這進一步減少了許多交叉處理調用。該事件機制210可以進行擴展,而不需要對主要的操作系統(tǒng)(OS)進行改變。雖然,事件機制210使用經管理的代碼實現(xiàn),但未經管理的應用程序可以通過COM的互用性對其進行訪問。事件機制210可以使得客戶被告知許多類型的事件。一種類型的事件是頂層窗口事件。頂層窗口事件包括與菜單和組合框落下或任何將桌面作為父節(jié)點的特征相關的事件。另一類型的事件是聚焦事件??蛻?00經常請求一種追蹤聚焦的方法。其它類型的事件包括屬性變化事件和邏輯結構變化事件。屬性變化事件是在當邏輯單元的屬性發(fā)生變化時被激活。邏輯結構變化事件是在當邏輯單元樹結構改變時被激活。事件也可以從控制模式中激活。從控制模式中激活的事件需要是可擴展的,并因此,這些事件由GUID識別。當?shù)怯洉r,可接受任何GUID值。對于任何新的控制模式,其證明的事件需要是唯一的GUID。AT產品可能需要進行修改以監(jiān)聽新控制模式事件。監(jiān)聽程序也需要能涵蓋這些事件。例如,定向測試可能需要將這些事件限制在特定應用程序或在應用程序中控制。該控制模式定義了什么是源,而事件消費者將需要參照該部分的記錄,以便了解如何使用源單元和事件爭論對象。另一種類型的事件是多媒體事件。多媒體可以包括聲音、視頻和動畫。該方法將支持多媒體事件,并通知客戶一些動作,包括“停止”、“暫停”、“快進”、“重復”和“靜音”。簡單的聲音事件可以獨立于多媒體事件進行處理。簡單的聲音事件表示單獨、短促的聲音,其存在是為了向用戶傳達某些事件的發(fā)生,而不是其聲音本身。簡單的聲音事件可以包括當新郵件到達時播放的聲音;當膝上型電腦電量低時產生的聲音;或當消息框用IconExclamation類型顯示時播放的聲音。另一種類型的事件是軟焦點事件。軟焦點事件出現(xiàn)在桌面上,但停留在后臺中。一些軟焦點的示例是彈出式幫助窗口,在通知區(qū)域中顯示“有新的更新可用”;在任務欄中的閃爍圖標,指示需要引起聚焦的后臺應用程序;以及當打印開始和結束時,在通知盒(tray)中出現(xiàn)和消失的打印機圖標。這些事件可能看上去與其它事件類別有某些重疊(多媒體可以涉及軟焦點也涉及的動畫事件)。然而,該事件將依據(jù)其傳送給用戶的東西來分類,而不是依據(jù)其如何被傳送來分類??蛻魝華PI310和提供者側API440提供了一種事件通知方法,它支持上述所列舉類型的事件類型。這些方法將結合附圖8-10在下面進一步描述。控制模式存取模型提供了獨特的方法來分類和揭示特定UI單元或控制所支持的功能。存取模型定義了一組公共控制模式,每種模式定義了UI狀態(tài)的一個方面,以取代已有技術中將功能和特定控制類型(例如按鈕、編輯框或列表框)相關聯(lián)。因為這些模式彼此獨立,可以將它們組合以描述特定UI單元所支持的完整功能集。例如,存取系統(tǒng)200將單元作為支持調用控制模式來描述,而不是以其類名例如按鈕來描述。一種控制模式定義了結構、屬性、事件和該單元所支持的方法。因此,這些模式不僅允許客戶查詢控制狀態(tài),它們也允許其通過使用為特定模式設計的接口來可編程地操作控制。例如,SelectionContainer模式提供了對所選擇項進行查詢、選擇或取消選定特定項、或判定控制是否支持單選或多選模式的方法。為存取系統(tǒng)300目前定義的控制模式包括1)SelectionContainer;2)Hierarchy;3)Invokable;4)SimpleGrid;5)Text;6)Value;7)RepresentsObject;8)Scrollable;9)Sortable;10)Drawing;以及11)OtherContainer。這種技術使得控制開發(fā)程序能夠執(zhí)行新類型控制,同時仍然具有精確定義的將其狀態(tài)揭示給AT產品和測試腳本的方法。如果引入新類型狀態(tài),就能定義新控制模式來表達所要求的功能。輔助技術產品和測試腳本現(xiàn)在可以寫成理解如何和每個模式工作,而不是和每個UI控制工作。因為存在的控制模式遠遠少于控制類,因此,這種技術使得所需要的代碼最小。這種方法也促進了一種更加靈活的層次結構,該結構能有效詢問和操作新控制(只要它們支持已知的控制模式)。下述表格提供了公共控制的一些示例以及它們將支持的模式。表格1更多的特定接口將用于揭示與公共控制模式相關的功能。這些模式的示例包括1)選擇管理容器;2)網格布局容器;3)含有值的UI單元;4)代表對象(文件、email等)的圖標;以及5)可調用的UI單元。通常,這些模式與特定控制并非緊密相連,并且不同的控制可以執(zhí)行相同的模式。例如,列表框、組合框和樹圖都執(zhí)行“選擇管理容器”的模式。一些控制可能執(zhí)行多種控制,如果滿足選擇網格將既執(zhí)行“網格布局容器”模式又執(zhí)行“選擇管理容器”模式。在以前的應用程序中不存在單獨的“角色(role)”屬性,而是使用兩種單獨的機制??刂颇J脚卸ㄒ豢刂频目捎玫墓δ?,而人們可讀可定位屬性提供用戶可理解的控制類型名字,例如“按鈕”、“列表框”等。系統(tǒng)API圖8示出本發(fā)明一實施例中客戶側API305的詳細情況??蛻魝華PI305可以包括一組核心類310。該核心類310包括一個或更多的自動類312、邏輯單元類314以及原始單元類316??蛻魝華PI305還可以包括一個或更多的控制模式類320、輸入類340以及輔助類350。這些類型的類中的每個類將在下面詳細描述??蛻糇詣宇?12為客戶300提供了一種UI自動方法??蛻糇詣宇?12含有并不是針對任何UI單元定制的方法??蛻糇詣宇?12可以提供一種通過某點、窗口句柄或桌面根單元獲得邏輯或原始單元的方法??蛻糇詣宇?12可以另外提供基于輸入規(guī)則查找邏輯單元的方法??蛻糇詣宇?12最好還包括對事件通知進行登記和取消登記的方法。自動類312最好還提供加載代理DLL,檢索屬性局部名字和控制模式,以及執(zhí)行單元比較的助手功能??蛻糇詣宇?12還包括讓客戶300監(jiān)聽事件的方法。自動類312所提供的一些方法在下表中加以概括。表2在操作中,如果客戶300需要為用戶獲得有關應用程序的信息,客戶300就找到一個按鈕并按下,觀察按鈕上的文字??蛻?00可以調用一種方法,例如如表2所示的查找邏輯單元(FindLogicalElement)的方法。客戶側API305將返回一個值,該值對應于客戶側接口220的邏輯樹222中的一個位置。通過邏輯樹222,存取系統(tǒng)200不用考慮所使用的應用程序就能為客戶300提供了UI的抽象視圖。抽象模型包括結構、屬性、事件和功能,而列表框、按鈕或其它UI組件可以期望彼此共享??蛻魝華PI305另外包括邏輯單元314。邏輯單元314提供獲得公共單元屬性的字段、方法和屬性。如上所述,邏輯單元代表了邏輯樹222中的UI單元,例如界定矩形、聚焦、有效、可點擊點、運行時間、固定標識符以及名字。邏輯單元類314還可以提供在單元,例如第一子節(jié)點、最后子節(jié)點、下一繼承者和父節(jié)點中進行瀏覽的工具。邏輯單元類314還可以提供獲得對一單元的特定模式或獲得由該單元所支持的所有模式的工具。邏輯單元類314含有單元在邏輯單元樹222中所使用的字段、屬性以及方法。表3客戶側API305另外包括原始單元類316。原始單元類316提供了遍歷(traversing)原始單元樹的類似技術。原始單元類316包含用于訪問原始單元樹中單元的字段、屬性和方法。表4客戶側API305另外包括輸入類340。輸入類340可用于模擬鼠標、鍵盤和其它類型的輸入。輸入類340允許通過輸入方法例如鍵盤、筆和鼠標進行編程(programmatic)輸入。一個示例輸入類示于下表。表5客戶側API305另外包括UI自動控制模式類320。UI自動控制模式類320可以揭示可編程訪問由邏輯單元揭示的特定功能的字段、屬性和方法。UI自動控制模式類320幫助用戶與UI存取系統(tǒng)200所定義的控制模式進行互動。例如,應用程序窗口模式方法將功能揭示給對應用程序的編程工作。該功能可以允許對子窗口或表示應用程序中工具欄、菜單、滾動條和系統(tǒng)菜單的邏輯單元位置進行配置??刂颇J筋?20可以包括應用程序窗口模式(ApplicationWindowPattern)類。ApplicationWindowPattern類揭示了通常與頂層應用程序窗口相關的狀態(tài)和信息??蛻?00可以使用這個類來平鋪或層疊應用程序的多文檔界面(MDI)子界面,查找其任務欄上的按鈕,以及定位其用戶界面的已知區(qū)域,例如工具欄和菜單。下表說明了本發(fā)明一個實施例的ApplicationWindow模式類。表6控制模式類320還可以包括用于展開和收縮單元的類,以提供一種展示和隱藏這些類的內容的機制(ExpandCollapsePattern)。ExpandCollapsePattern類作為ExpandCollapse模式的封裝類(wrapperclass)。ExpandCollapsePattern類含有客戶300用來操作可以擴展(顯示)或收縮(隱藏)內容的字段、屬性和方法。下表說明了ExpandCollapsePattern類的實施例。表7控制模式類320還可以包括網格項模式(GridItemPattern)類,允許客戶300快速判定所揭示的項是否是網格的一部分。如果項是網格的一部分,GridItemPattern類就依據(jù)行/列坐標和間隔來幫助判定該項處于網格的什么位置。GridItemPattern類最好包含客戶300用來操作揭示在網格中單元格功能的控制的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的GridItemPattern類。表8控制模式類320還可以包括層次項模式(HierarchyItemPattern)類,它表示了與其它單元(例如TreeView控制中的單元)彼此具有層次關系的單元。HierarchyItemPattern類含有自動客戶300用于操作獨立于UI單元在邏輯樹222中的關系,而揭示它們之間層次關系的控制的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的HierarchyItemPattern類。表9控制模式類320還可以包括激活模式(InvokePattern)類,它表示具有與它們相關的單一、明確動作的對象。相關UI組件的實例包括按鈕;超鏈接;菜單項;單選按鈕和復選框。InvokePattern類含有自動客戶300用于操作當激活時引起單一、明確動作發(fā)生的單元的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的InvokePattern類。表10控制模式類320還包括多視圖模式(MultipleViewPattern)類,作為用于多視圖模式單元的封裝類。多視圖模式單元是可以在一信息集的多種表示之間切換的單元。該MultipleViewPattern類含有自動客戶300用于操作具有在同一信息集多種表示之間進行切換的功能的單元的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的MultipleViewPattern類。表11控制模式類320還包括范圍值模式(RangeValuePattern)類,它揭示了反映控制在一個有限范圍內管理值的能力的相關屬性集。RangeValuePattern類傳送控制有效的最小和最大值及其當前值。RangeValuePattern類含有自動客戶300用以取得單元當前值和值域的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的RangeValuePattern類。表12控制模式類320還包括滾動模式(ScrollPattern)類,它表示可以改變它們可視區(qū)域的UI單元。ScrollPattern類包含自動客戶300用以操作能通過滾動改變其可視區(qū)域部分的單元的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的ScrollPattern類。表13控制模式類320還包括選擇模式(SelectionPattern)類,它表示管理選擇的容器。相關選擇項模式(SelectionItemPattern)類包含自動客戶300用以操作能被選擇和取消選擇的單元的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的SelectionPattern類和SelectionItemPattern類。表14表15控制模式類320還包括分類模式(SortPattern)類。SortPattern類含有自動客戶用以操作可對其子單元分類的容器單元的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的SortPattern類。表16控制模式類320還包括值模式(ValuePattern)類,以代表表示一個值的UI單元。ValuePattern類含有客戶300用以操作具有與其相關的值的單元的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的ValuePattern類。表17控制模式類320還包括可視信息模式(VisualInformationPattern)類,它可以用于表示傳送信息給用戶的圖像或動畫相關的信息。VisualInformationPattern類含有自動客戶300用以操作具有傳送信息給用戶的圖像或動畫的單元的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的VisualInformationPattern類。表18控制模式類320還包括窗口模式(WindowPattern)類,它作為窗口模式的封裝類。WindowPattern類含有自動客戶300用以操作用戶桌面上窗口的字段、屬性和方法。下表說明了根據(jù)本發(fā)明實施例的WindowPattern類。表19客戶側API300還包括輔助類350。該輔助類包括表示屬性、事件和模式識別符的多個類以及使用事件機制和輸入特征的助手類。輔助類350可以包括自動標識符(AutomationIdentifier)類。AutomationIdentifier類是用于基于對象識別的識別符的基類。由于僅例示了導出類,因此,這個類有效地抽象化。輔助類350另外包括表示用于在存取系統(tǒng)200中識別事件的一種類型的自動事件(AutomationEvent)類。輔助類350還包括自動模式(AutomationPattern)類,表示用于在存取系統(tǒng)200中識別控制模式的一種類型。輔助類350還包括自動屬性(AutomationProperty)類,表示用于在存取系統(tǒng)200中識別屬性的一種類型。輔助類350可以進一步包括自動事件參數(shù)(AutomationEventArgs)類,表示用于事件的控制模式或定制事件參數(shù)??蛻?00接收該類的實例(instance)和定制事件。AutomationEventArgs類用于將有關自動事件的信息傳送給客戶300。輔助類350還可以包括用于UI事件的自動屬性改變事件參數(shù)(AutomationPropertyChangedEventArgs)類??蛻?00接收該類的實例和屬性變化事件。AutomationPropertyChangedEventArgs類用于將有關屬性變化的事件的信息傳送給客戶300。輔助類350還可以包括邏輯結構變化事件參數(shù)類。用于UI事件的LogicalStructureChangedEventArgs類為客戶300提供該類的實例以及邏輯樹變化的事件。LogicalStructureChangedEventArgs類用于將有關邏輯結構變化的信息傳送給客戶300。輔助類350還可以包括頂層窗口事件參數(shù)(TopLevelWindowEventArgs)類,用于與UI事件一起使用為客戶300提供具有定制事件的該類的實例。TopLevelWindowEventArgs類用于將有關頂層窗口事件的信息傳送給客戶300。頂層窗口是父節(jié)點為桌面的窗口。術語“已開啟(opened)”的使用表示新的頂層窗口出現(xiàn)在用戶面前。術語“已關閉(closed)”的使用表示頂層窗口已經撤消。輔助類350還可以包括樹加載事件參數(shù)(TreeLoadEventArgs)類。該TreeLoadEventArgs類是用于UI事件的定制事件參數(shù)類??蛻?00可接收該類的實例和樹加載事件。TreeLoadEventArgs用于將有樹加載事件的信息傳送給客戶300。輔助類350還可以包括Vkey類,它為輸入相關的方法提供了常量。輔助類350還可以包括NoClickablePointException。當在可點擊點的邏輯單元中出現(xiàn)錯誤時就產生該異常。當界定矩形為空,沒有寬或高,或該點的邏輯單元已變化就會發(fā)生錯誤。輔助類350還可以包括執(zhí)行幾個類以接收事件通知。聚焦變化事件參數(shù)(FocusChangedEventArgs)用于將有關聚焦變化事件的信息傳送給客戶。如圖9所示,提供者側API440包括提供者自動類442、提供者自動接口448和提供者原始單元接口450。提供者側API440還包括控制模式提供者接口460和輔助類480。輔助類480可以與輔助類350共享使用和通信信息,例如屬性識別符、事件識別符、模式識別符和基本類型(如表示矩形或點)的類的類型。其它特征可以是對提供者輔助類480獨有,或對客戶輔助類350所獨有的。例如,Vkey類就僅存在于客戶輔助類350中。提供者自動類442最好包括自動互用性提供者(AutomationInteropProyider)類502,如圖10所示。AutomationInteropProvider類502可以包括具有Win32或第三方自動執(zhí)行的存取系統(tǒng)200所使用的方法。AutomationInteropProvider類502含有Win32或第三方UI自動提供者側執(zhí)行所使用的屬性和方法。下表說明了根據(jù)本發(fā)明實施例的AutomationInteropProvider類502。表20自動提供者(AutomationProvider)類500是含有具有窗口客戶平臺(WindowsClientP1atform)的存取系統(tǒng)200所使用的方法的相似類(similarclass)。提供者側API440還包括提供者自動接口448。提供者自動接口448可以包括自動屬性互用性提供者(IAutomationPropertyInteropProvider)接口447,由Win32或第三方執(zhí)行以揭示存取系統(tǒng)200默認揭示的屬性上的附加屬性。提供者自動接口448還可以包括自動屬性提供者(IAutomationPropertyProvider)接口449。該接口449類似于接口447,但可以由本機窗口客戶平臺提供者執(zhí)行以揭示除存取系統(tǒng)200默認揭示的那些屬性之外的屬性。提供者原始單元接口450可以包括原始單元提供者(IRawElementProvider)接口456。IRawElementProvider接口456定義了方法,所述方法包括由本機窗口客戶平臺、Win32或第三方提供者執(zhí)行并由存取系統(tǒng)200調用以返回相關單元,例如第一子節(jié)點、最后子節(jié)點、下一繼承者和父節(jié)點,和返回特定或所有本機和UI自動屬性。IRawElementProvider接口456進一步為控制模式返回提供者對象。IRawElementProvider接口456由存取系統(tǒng)200執(zhí)行,并與特定單元相關的功能的提供者進行互動。在下表中提供了一種IRawElementProvider接口456實施例的實例。表21附加提供者原始單元接口450可以包括原始單元上下文互用性提供者(IRawElementContextInteropProvider)接口452。該接口452可以由Win32或第三方提供者執(zhí)行。該接口452用于管理與任何特定單元無關的事件和其它功能。而附加原始單元接口450可以包括原始單元上下文提供者(IRawElementContextProvider)接口458,并可由本機窗口客戶平臺提供者執(zhí)行,并用于管理與任何特定單元無關的事件和其它功能。一個IRawElementContextProvider接口458的實施例在下表中示出。表22提供者側API440可以包括控制模式提供者接口460。每個控制模式具有提供者接口460,由將控制模式揭示給存取系統(tǒng)200的對象執(zhí)行。例如,應用程序窗口提供者(IApplicationWindowProvider)接口揭示了與應用程序頂層窗口相關的狀態(tài)和信息。下述的控制模式提供者接口460包括可以由基于HWND和第三方提供者執(zhí)行的互用性提供者(InteropProvider)接口??刂颇J教峁┱呓涌?60還可以包括可以由窗口客戶平臺提供者機內執(zhí)行的提供者接口??刂颇J教峁┱呓涌?60還可以包括應用程序窗口提供者(IApplicationWindowProvider)接口。該IApplicationWindowProvider或IApplicationWindowInteropProvider接口可以揭示通常與頂層應用程序窗口關聯(lián)的狀態(tài)和信息。該接口通??梢杂商峁┱邎?zhí)行以揭示操作應用程序主窗口的功能??刂颇J教峁┱呓涌?60還可以包括展開和收縮提供者(IExpandCollapseProvider)接口或IExpandCollapseInteropProvider接口。該接口揭示了能展開以顯示更多內容或收縮以隱藏內容的控制能力。該IExpandCollapseProvider接口可以結合HierarchyItem模式(下面將描述)得到支持提供類似樹的狀態(tài),但它對于單獨的開啟和關閉控制還是相關的。諸如工具欄、組合框和菜單的UI單元可包括有關的執(zhí)行??刂颇J教峁┱呓涌?60還可以包括網格提供者(IGridProvider)接口或IGridInteropProvider接口。該IGridProvider接口揭示了基本網格功能,包括網格大小和特定單元格的信息運動。網格項提供者(IGridItemProvider)或IGridItemInteropProvider可以提供附加的控制模式提供者接口460。IGridItemProvider接口表示在網格中的項。該接口可以僅包括屬性,而不包含方法。IGridItemProvider或IGridItemInteropProvider接口由提供者執(zhí)行以對操作揭示網格中單元格功能的控制的功能進行揭示??刂颇J教峁┱呓涌?60還可以包括層次項提供者(IHierarchyItemProvider)或IHierarchyItemInteropProvider接口。IHierarchyItemProvider或IHierarchyItemInteropProvider接口揭示和允許客戶300獨立于UI單元在邏輯樹222中的關系來遍歷它們之間的層次關系。層次關系定義為非圓形(noncircular)的。執(zhí)行該接口的UI單元包括菜單和列表視圖控制。附加控制模式提供者接口460可以包括激活提供者(IInvokeProvider)或IInvokeInteropProvider接口。該激活提供者接口可以由與項具有單一、明確關系的動作的對象來執(zhí)行。這些對象通常是無狀態(tài)的(stateless),激活它們不會對它們自身的狀態(tài)發(fā)生變化,但會在應用程序的更大上下文范圍中引起變化。執(zhí)行IInvokeProvider接口的UI單元包括按鈕和超鏈接菜單項。多視圖提供者(IMultipleViewProvider或IMultipleViewInteropProvider)接口提供附加控制模式接口460。該多視圖提供者接口可以揭示在同一信息、數(shù)據(jù)或子節(jié)點集中多種表示之間切換的單元能力。該模式應該在控制當前內容視圖的容器上執(zhí)行。控制模式提供者接口460可以包括范圍值提供者(IRangeValueProvider)或(IRangeValueInteropProvider)接口。范圍值提供者接口揭示了反映管理有限范圍內值的一控制的能力的相關屬性集。接口將傳送一控制的有效最小和最大值及其當前值。執(zhí)行該接口的UI單元包括在進程欄和滾動條上的數(shù)字旋轉器(numericspinner)。滾動提供者(IScrollProvider或IScrollInteropProvider)接口可以作為附加控制模式提供者接口460提供。接口揭示了通過滾動其內容改變其可視區(qū)域部分的一控制的能力,該區(qū)域對用戶是可見的。該接口表示了滾動其內容,例如列表框、樹視圖或其它保持內容區(qū)域大于控制的可視區(qū)域的容器的UI單元。下表示出一種IScrollInteropProvider接口的實施例。表23附加控制模式提供者接口460包括由標識選擇的提供者(ISelectionByIDProvider或ISelectionByIDInteropProvider)接口。該接口表示為容器單元提供在其所含有的項之間進行選擇。標識選擇提供者接口是用于不具有邏輯單元子節(jié)點的控制的提供者側接口??蛻魧言摲椒醋魅缤摽刂凭哂凶鳛樽庸?jié)點的邏輯單元的方法一樣。執(zhí)行該接口以幫助提供者揭示操作可選擇和未經選擇容器中單元的功能。該接口實施例在下表中示出。表24控制模式提供者接口460還可以包括選擇提供者(ISelectionProvider或ISelectionInteropProvider)接口。該選擇提供者接口表示管理選擇的容器,并且由提供者執(zhí)行以揭示操作含有可選擇單元的單元的功能。該接口的控制模式提供者接口460還可以包括分類提供者(ISortProvider或ISortInteropProvider)接口。該接口揭示容器當前分類次序,并允許客戶可編程地重新分類其單元。值提供者(IValueProvider或IValueInteropProvider)接口可以由控制模式提供者接口460執(zhí)行以表示和操作具有相關值的單元。可視信息提供者(IVisualInformationProvider或IVisualInformationInteropProvider)接口可以包含在控制模式提供者接口460中以揭示有關傳送信息給用戶的圖像或動畫的信息。窗口提供者(IWindowProvider或IWindowInteropProvider)接口還可以包括在控制模式提供者接口460中以揭示改變單元在屏幕位置或大小以及改變可視狀態(tài)并關閉它的一單元的能力。下表示出該接口的實例。表26提供者側API440還可以包括輔助類480。該輔助類480基本等同于在客戶側API305中的類。如上所述,客戶和提供者可以共享輔助類。結合圖10進一步描述該特征。圖10示出客戶側API305、存取系統(tǒng)核心200和服務器側API440之間的互動。該客戶應用程序300執(zhí)行自動類312、邏輯單元類314、原始單元類316或控制模式類320以通過存取系統(tǒng)核心201獲得信息??蛻魬贸绦?00還執(zhí)行客戶輔助類350和輸入類340。圖10說明結合使用Win32Run12的執(zhí)行A(10)和使用WCPRun的執(zhí)行B(20)的提供者側API440。執(zhí)行A按需使用自動互用性提供者接口502、原始單元提供者接口456、原始單元上下文互用性提供者接口452以及控制模式接口460。執(zhí)行B按請求使用自動提供者接口500、原始單元提供者接口456、自動屬性提供者接口448、原始單元上下文提供者接口458和控制模式接口460。執(zhí)行10和20都使用提供者輔助類480。如上所述,提供者輔助類基本與客戶輔助類350相同,或可以與客戶輔助類350共享一些類型,如共享輔助類510所示。如上所述,共享輔助類510可以包括客戶和提供者對傳送信息,例如屬性標識符、模式標識符和事件標識符的類型進行共享。在操作中,客戶側API305允許客戶300取得邏輯樹。功能包括1)從點到點的邏輯單元;2)來自事件的邏輯單元;3)當前聚焦的邏輯單元。如上所述,邏輯單元表示UI組件,可能是一控制、控制的一部分、或一容器或邏輯分組(即對話、窗格或框架)??刂瓶梢愿鶕?jù)其功能顯著變化。因此,不同的接口用于表示與特定控制類型關聯(lián)的功能。然而,這些特定控制接口是從表示對所有控制都公用的功能的公用基本接口中獲得。公用基本接口含有核心類310,它包括1)用于瀏覽邏輯樹222的方法;2)取得屬性值的通用方法;3)訪問所支持特定控制接口的方法。在瀏覽邏輯樹222中,每個基礎應用程序UI技術將為瀏覽提供其自身的技術。為開始使用應用程序中的存取系統(tǒng),客戶300可以做下列事之一1)使用來自自動類312的“AddTopLevelWindowEventHandler”方法以揭示事件中在桌面上或句柄中出現(xiàn)的新UI,登記其它事件,并由此從任意進程接收事件;2)從自動類312中使用一種“查找”方法以定位感興趣的UI和把特定UI段作為目標;3)使用自動類312中一些其它的方法以揭示感興趣的UI,例如查找窗口句柄或屏幕上某點,并使用該句柄或點,獲得作為監(jiān)聽事件參照使用的邏輯單元;或4)使用自動類312中的“AddFocusChangedEventHandler”以追蹤輸入聚焦并在當前聚焦的UI上登記事件??蛻魝華PI305和服務器側API440用于滿足客戶300的需要。下述實例用于說明客戶如何使用客戶側API305和隨后如何激活服務器側API440以向客戶300提供用戶接口信息。頂層窗口事件包括與菜單和組合框落下或任何將桌面作為父節(jié)點的特征相關的事件。在本發(fā)明的實施例中,AddTopLevelWindowEventHandler方法用于接收開啟和關閉頂層窗口的通知。調用AddTopLevelWindowEventHandler將獲得在當前桌面上新頂層窗口開啟或頂層窗口關閉的通知。RemoveTopLevelWindowEventHandler方法提供了一種機制以停止接收在桌面上頂層窗口開啟或關閉的通知。該方法使用調回(callback)對象以識別該聽眾。因此,到RemoveTopLevelWindowEventHandler方法的對象與到AddTopLevelWindowEventHandler的對象相同。對于每個新打開的頂層窗口從提供者側API440調用一方法。同樣,一旦當頂層窗口關閉,存取系統(tǒng)200可以調用一方法。為了接收這些通知,客戶300調用AddTopLevelWindowEventHandler方法。另一類型的事件是聚焦事件??蛻?00經常請求一種追蹤聚焦的方法。在微軟窗口OS中,這是很難實現(xiàn)的。例如,當下拉菜單(例如在微軟的Word中的文件菜單),在用戶沿每個項向下移動光標時,菜單中的項就獲得聚焦。當該菜單關閉(例如用戶按下ESC鍵),就不會發(fā)送聚焦事件。實際上,對聚焦變化感興趣的客戶必須監(jiān)聽大量事件,并找出這些事件中哪些事件邏輯上表示聚焦變化。在本發(fā)明的一個實施例中,自動類312中的AddFocusChangedEventHandler方法可以用于告知監(jiān)聽者聚焦變化事件??蛻?00可以規(guī)定隨同該方法或其它事件登記方法返回一組屬性??蛻?00調用RemoveFocusChangedEventHandler方法以停止接收聚焦變化的通知。該方法使用調回對象來識別該監(jiān)聽者,并且在此情況下,給RemoveFocusChangedEventHandler方法中的對象和給AddFocusChangedEventHandler過程中的對象相同。當聚焦變化時,為了告知客戶300,存取系統(tǒng)200將從提供者側自動類442中調用例如RaiseFocusChangedEvent的方法。屬性變化事件是在當邏輯單元的屬性發(fā)生變化時被激活。在本發(fā)明的實施例中,客戶300從自動類312中調用AddPropertyChangedEventHandler方法以接收屬性變化的通知。當在AddPropertyChangedEventHandler所規(guī)定的邏輯單元樹中的一個邏輯單元上的屬性值發(fā)生變化,存取系統(tǒng)200就從提供者側API440中激活提供者側方法。一個范圍參數(shù)指示事件應該針對哪些單元被激活。例如,傳遞窗口的根邏輯單元和對后代的請求限制了對該窗口的屬性變化調回。如果范圍參數(shù)設定為樹中的所有單元,那就忽略所述范圍,并將把桌面上出現(xiàn)的任何特定屬性變化都發(fā)送??蛻?00可以多次調用具有不同屬性集和/或不同調回對象的AddPropertyChangedEventHandler。存取系統(tǒng)200提供的通知指示了所改變的屬性;新屬性值;以及如果可提供的話還包括舊屬性值??蛻?00將調用RemovePropertyChangedEvenHandler方法來停止接收屬性變化的通知。該方法可以使用范圍單元和調回對象來識別該監(jiān)聽者,并且在這種情況下,傳送的對象必須與傳送給AddPropertyChangedEventHandler的對象相同。提供者自動類442包括RaiseAutomationPropertyChangedEvent方法以告知客戶300自動屬性的變化??蛻糇詣宇?12中的AddAutomationEventHandler方法可以使客戶300接收控制事件。范圍參數(shù)可用于指示事件應該針對哪些單元被激活。例如,傳遞窗口的根邏輯單元和對后代的請求將限制該窗口的事件。如果需要樹中的所有單元,那就將把桌面上的所有事件都發(fā)送。RemoveAutomationEventHandler方法可以用于停止接收控制的事件。該方法可以使用范圍單元、調回對象和事件識別符以識別監(jiān)聽者。在這種情況下,傳送的對象必須與傳送給AddAutomationEventHandler方法的對象相同。提供者自動類442包括RaiseAutomationEvent方法以告知客戶300事件。當客戶應用程序300激活AddAutomationEventHandler方法,而特定控制事件也被激活且該事件源是AddAutomationEventHandler中規(guī)定的邏輯單元樹中的一個邏輯單元時,存取系統(tǒng)200就從提供者側API440調用方法。當控制事件被激活,通常就有特定事件的信息可用。可以調用RemoveAllEventHandlers方法來停止接收任何事件。這是一種在客戶應用程序關閉之前進行清空的快速方法。當終止應用程序時,最好使用該撤消方法。當邏輯單元樹結構變化時,就激活邏輯結構變化事件。執(zhí)行AddLogicalStructureChangedEventHandler方法以接收在邏輯單元樹中結構變化的通知。當邏輯單元被加入、撤消或無效,就調用特定調回對象上的方法??梢哉{用RemoveLogicalStructureChangedEventHandler方法以停止接收邏輯單元樹變化的事件。該方法可以使用調回對象和范圍單元以識別監(jiān)聽者。在這種情況下,傳送的對象必須與傳送給AddLogicalStructureChangedEventHandler的對象相同。提供者自動類442包括RaiseLogicalStructureChangedEvent方法以告知客戶300邏輯結構的變化。UI自動服務器或提供者側API440包括服務器或基礎UI引擎可以調用的方法以完成屬性變化通知。當UI變化時,服務器400可以調用這些通知方法以產生合適的參數(shù)。本發(fā)明已經結合特定實施例進行了描述,其目的是為了說明而不是進行限制。在不背離本發(fā)明的范圍時,其它實施例對于本領域的熟練技術人員來說都是顯而易見的。如上所述,可以看出本發(fā)明能夠實現(xiàn)上述所有目標,并且該系統(tǒng)和方法具有其他顯而易見和固有的優(yōu)點??梢岳斫饽承┨卣骷捌渥蛹鲜怯杏玫模o需參照其他特征及子集合使用。這也在該權利要的范圍中。權利要求1.一種在為客戶提供用戶接口信息的存取系統(tǒng)中使用的工具系統(tǒng),該存取系統(tǒng)包括客戶側和提供者側,該工具系統(tǒng)包括含有用于查詢用戶接口信息的客戶自動類的客戶側自動工具,所述客戶自動類包括事件登記工具和邏輯單元揭示工具;以及用于為客戶提供用戶接口信息的提供者側自動工具,所述提供者側自動工具包括具有用于為客戶提供事件信息的工具的提供者自動類。2.如權利要求1所述的系統(tǒng),其特征在于,進一步包括客戶側邏輯單元工具,用于表示用戶接口單元。3.如權利要求2所述的系統(tǒng),其特征在于,進一步包括客戶側原始單元工具,用于表示原始單元樹中的單元。4.如權利要求1所述的系統(tǒng),其特征在于,進一步包括客戶側輸入類,用于提供模擬輸入方法。5.如權利要求4所述的系統(tǒng),其特征在于,進一步包括用于模擬鼠標輸入和鍵盤輸入的工具。6.如權利要求2所述的系統(tǒng),其特征在于,進一步包括客戶側控制模式類,用于允許客戶與存取系統(tǒng)系統(tǒng)控制模式交互。7.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括應用程序窗口模式類,用于揭示與應用程序主窗口相關的信息。8.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括展開和收縮模式類,用于操作可以顯示和隱藏的內容。9.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括網格項類,用于如果項是網格的一部分就揭示。10.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括層次項模式類,用于表示UI單元,所述單元獨立于邏輯樹中UI單元之間的關系來揭示它們之間的層次關系。11.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括激活模式類,用于表示具有單一關聯(lián)作用的對象。12.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括多視圖模式類,用于操作可以在多種表示之間進行切換的單元。13.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括范圍值模式類,用于揭示控制的最小和最大值。14.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括滾動模式類,用于操作可以通過滾動改變可視性的單元。15.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括選擇模式類,用于操作可以選擇和不選擇的容器中的單元。16.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括分類模式類,用于操作可以分類子單元的容器單元。17.如權利要求6所述的系統(tǒng),其特征在于,所述客戶側控制模式類包括值模式類,用于表示表達值的用戶接口單元。18.如權利要求6所述的系統(tǒng),其特征在于,進一步包括窗口模式類,用于操作用戶桌面上的窗口。19.如權利要求1所述的系統(tǒng),其特征在于,進一步包括輔助工具,用于執(zhí)行附加功能。20.如權利要求1所述的系統(tǒng),其特征在于,進一步包括提供者側自動接口,用于揭示附加屬性。21.如權利要求1所述的系統(tǒng),其特征在于,進一步包括提供者原始單元接口,用于從原始單元樹中返回相關單元。22.如權利要求1所述的系統(tǒng),其特征在于,進一步包括控制模式提供者接口,用于揭示與定義的控制模式相關的狀態(tài)和信息。23.一種在為客戶提供用戶接口信息的存取系統(tǒng)中執(zhí)行的客戶側工具系統(tǒng),該存取系統(tǒng)包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述客戶側工具包括客戶側自動機制,包括從提供者側查詢用戶接口事件信息的客戶自動類;以及客戶側邏輯單元機制,包括表示在邏輯樹中的用戶接口單元的邏輯單元類。24.如權利要求23所述的系統(tǒng),其特征在于,所述客戶自動類包括用于添加自動事件句柄的工具以及用于撤消自動事件句柄的工具。25.如權利要求23所述的系統(tǒng),其特征在于,所述客戶自動類包括用于添加自動屬性改變事件句柄的工具以及用于撤消自動屬性改變事件句柄的工具。26.如權利要求23所述的系統(tǒng),其特征在于,所述客戶自動類包括用于添加聚焦改變事件句柄的工具以及用于撤消聚焦改變事件句柄的工具。27.如權利要求23所述的系統(tǒng),其特征在于,所述客戶自動類包括用于添加頂層窗口事件句柄的工具以及用于撤消頂層窗口事件句柄的工具。28.如權利要求23所述的系統(tǒng),其特征在于,所述客戶自動類包括用于添加邏輯結構變化事件句柄的工具以及用于撤消邏輯結構變化事件句柄的工具。29.如權利要求23所述的系統(tǒng),其特征在于,所述客戶自動類包括用于查找邏輯單元的工具以及用于查找原始單元的工具。30.如權利要求23所述的系統(tǒng),其特征在于,所述客戶側原始單元類用于表示原始單元樹中的單元。31.如權利要求23所述的系統(tǒng),其特征在于,所述邏輯單元類進一步包括獲得單元所支持的所有模式的工具。32.如權利要求23所述的系統(tǒng),其特征在于,進一步包括輸入類,用于提供模擬輸入的方法。33.如權利要求32所述的系統(tǒng),其特征在于,所述輸入包括鼠標輸入和鍵盤輸入。34.一種在為客戶提供用戶接口信息的存取系統(tǒng)中執(zhí)行的提供者側工具系統(tǒng),該存取系統(tǒng)包括一種從提供者側向客戶傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述提供者側工具包括提供者側自動類,包括為客戶提供事件通知的工具;提供者側自動接口,用于揭示用戶接口屬性;原始單元接口,用于返回與特定相關單元有關的信息;以及原始單元上下文接口,用于管理與特定單元無關的事件和功能。35.如權利要求34所述的系統(tǒng),其特征在于,提供者側自動類包括產生自動事件的工具。36.如權利要求34所述的系統(tǒng),其特征在于,提供者側自動類包括產生屬性改變事件的工具。37.如權利要求34所述的系統(tǒng),其特征在于,提供者側自動類包括產生聚焦改變事件的工具。38.如權利要求34所述的系統(tǒng),其特征在于,提供者側自動類包括產生邏輯結構改變事件的工具。39.如權利要求34所述的系統(tǒng),其特征在于,進一步包括控制模式提供者接口。40.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括應用程序窗口提供者接口,用于揭示與頂層應用程序窗口相關的狀態(tài)和信息。41.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括展開和收縮接口,用于隱藏和顯示內容。42.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括網格提供者接口,用于揭示基本網格功能。43.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括層次項提供者接口,用于允許客戶在用戶接口單元之間遍歷層次關系。44.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括激活提供者接口,供執(zhí)行單一動作的對象使用。45.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括多視圖提供者接口,用于揭示對象在多個表示之間進行切換的能力。46.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括范圍值提供者接口,用于揭示能夠管理有限值域的一組屬性的能力。47.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括滾動提供者接口,用于揭示改變可視區(qū)域的能力。48.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括由標識選擇提供者接口,用于揭示在項之間提供選擇的單元。49.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括選擇提供者接口,用于表示管理選擇的容器。50.如權利要求39所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括窗口提供者接口,用于揭示改變大小和位置的能力。51.一種用于通過存取系統(tǒng)將用戶接口信息提供給客戶的應用程序接口系統(tǒng),所述存取系統(tǒng)包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述應用程序接口系統(tǒng)包括客戶側應用程序接口,用于輔助客戶獲得用戶接口信息,其中所述客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類以及輸入類;以及提供者側應用程序接口,以響應客戶請求,所述提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口以及控制模式提供者接口。52.如權利要求51所述的系統(tǒng),其特征在于,進一步包括由提供者側和客戶側使用的輔助類。53.一種用于通過存取系統(tǒng)將用戶接口信息提供給客戶的計算機執(zhí)行的方法,所述存取系統(tǒng)包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述方法包括提供客戶側應用程序接口,用于輔助客戶獲得用戶接口信息,其中所述客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類以及輸入類;以及提供提供者側應用程序接口,以響應客戶請求,所述提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口以及控制模式提供者接口。54.如權利要求53所述的方法,其特征在于,進一步包括提供給提供者側和客戶側使用的輔助類。55.一種用于通過存取系統(tǒng)將用戶接口信息提供給客戶的計算機執(zhí)行的方法,所述存取系統(tǒng)包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述方法包括使用從客戶自動類中所選擇的事件句柄來請求用戶接口信息;使用對應的激活事件方法來激活提供者自動類以提供用戶接口事件通知。56.如權利要求55所述的方法,其特征在于,進一步包括使用邏輯單元工具來獲得用戶接口單元信息。57.如權利要求55所述的方法,其特征在于,進一步包括使用客戶側原始單元工具來獲得有關原始單元樹中單元的原始單元信息。58.如權利要求55所述的方法,其特征在于,進一步包括使用客戶側輸入類以提供模擬輸入的方法。59.如權利要求58所述的方法,其特征在于,進一步包括模擬鼠標輸入和鍵盤輸入。60.如權利要求55所述的方法,其特征在于,進一步包括使用客戶側控制模式類以允許客戶與存取系統(tǒng)控制模式進行互動。61.如權利要求55所述的方法,其特征在于,進一步包括執(zhí)行輔助工具以執(zhí)行附加功能。62.如權利要求55所述的方法,其特征在于,進一步包括使用提供者側自動接口以揭示附加屬性。63.如權利要求55所述的方法,其特征在于,包括執(zhí)行提供者原始單元接口,以從原始單元樹返回相關單元。64.如權利要求55所述的方法,其特征在于,進一步包括執(zhí)行控制模式提供者接口,以揭示與定義的控制模式相關的狀態(tài)和信息。全文摘要描述了一種為客戶提供用戶接口信息的方法和系統(tǒng)。該方法和系統(tǒng)執(zhí)行一組應用程序接口,以通過存取系統(tǒng)將用戶接口信息提供給客戶。存取系統(tǒng)包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述應用程序接口系統(tǒng)包括客戶側應用程序接口,用于輔助客戶獲得用戶接口信息。所述客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類以及輸入類。提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口以及控制模式提供者接口。文檔編號G06F9/40GK1688970SQ03801951公開日2005年10月26日申請日期2003年5月17日優(yōu)先權日2003年5月16日發(fā)明者B·麥克科恩,R·辛克萊,P·M·瓦格納,P·J·里德,M·A·弗里德曼,H·S·博恩斯申請人:微軟公司