通過存取系統將用戶接口信息提供給客戶的系統和方法

            文檔序號:7710788閱讀:372來源:國知局

            專利名稱::通過存取系統將用戶接口信息提供給客戶的系統和方法
            技術領域
            :本發明涉及輔助技術(assistivetechnology)、自動化測試和其它產品領域,所述產品對用戶接口信息以及具有用戶接口信息的這些產品的交互作用進行收集。
            背景技術
            :輔助技術(AT)的產品是用于為在學習、交流和訪問計算機軟件所含有和表達的信息這些方面需要輔助的計算機用戶提供幫助。這些產品需要與計算機接口相關的信息。同樣,現有的自動化測試產品和用戶接口命令輔助程序也需要有關用戶接口的信息。當前,這些產品并不具有足夠的用戶接口(UI)信息源。上述3種類型的產品(客戶)需要得到其它方面的必要支持以實現(1)收集有關應用程序用戶接口的信息;(2)無論采用什么技術創建UI,都能可編程地揭示和詢問UI單元;(3)產生鍵盤和指針輸入;以及(4)了解哪種類型的狀態或功能當前有效。目前,還沒有哪種單一技術可以為某一AT產品提供所有這些能力。而且,當前的AT產品并不都是與所有的圖形操作系統(OS)技術完全兼容,并且缺乏以集中方式過濾和調整冗余或誤導通知的能力。而另一缺陷在于現有的自動和存取基本架構缺乏可擴展性,并且因此需要改變OS層以添加新功能。而且,目前,為收集有關應用程序用戶接口的信息,AT產品必須寫入應用程序定制代碼以便為用戶獲得信息。而寫入這些應用程序定制代碼的處理是費時并需要不斷維護。當前的自動基礎架構也缺乏以相容方式過濾和調整冗余或誤導事件通知的能力。這樣,事件的消費者就需要獨立地過濾信息。當前的系統允許將AT產品以3級顆粒度(granularity)級別請求事件通知5(1)桌面上的一切;(2)在特定的進程中(例如打開字處理程序);或3)在特定進程中的線程(進程中的多對象操作)。目前,當客戶接收一個事件,它就對產生了該事件的特定窗口的窗口句柄和指示哪里產生事件的其它信息位進行接收。客戶做出交叉處理調用以檢索與該事件相關的UI對象。利用該對象,客戶可以做出附加交叉處理調用以請求有關該對象的信息。如果客戶需要五段信息,那么,客戶就必須做出5次交叉處理調用。交叉處理調用是非常緩慢的,因此,使用當前存取基礎架構收集UI信息的執行成本是很高的。這種類型的己知情況在圖11中示出。服務器應用程序12激活事件6。核心程序14判定必須通知哪些客戶,并向感興趣的客戶10發送事件通知18。客戶10經過處理邊界2向服務器應用程序12發出對有關事件通知18的對象的請求16。服務器應用程序12返回對象20,并且隨后,客戶10可以開始發送對與激活事件的UI控制相關信息的請求16。服務器應用程序12經過處理邊界2將所請求的信息20返回給客戶10。另一種選擇是將客戶代碼作為進程中的動態鏈接庫(.DDL)進行加載。這種選擇具有一些缺陷。首先,它需要系統協助將客戶代碼加載到進程中。其次,由于一旦將客戶代碼加載到應用程序的進程中,就很難對其收集的信息進行限制,因此,它會產生安全問題。再次,對于客戶來說為了使其成為有效的技術,就必須將其加載到系統上運行的每個進程中。比較理想的做法是僅將可信任的客戶加載到另一應用程序進程中。而且,需要系統能夠給予客戶對其想要接收的事件通知進行規定的能力。在己知的系統中,客戶可能需要做出大量交叉處理調用,并隨后分析信息以判定它是否對該事件感興趣。需要一種機制能夠以更加有效的方式執行對該事件的過濾,并能很容易地進行升級以支持新的系統或應用程序事件。而且,需要一種僅使用可信任成份的系統,以緩解安全問題。目前,當查詢有關用戶接口的信息時,要求AT產品對樹進行訪問,該樹是特定UI框架的本身結構。因此,對于多個UI框架就需要多個樹來傳送用戶接口信息。這些不同的樹可能含有不感興趣的信息或對用戶不可見,例如隱藏的容器對象,它對最終用戶控制的可視UI控制進行管理。因此,就需要一種僅具有用戶感興趣的節點的單一標準的樹。需要一種解決方案來解決對AT產品、自動測試工具和命令輔助程序的需求。這種解決方案可以由所有的圖形OS技術使用,并能允許對所有形式的UI和UI組件的存取訪問。
            發明內容本發明針對一種為客戶提供用戶接口信息的方法和計算機應用程序。在本發明的一個方面,提供了一種在為客戶提供用戶接口信息的存取系統中使用的工具系統。該存取系統包括客戶側和提供者側。該工具系統包括客戶側自動工具,包括査詢用戶接口信息的客戶自動類。該客戶自動類包括事件登記工具和邏輯單元揭示工具。這組工具還包括提供者側自動工具,以便為客戶提供用戶接口信息。提供者側自動工具包括自動提供者類,具有為客戶提供事件信息的工具。在另一方面,客戶側工具組包括客戶側自動機制和客戶側邏輯單元機制,客戶側自動機制包含從提供者側查詢用戶接口事件信息,而客戶側邏輯單元機制包括表示在邏輯樹中用戶接口單元的邏輯單元類。在另一方面,提供者工具包括提供者側自動類和提供者側自動接口,提供者側自動類包括用于向客戶提供事件通知的工具,而提供者側自動接口用于揭示用戶接口屬性。提供者側工具進一步包括原始單元接口,用于返回有關特定相關單元的信息;以及原始單元上下文(context)接口,用于管理與特定事件無關的事件和功能。在另一方面,本發明包括應用程序接口系統,用于通過存取系統向客戶提供用戶接口信息。該存取系統包括將用戶接口信息從提供者側傳送到客戶側的一種機制,以及有選擇性地揭示用戶接口信息的邏輯樹。應用程序接口系統包括用于幫助客戶獲得用戶接口信息的客戶側應用程序接口。客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類和輸入類。提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口和控制模式提供者接口。在另一個方面,本發明包括一種計算機可執行方法,用于通過存取系統向客戶提供用戶接口信息。該方法包括用于幫助客戶獲得用戶接口信息的客戶側應用程序接口,其中客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類和輸入類。該方法還包括提供提供者側應用程序接口以響應客戶請求,該提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口和控制模式提供者接口。在另一方面,本發明包括一種計算機可執行方法,用于通過存取系統向客戶提供用戶接口信息。該方法包括使用從客戶自動類中選擇的事件句柄請求用戶接口信息,以及包括一種使用相應的引發事件方法來為提供者提供用戶接口事件通知的方法。對于本領域的熟練技術人員來說,本發明的其它優點和新穎特征將通過下面的描述變得更加顯而易見,或可以從本發明的實施中了解。本發明將結合下述附圖進行詳細描述。圖1是適用于實現本發明的計算系統環境框圖;圖2是在存取系統、客戶環境和服務器環境之間的互動框圖;圖3是說明存取系統核心的組件框圖;圖4(A)-4(D)是說明從本機單元(nativeelement)創建邏輯樹;圖5是示出創建邏輯樹的過程次序的流程圖;圖6示出形成邏輯單元的對話框和其組件;圖7是說明涉及激活本發明事件機制過程的流程圖;圖8是說明本發明實施例中客戶側API的框圖;圖9是說明本發明實施例中服務器側API的框圖;圖10是說明使用本發明存取系統的實施例說明在客戶和服務器之間互動的框圖;圖11是示出已知的事件通知系統。具體實施方式示腳脾裙圖1說明了可以實現本發明的一個示范計算系統環境100的實例。該計算系統環境IOO僅是一種適合的計算系統環境的示例,并非要將本發明的使用或功能范圍局限于此。計算環境100也不能解釋為必須對有關示范操作環境100說明的任一組件或組合具有依賴或要求。本發明可以用計算機可執行指令的通用環境來描述,例如計算機執行的程序模塊。通常,程序模塊包括執行特定任務或執行特定抽象數據類型的例行程序、程序、對象、組件、數據結構等。而且,本領域的技術人員可以理解本發明可以用其它計算機系統配置實現,包括手持設備、多處理器系統、基于微處理器或可編程的消費類電子產品、迷你計算機、大型計算機等。本發明還可以在分布式計算環境中實現,其中由通過通信網絡鏈接的遠程處理設備來執行任務。在分布式計算環境中,在本地和遠程計算機存儲媒體中都可包含程序模塊,所述媒體包括存儲器存儲設備。參照圖1,一種執行本發明的示范系統100包括以計算機110形式出現的通用計算設備,它包括處理單元120、系統存儲器130和系統總線121,它將包括系統存儲器在內的各種系統組件耦合到處理單元120。計算機110典型地包括各種計算機可讀媒體。作為示例而不是限定,計算機可讀媒體包括計算機存儲媒體和通信媒體。系統存儲器130包括易失和/或非易失存儲器形式的計算機存儲媒體,例如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132。在ROM131中通常存儲了基本的輸入/輸出系統133(BIOS),它包含幫助,例如在啟動期間,在計算機iio各單元之間傳輸信息的基本例行程序。RAM132通常包括處理單元120需要立刻存取和/或當前正在處理的數據和/或程序模塊。作為示例而不是限定,圖1示出了操作系統134、應用程序135、其它程序模塊136以及程序數據137。計算機110可以包括其它可移動/不可移動、易失/非易失計算機存儲媒體。僅作為示例而不是限定,圖1示出了對不可移動非易失磁性媒體進行讀寫的硬盤驅動器141、對可移動非易失磁盤152進行讀寫的磁盤驅動器151,以及對可移動非易失光盤156,例如CDROM或其它光媒體進行讀寫的光盤驅動器155。其它可以用于示范操作環境的可移動/不可移動、易失/非易失計算機存儲媒體包括(但不局限于)磁帶盒、閃存卡、數字通用盤、數字視頻帶、固態RAM、固態R0M等。硬盤驅動器141通常通過不可移動存儲器接口例如接口140與系統總線121相連,而磁盤驅動器151和光盤驅動器155通常通過可移動存儲器接口例如接口150與系統總線121相連。在圖1中討論和說明的驅動器及其相關計算機存儲媒體為計算機110提供了對計算機可讀指令、數據結構、程序模塊和其它數據的存儲。在圖1中,例如,硬盤驅動器141示出存儲了操作系統144、應用程序145、其它程序模塊146和程序數據147。注意,這些組件既可與操作系統134、應用程序135、其它程序模塊136以及程序數據137相同,也可以不同。對操作系統144、應用程序145、其它程序模塊146和程序數據147給出不同的參考標記是為了說明至少它們是不同的副本。通過輸入設備,例如鍵盤162和指示設備161(通常為鼠標、軌跡球或觸摸板),用戶將命令和信息輸入到計算機110。其它輸入設備(未示出)包括麥克風、操縱桿、游戲手柄、衛星天線、掃描儀等。這些設備和其它的輸入設備通常通過耦合到系統總線的用戶輸入接口160連接到處理單元120,但也可以通過其它接口和總線結構,例如并行口、游戲端口或通用串行總線(USB)進行連接。通過一種接口,例如視頻接口190,也可將監視器191或其它類型的顯示設備連接到系統總線121。除了監視器,計算機還可以包括其它通過輸出外圍接口195連接的外圍輸出設備,例如揚聲器197和打印機196。在本發明中的計算機110可以在使用邏輯連接到一個或多個遠程計算機,例如遠程計算機180,的聯網環境中工作。遠程計算機180可以是個人計算機,并且雖然在圖1中僅示出了存儲器存儲設備181,但它通常包括上述有關計算機110所描述的許多單元或所有的單元。圖1中描述的邏輯連接包括局域網(LAN)171和廣域網(WAN)173,但也包括其它網絡。當在LAN聯網環境中使用,計算機IIO通過網絡接口或適配器170連接到LAN171。當在WAN聯網環境中使用,計算機110通常包括調制解調器172或其它在WAN173上建立通信的裝置,例如因特網。調制解調器172,可以是內置也可以外置,可以通過用戶輸入接口160或其它合適的機制連接到系統總線121。在聯網的環境,針對計算機110描述的程序模塊或部分程序模塊可以存儲在遠程存儲器存儲設備上。通過示例但不是限定,圖l示出將遠程應用程序185駐留在存儲器設備181上。需要了解所示的網絡連接只是示例,還可以使用其它裝置來建立計算機之間的通信鏈路。雖然,計算機110的許多其它內部組件并沒有示出,但本領域的技術人員可以理解這些組件和互連已經眾所周知。因此,有關計算機110的內部構造沒有必要在本發明中進一步詳述。存攻系一統錄賴如圖2所示,存取系統200與客戶環境300和服務器環境400交互。存取系統200可以在上述圖1所述的計算機環境100中實現。存取系統200包括便于與客戶300交互的客戶側存取接口220,便于與服務器側400交互的服務器側存取接口230,以及存取系統核心201。本發明的存取系統200提供了可編程訪問用戶接口(UI)的客戶側API305以及提供者側API440。存取系統200允許應用程序自身或任何它們所使用的組件可存取。客戶環境300最好包括輔助技術(AT)產品或自動UI測試工具。服務器側400可執行多種不同的技術,如圖2所示。服務器系統410包括適配器412和核心程序414,它可以在第一類型的UI中找到。服務器系統420包括代理組件422和控制程序424,它可以在第二類型的UI中找到,例如由位于華盛頓州雷蒙德的微軟公司所出品的微軟操作系統產品中使用的Win32UI。服務器系統430包括適配器432和內部0M434,它可以在可選的第三類型UI中找到。如圖3所示,包含在存取系統200中的一種事件機制依賴于UI自動客戶202和UI自動服務器204,便于與客戶環境300和服務器環境400交互。UI自動客戶202和UI自動服務器204將參照本發明的事件機制210在下面詳細描述。本發明的存取系統200為客戶(AT產品)提供如下能力1)收集有關應用程序用戶接口的信息;2)無論采用什么技術創建UI,都能可編程地揭示和詢問UI單元;(3)產生鍵盤和指針輸入;以及(4)了解哪種類型的狀態或功能當前有效。存取系統200允許應用程序使得其自身和其組件可存取。如圖2和3所示的結構展示了存取系統200的一些主要方面,包括l)邏輯UI樹;2)控制模式;3)事件機制;4)屬性;和5)客戶和服務器側API,所有這些都將在下面詳細描述。〃/微邏謝m存取系統200的一個完整組件就是邏輯樹222,如圖4(D)所示的一個示例。樹222包含在客戶側存取接口220中。邏輯樹是UI單元的基礎結構層次的過濾圖,而不是必須由控制或應用程序開發程序所執行的單獨樹。實際上,它切斷了一些意義明確的屬性,感興趣的或不感興趣的,這些屬性指示了在邏輯樹222中是否應該揭示出該結構單元。存取系統核心201消化這些信息以產生過濾的UI邏輯樹222,隨后,將其提供給AT產品或測試腳本。邏輯樹222是單元樹,每個單元表示了一種控制、控制中的一項或一分組結構,它們可以是對話框、窗格或框架。邏輯樹222的結構應該表示用戶可察覺到的應用程序UI(即使該控制實際上是使用一種不同的基礎結構執行)。樹應該隨時間保持穩定。只要對于用戶來說應用程序看上去是相同的,即使在場景后的應用程序執行細節已經變化,表示該應用程序的邏輯樹222也要保持相同。為結構和執行原因而存在的本機的一些單元,例如在微軟OS產品中的外殼"ShDocView"窗口,不應該在該樹中出現,因為用戶不能察覺到它們。邏輯樹222是從多個分段中創建的單一樹,它能將多個不同的處理進行統一,因此,使得它們對于客戶端來說是相同的。邏輯樹222允許批量檢索,并且能獲得屬性列表的一個值。當用戶正常地激活跨處理(crossprocess)調用以請求值時,存取系統200將通過使用邏輯樹222來取出它們。邏輯樹222是從用于創建原始樹的分段中構建,而不象已有系統中在一步中就構建成。如圖5所示,有3個主要過程來創建邏輯樹222。在過程72,存取系統200定位基礎技術的本機各單元,并到達如圖4(A)所示的本機樹。在過程74,存取系統200組合本機各單元以形成如圖4(B)所示的原始樹20。最后,在過程76,通過隱藏原始樹20中不感興趣的組件來獲得邏輯樹222,如圖4(D)所示。圖4(A)說明了兩種本機樹10和14,它們是從基礎技術,例如Win32UI或任意其它可用UI的本機單元中構建的。本機樹10包括父節點11和多個彼此具有不同關系的后代12。同樣,本機樹14包括具有多個子節點16的父節點15。子節點16可以彼此作為兄弟節點來描述。如圖4(B)所示,本機樹10和14可以結合形成原始樹20。原始樹20包括父節點21,具有兩個子節點22和30。子節點22具有后代23-29,而子節點30具有后代31-33。該原始樹20是本機樹10和14、形成節點22-29的本機樹10的節點以及形成節點30-33的本機樹14的節點的組合。通過如圖4(C)和4(D)概括所示的方法,原始樹20轉換成了邏輯樹222。12在從原始樹20轉換為邏輯樹222的過程中,開發程序可以在原始樹中插入暗示。開發程序可以將原始樹20中的節點標記為"隱藏自身"或"隱藏自身及子節點"或"隱藏節點的子節點"等。開發程序也可以橫向移動節點或將節點放置在子節點之前。對原始樹20中這些"暗示"和修改被用來形成邏輯樹222。例如,在圖4(C)中,開發程序將原始樹20的節點24-26和33標記為不感興趣,如框40和41所示。通常,含有對用戶不可見的單元的節點被標記為不感興趣。而有關可視UI的節點通常被認為是感興趣的,并且將被包含在邏輯樹222中提供給AT客戶300使用。如圖4(D)所示,標記為不感興趣的這些節點并沒有包含在邏輯樹222中。存取系統200使用邏輯樹222來查找有關事件的信息、系統的狀態、對象的位置以及控制信息。已知的系統不具備在它們的樹中進行研究的能力。而邏輯樹222可以基于客戶300的選擇進行瀏覽,并提供信息,而不用顧慮服務器側使用的應用程序。邏輯樹222是一種單獨的標準樹,它是UI的邏輯表現,并且形成只包含客戶200感興趣單元的形式。因此,邏輯樹222呈現出一種層次體系,能精密映射到展示給最終用戶的結構,而不是強迫AT產品過濾UI單元的結構體系并猜測呈現給最終用戶的模式。這對AT產品將UI描述給用戶的任務進行了大大簡化,并幫助了用戶與應用程序的互動。因為該邏輯UI樹222是存取系統200的基礎部分,存取系統200所有的其它組件都是根據邏輯樹222工作。例如,圖6示出具有非常簡單的結構的簡易對話框60。然而,當審視現有可用存取技術時,該對話框60的結構卻驚人地復雜。它包含264個AT產品要過濾的對象,以便只向最終用戶揭示有意義的對象。通過存取系統200和其對邏輯UI樹222的支持,擁有該對話框60的開發程序可以設定一些屬性以將下述圖6中所示的結構呈現給AT產品300。如圖6所示,對于"運行"對話,開發程序可以指示飛行窗口圖形62和"請打入你需要打開的程序、目錄、文檔的名字或因特網資源和窗口"63為感興趣的。開發程序也可以指定包含記事本、字、計算器等的組合框64、以及確定65、取消66和瀏覽67按鈕為感興趣。這為開發程序提供了一種低成本機制來標記它們的單元體系,并因此,通過UI存取系統200產生它們的應用程序UI的邏輯表現。每個所示出的特征都可以由與該節點與邏輯樹222中每個其它節點具有特定關系的一個節點表示。該邏輯表現為測試團隊、AT產品或客戶300提供了直接利益。雖然邏輯樹222是用戶最終感興趣的東西,但原始樹20也具有一些重要的功能。邏輯樹222僅含有用戶能夠涉及的單元,而原始單元樹20含有表示基礎框架的執行結構的節點,例如22。例如,對于Win32UI分段,該樹將包含表示HWND的節點。從某方面來說,原始樹20是在邏輯單元樹222和基礎框架自身的本機單元樹之間的"中間結構"。原始樹20作為創建邏輯單元樹222的基礎使用,并且本機元素通過它首先插入到系統中。原始樹20也可用于調試和測試。對于定點或描述哪里是特定有問題的節點是很有用的。基本原始單元節點的功能包括瀏覽原始單元樹的方法;跳轉到對應邏輯單元(存在的話)的方法;含有該單元"調試字符串"的屬性,例如,對于H麗D節點為"H麗D0x483FE";以及其它"在場景基礎架構之后"的方法。這些其它方法實現了命中測試和定位;事件;以及揭示框架可以很容易提供的屬性(例如聚焦、有效)。原始單元樹20含有節點22-33,它們表示了來自不同再現引擎的單元。該原始單元樹用作再現引擎的開始點以將它們自身插入到存取系統200中,并從適應本機單元的輕適配對象(例如從Win32的H麗D)創建成標準的邏輯樹222。它還適用于處理主持轉換(hostingtransition),其中一種技術主導另一種技術。由于原始單元樹20是邏輯樹222創建的基礎,它可以用于檢驗邏輯樹222是否完成、連接,并能用于檢査未說明單元。該原始單元樹20可進一步用于其它類似基礎結構的任務例如,提供一些基礎單元ID,并提供一些基礎框架配置的單元屬性,例如聚焦、有效和位置。原始單元樹20并不是AT產品或客戶300的主要信息源,并不用于邏輯瀏覽,且不揭示給最終用戶。原始單元樹20也不能用于獲取樹中的單元位置,因此,它能及時返回到一些未來的點。邏輯單元樹222執行所有這些功能。原始單元樹20通常可以從基礎再現技術(H麗D,Element)的原始單元機械地創建,而不需要表示邏輯單元的知識。因此,它可用于査找邏輯樹222沒有考慮到的原始單元。原始單元樹20是一種有用的調試和診斷工具,因為它允許對獲取的節點位置進行類似"堆棧(stack-dump)"的描述。而且,已知的系統中的樹是基于代碼特定標準,而難以用逆向技術執行。本方法使用的是通用的抽象"原始單元"類型,可以用任何基礎再現技術執行和代表。為了獲得原始單元樹,調用原始單元根節點將獲得桌面單元,通過驗證其父節點為Null來確定該根節點,它是所有其它節點的最終祖先。為了獲得其它單元,調用一種從特定點獲得原始單元的方法將返回使用有效屏幕坐標的單元。在獲得原始單元樹之后,可以通過檢查單元(父節點、繼承節點和子節點)來檢驗和驗證該樹。在操作中,客戶300可以使用關系,例如父節點、下一繼承節點、前一繼承節點、第一子節點、最后子節點等,來瀏覽原始單元樹20。客戶300可以從原始單元跳轉到邏輯樹222中的對應邏輯單元。當客戶300想要保持被告知各個事件,客戶300可以通過如圖3所示的UI自動客戶202進行登記以獲得信息。客戶300指定它希望接收的對象信息、它想要信息去的地方以及想要取回的屬性列表。客戶請求送到UI自動客戶202。UI自動客戶202能夠監視桌面上的任何處理。UI自動服務器204保持對監聽的客戶300的追蹤,并知道如何取回給UI自動客戶202。UI自動客戶202告知UI引擎206客戶的興趣,所以,UI引擎206知道何時告知UI自動服務器204該事件。UI引擎不需要使用客戶的建議,但可以選擇它以免總是要將事件通知UI自動服務器204,或者在僅當客戶監聽所有事件時通知UI自動服務器204。該建議在僅當一個客戶在監聽事件時如果UI引擎想要開啟UI自動服務器204通知時很有效。UI引擎會這樣做以避免UI可能的速度下降,和避免加載它并不需要的代碼模塊。UI引擎206隨后告知UI自動服務器204—個UI事件。UI自動服務器204將所請求的邏輯單元返回給客戶300,并將信息發送給客戶300,所述信息包括客戶300所請求的事件的屬性。UI自動服務器204決定哪些信息是在客戶所請求的范圍,并且僅當該信息是感興趣時才形成一個邏輯單元。形成邏輯單元包括在UI自動服務器側的預取客戶所指定的在處理事件時其要使用的屬性組。例如,UI自動服務器204可以揭示組合框的邏輯單元。其范圍是該組合框和其15點/父節點/依賴關系來定義登記階段期間的范圍。在UI自動服務器204判定信息是否在所請求范圍內之后,就創建一個邏輯單元。該UI自動客戶202通過對從UI自動服務器204接收所請求信息的目標應用程序進行對話,并將對象發送到客戶300上的合適空間來為客戶300服務。當客戶300登記以接收事件通知時,就創建UI自動服務器204。作為示例,UI引擎206可以是運行微軟Word字處理應用程序。客戶300登記需要名字屬性的變化。客戶的登記引起創建UI自動服務器204。客戶的登記也建議UI引擎206開始告知UI自動服務器204需要名字屬性。UI引擎206沒有取得范圍信息。UI引擎206調用服務器側的一個API。UI引擎206規定1)哪個屬性改變;2)屬性的新值;以及3)可能的舊值。UI自動服務器204的創建是基于客戶300感興趣的事件,且從而知道感興趣的事件、屬性、客戶和范圍,因此,它就能知道是否有客戶300對創建的邏輯單元感興趣。如果有超過一個的客戶300通過一個特定的UI自動服務器204登記事件,并且這些客戶300登記的是需要相同的事件,并隨同返回的邏輯單元要求大量取得屬性,那么當UI自動服務器204將事件發送回客戶300時,每個客戶都將得到隨同邏輯單元返回的所請求大量取得屬性的組合。對于每個進行監聽的客戶300,UI自動服務器204告知客戶300,將與事件相關的邏輯單元傳送給客戶。UI自動服務器204僅創建一個邏輯單元。這是對現有技術的很大改進,現有技術中,要求每個客戶300都請求其自身的事件源對象副本。如果當客戶登記事件時,UI引擎206不利用UI自動客戶建議,UI引擎206可以詢問UI自動服務器204是否有任何存取客戶300在監聽,并且如果沒有一個在監聽,就可以避免創建信息和將其發送給UI自動服務器204的工作。例如,屏幕閱讀器是客戶300,并規定了它想要信息送到哪里、聚焦變化對象以接收事件以及感興趣的特定屬性列表。向UI引擎206提供建議,并且引擎知道它應該將事件發送到UI自動服務器204。依據檢測的聚焦變化,UI引擎206通知UI自動服務器204。UI自動服務器204將其轉換成熟知的接口并將事件和對象發送給UI自動客戶202。UI自動客戶202將對象發送到客戶300中的合適空間。上述組件與已有系統相比,其改進在于消除了在核心程序中對事件的中央存儲。取而代之以UI自動服務器204了解所有對其運行的上下文程序中取得信息感興趣的客戶300。核心存儲的消除還創建了一種更加對等的互動,因為,UI自動服務器204實現了在核心程序中先前所執行的功能。本發明的存取系統200為客戶300提供了指定其想要了解的東西的能力,這樣,使用UI自動服務器204在服務器側就實現了過濾。圖7是有關事件登記和通知方法的過程的流程圖。在步驟80,客戶300請求事件通知。在步驟82,UI自動客戶202將請求發送給UI自動服務器204。在步驟84,UI自動客戶建議UI引擎206它要求通知。在步驟86,UI自動服務器204從UI引擎206接收通知。在步驟88,UI自動服務器204過濾所接收的信息。在步驟90,如果所接收的信息被查明是用戶不感興趣的,UI自動服務器204就丟棄該信息,并在步驟92繼續等待通知。或者,如果在步驟90發現該信息是感興趣的,在步驟94,UI自動服務器204就創建邏輯單元,并將其發送給UI自動客戶202。在步驟96,UI自動客戶202將所接收的信息放入客戶300中其合適的位置。存取系統200的事件機制210允許客戶300登記以接收UI中屬性變化、控制結構的樹變化、多媒體事件和相關信息的事件通知。沒有這些能力的話,客戶300必須連續調査系統中所有的UI單元,以驗證是否有任何信息、結構或狀態改變。存取系統200事件機制210也允許客戶300接收非處理(out-of-process)事件,請求隨事件通知一起返回的屬性集合,并為事件登記多個單元。事件機制210揭示了AT產品或測試應用程序用于登記事件的接口;AT產品執行用于接收事件通知的對象的接口;以及控制執行程序用于通知UI事件的事件引擎的接口。事件機制210用于允許AT產品和測試應用程序獨立于用于再現UI的UI引擎來接收事件,并允許AT產品和測試應用程序追蹤頂層應用程序窗口并聚焦,而不用顧慮基礎技術。在可用情況下,將事件與來自應用程序邏輯單元樹222的邏輯單元相關聯。在邏輯單元不可用的情況下,將事件與人們可讀字符串或其它已知代表事件源的對象相關聯。事件機制210基于在事件登記期間用戶提供的選擇來進行過濾。通過在服務器處使用客戶過濾選擇,在創建事件相關數據并將其通過跨處理發送給客戶之前,事件機制210通過減少大量交叉處理調用從本質上改善了非處理性能。事件機制210提供了一種方式,在事件登記期間指定對于事件感興趣的邏輯單元的屬性。這進一步減少了許多交叉處理調用。該事件機制210可以進行擴展,而不需要對主要的操作系統(OS)進行改變。雖然,事件機制210使用經管理的代碼實現,但未經管理的應用程序可以通過COM的互用性對其進行訪問。事件機制210可以使得客戶被告知許多類型的事件。一種類型的事件是頂層窗口事件。頂層窗口事件包括與菜單和組合框落下或任何將桌面作為父節點的特征相關的事件。另一類型的事件是聚焦事件。客戶300經常請求一種追蹤聚焦的方法。其它類型的事件包括屬性變化事件和邏輯結構變化事件。屬性變化事件是在當邏輯單元的屬性發生變化時被激活。邏輯結構變化事件是在當邏輯單元樹結構改變時被激活。事件也可以從控制模式中激活。從控制模式中激活的事件需要是可擴展的,并因此,這些事件由GUID識別。當登記時,可接受任何GUID值。對于任何新的控制模式,其證明的事件需要是唯一的GUID。AT產品可能需要進行修改以監聽新控制模式事件。監聽程序也需要能涵蓋這些事件。例如,定向測試可能需要將這些事件限制在特定應用程序或在應用程序中控制。該控制模式定義了什么是源,而事件消費者將需要參照該部分的記錄,以便了解如何使用源單元和事件爭論對象。另一種類型的事件是多媒體事件。多媒體可以包括聲音、視頻和動畫。該方法將支持多媒體事件,并通知客戶一些動作,包括"停止"、"暫停"、"快進"、"重復"和"靜音"。簡單的聲音事件可以獨立于多媒體事件進行處理。簡單的聲音事件表示單獨、短促的聲音,其存在是為了向用戶傳達某些事件的發生,而不是其聲音本身。簡單的聲音事件可以包括當新郵件到達時播放的聲音;當膝上型電腦電量低時產生的聲音;或當消息框用IconExclamation類型顯示時播放另一種類型的事件是軟焦點事件。軟焦點事件出現在桌面上,但停留在后臺中。一些軟焦點的示例是彈出式幫助窗口,在通知區域中顯示"有新的更新可用";在任務欄中的閃爍圖標,指示需要引起聚焦的后臺應用程序;以及當打印開始和結束時,在通知盒(tray)中出現和消失的打印機圖標。這些事件可能看上去與其它事件類別有某些重疊(多媒體可以涉及軟焦點也涉及的動畫事件)。然而,該事件將依據其傳送給用戶的東西來分類,而不是依據其如何被傳送來分類。客戶側API310和提供者側API440提供了一種事件通知方法,它支持上述所列舉類型的事件類型。這些方法將結合附圖8-10在下面進一步描述。控纖式存取模型提供了獨特的方法來分類和揭示特定UI單元或控制所支持的功能。存取模型定義了一組公共控制模式,每種模式定義了UI狀態的一個方面,以取代已有技術中將功能和特定控制類型(例如按鈕、編輯框或列表框)相關聯。因為這些模式彼此獨立,可以將它們組合以描述特定UI單元所支持的完整功能集。例如,存取系統200將單元作為支持調用控制模式來描述,而不是以其類名例如按鈕來描述。一種控制模式定義了結構、屬性、事件和該單元所支持的方法。因此,這些模式不僅允許客戶査詢控制狀態,它們也允許其通過使用為特定模式設計的接口來可編程地操作控制。例如,SelectionContainer模式提供了對所選擇項進行査詢、選擇或取消選定特定項、或判定控制是否支持單選或多選模式的方法。為存取系統300目前定義的控制模式包括1)SelectionContainer;2)Hierarchy;3)Invokable;4)SimpleGrid;5)Text;6)Value;7)RepresentsObject;8)Scrollable;9)Sortable;10)Drawing;以及11)OtherContainer。這種技術使得控制開發程序能夠執行新類型控制,同時仍然具有精確定義的將其狀態揭示給AT產品和測試腳本的方法。如果引入新類型狀態,就能定義新控制模式來表達所要求的功能。輔助技術產品和測試腳本現在可以寫成理解如何和每個模式工作,而不是和每個UI控制工作。因為存在的控制模式遠遠少于控制類,因此,這種技術19使得所需要的代碼最小。這種方法也促進了一種更加靈活的層次結構,該結構能有效詢問和操作新控制(只要它們支持已知的控制模式)。下述表格提供了公共控制的一些示例以及它們將支持的模式。ControlRelevantControlPatternsButtonhwokableCheckbox,Radiobu加nValueUstboxSelectionContainer,ScrollableComboboxSelectionContainer,Scrollable,ValueTreeviewSelectionContainer,Scrollable,HierarchyListviewSelectionContainer,Scrollable,SortaWeTextbox,EditValue,Text,Scrollable表格1更多的特定接口將用于揭示與公共控制模式相關的功能。這些模式的示例包括1)選擇管理容器;2)網格布局容器;3)含有值的UI單元;4)代表對象(文件、email等)的圖標;以及5)可調用的UI單元。通常,這些模式與特定控制并非緊密相連,并且不同的控制可以執行相同的模式。例如,列表框、組合框和樹圖都執行"選擇管理容器"的模式。一些控制可能執行多種控制,如果滿足選擇網格將既執行"網格布局容器"模式又執行"選擇管理容器"模式。在以前的應用程序中不存在單獨的"角色(role)"屬性,而是使用兩種單獨的機制。控制模式判定一控制的可用的功能,而人們可讀可定位屬性提供用戶可理解的控制類型名字,例如"按鈕"、"列表框"等。系統f/圖8示出本發明一實施例中客戶側API305的詳細情況。客戶側API305可以包括一組核心類310。該核心類310包括一個或更多的自動類312、邏輯單元類314以及原始單元類316。客戶側API305還可以包括一個或更多的控制模式類320、輸入類340以及輔助類350。這些類型的類中的每個類將在下面詳細描述。客戶自動類312為客戶300提供了一種UI自動方法。客戶自動類312含有并不是針對任何UI單元定制的方法。客戶自動類312可以提供一種通過某點、窗口句柄或桌面根單元獲得邏輯或原始單元的方法。客戶自動類312可以另外提供基于輸入規則查找邏輯單元的方法。客戶自動類312最好還包括對事件通知進行登記和取消登記的方法。自動類312最好還提供加載代理DLL,檢索屬性局部名字和控制模式,以及執行單元比較的助手功能。客戶自動類312還包括讓客戶300監聽事件的方法。自動類312所提供的一些方法在下表中加以概括。<table>tableseeoriginaldocumentpage22</column></row><table>includeStart,MatchCondition〗cond)FindRawE1envent:RawElementroot,RawEl柳ezit曰tart,BooleanincludeStart,MatchConditionJcond,Int32maxDepth)PatternNameStringPattemNa肺(AutomationPatternpattern)PropertyNameStringPropertyName(AutomationPropertyproperty)R柳oveAllEventHemdlersVoidR柳oveAllEvencHandlers()RemoveAutoma仁ionBventHandlerVoidRemoveAutomationEventHandler(AutomationEventeventld,L09icalEl柳entelement,AutomationEventHandlereventHancUer>RemoveAutomationPropertyChangedEventHandlerVoidRemoveAutomationpropertyChangedEventHandler(LogicalElementelement,AutoniatioriPiropertyChangedEventHandlereventHandler}RemoveFocusChangedEventHarudlerVoidRemoveFocusChangedEventHandler(FocusChangedEventHandlereventHandler》Removeliogica1StruetureChangedEventHandlerVoidRemoveLogicalStructureChangedEventHandlea:(LogicalElementelement,LogicalSti:uctureChangedEventHandlerRemoveTopLevelWindowBventHandlerVoidRemoveTopLevelWindowEventHandler(TopLevelWindowEventHandlereventHamUerEnableDefaultProxiesTenporaryMethodVoidEnableDefaultProxiesTeraporaryMethod()GetProxyDescriptionTableProxyDescription[〗GetProxyDescriptionTable(>internalOnlyTemporaryApiBnableSecurityVoidIiaternalOnlyTemporaryApiEnableSecurity(VoidRegisterProxyAssembly(AssemblyNameSetProxyDeacriptionTableVoidSetProxyDescriptionTable(ProxyDescfiption〗proxyDescript丄on)RegisterProxyDeBcriptionsVoidRegisterProxyDescriptions(ProxyDescription〖〗prcacyDescription》表2在操作中,如果客戶300需要為用戶獲得有關應用程序的信息,客戶300就找到一個按鈕并按下,觀察按鈕上的文字。客戶300可以調用一種方法,例如如表2所示的査找邏輯單元(FindLogicalElement)的方法。客戶側API305將返回一個值,該值對應于客戶側接口220的邏輯樹222中的一個位置。通過邏輯樹222,存取系統200不用考慮所使用的應用程序就能為客戶300提供了UI的抽象視圖。抽象模型包括結構、屬性、事件和功能,而列表框、按鈕或其它UI組件可以期望彼此共享。23客戶側API305另外包括邏輯單元314。邏輯單元314提供獲得公共單元屬性的字段、方法和屬性。如上所述,邏輯單元代表了邏輯樹222中的UI單元,例如界定矩形、聚焦、有效、可點擊點、運行時間、固定標識符以及名字。邏輯單元類314還可以提供在單元,例如第一子節點、最后子節點、下一繼承者和父節點中進行瀏覽的工具。邏輯單元類314還可以提供獲得對一單元的特定模式或獲得由該單元所支持的所有模式的工具。邏輯單元類314含有單元在邏輯單元樹222中所使用的字段、屬性以及方法。classSystem.Windows.Automation.LogicalElementread-onlyAutomaCionPropertyAcceleratorKeyPropertyread-onlyAutomationPropertyAccessKeyPropertyread-onlyAutoma匸ionEventAutomationPropertyChangedEventread-onlyAutomationPr鄰ertyBoundingRectanglePropertyread-onlyAutomationPropertyClassNamePropertyread-onlyAutomationPropertyControlTypePropertyread-onlyAutomationPropertyEnabledPropertyread-onlyAutomationPropertyFiratChildPropertyread-onlyAutomationEventFocusChangedEventread-onlyAutoma"onPropertyFocuse3Propertyread-onlyAutoma"onPropea:tyKeytooardHelpTextPropertyread-onlyAutomationPropertyliaatChildPropertyread-onlyAutomationEventLogicalStructureChangedSventread-onlyAutomationPropertyNamePropertyread-onlyAutomationPropertyNextSiblingPi:opertyread-onlyObjectNotSupportedread-onlyAutomationProperxyParentPropertyread-onlyAutomationPropertyPersist幼tIDPropertyread-onlyAutomationPropertyPreviousSJLblingPropertyread-onlyAutomationPropertyProcessIDPropertyread-onlyAuto郵仁ionPropertyRawTextPrope:rtyread-onlyAutomationPropertyRuntimeIDPropertyread-onlyAutoraationPropertyShortHelpTextPropertyread-onlyAutomationEventTopLevelWindowEventread-onlyAuto郵tionEventTreeLoadEventread-onlyObjectUseDefauItRect阮undingRectangleStringDebugStringLogic"EiementFirstChildLogicalElementFocusedEl柳entL03icaiElemer1tLastChildL09ic"Ele肺ntNextSiblingLogic承lEl柳entParentLogicalElementPreviousSiblingLogicalElementRootEle肺ntKeU10da,24<table>tableseeoriginaldocumentpage25</column></row><table>客戶側API305另外包括輸入類340。輸入類340可用于模擬鼠標、鍵盤和其它類型的輸入。輸入類340允許通過輸入方法例如鍵盤、筆和鼠標進行編程(programmatic)輸入。一個示例輸入類示于下表。<table>tableseeoriginaldocumentpage26</column></row><table>表5客戶側API305另外包括UI自動控制模式類320。UI自動控制模式類320可以揭示可編程訪問由邏輯單元揭示的特定功能的字段、屬性和方法。UI自動控制模式類320幫助用戶與UI存取系統200所定義的控制模式進行互動。例如,應用程序窗口模式方法將功能揭示給對應用程序的編程工作。該功能可以允許對子窗口或表示應用程序中工具欄、菜單、滾動條和系統菜單的邏輯單元位置進行配置。控制模式類320可以包括應用程序窗口模式(ApplicationWindowPattern)類。ApplicationWindowPattern類揭示了通常與頂層應用程序窗口相關的狀態和信息。客戶300可以使用這個類來平鋪或層疊應用程序的多文檔界面(MDI)子界面,査找其任務欄上的按鈕,以及定位其用戶界面的已知區域,例如工具欄和菜單。下表說明了本發明一個實施例的ApplicationWindow模式類。classSystem.Windows.Automation,ApplicationWindowPat:ternread-onlyAutomationPropertyCanArrangeChildWindowsPropertyread-onlyAutomationPropertyMdiChildrenPropertyread-onlyAutomationPropertyMemiBarsPropertyread-onlyAutomationPatternPatternread-onlyAu仁omationPropertyRelatedTaskBarButtonPropertyread-onlyAutomationPropertyScrollBarsPropertyread-onlyAutoma仁ionPropertyStatusBarsPropertyread-onlyAutomationPropertyStatusIncUcatorPropertyread-onlyAutomationPropertySystemMenuPropertyread-oniyAutomationPropertyToolBarsPropertyPropertiessBooleanCanArrangeChildWindowsIiOgicalEl柳entRelatedTaskBarButtonLogicalElementStatuslndicatorLogicalEl加節tSystemMenuMftthoda:BooleanArrangeChildWindows(ChildArrangementposition)LogicalEl柳ent〖1GetMdiChildren()LogicalEl飾entHGetMenuBars()IogicalEl咖erit1GetScrollBars()LogicalElementIGetStatusBars()LqgicalElementfGet丁oolBars(》__表6控制模式類320還可以包括用于展開和收縮單元的類,以提供一種展示和隱藏這些類的內容的機制(ExpandCollapsePattern)0ExpandCollapsePattern類作為ExpandCollapse模式的封裝類(wrapperclass)。ExpandCollapsePattern類含有客戶300用來操作可以擴展(顯示)或收縮(隱藏)內容的字段、屬性和方法。下表說明了ExpandCollapsePattern類的實施_______classSyst柳,Windows-Automation.ApplicationWindowPatternread-onlyAutomationPropertyCanArran訴ChildWindowBPropertyread-onlyAutomationPropertyMdiChildrenPropertyread-onyAutomationPropertyM抑u8汰rsPropertyread-onlyAutomationPatternPatternread-onlyAuto鵬仁ionPropertyRelatedTaskBarButtonPropertyread-onlyAutomationPropertyScrollBarsPropertyread-onlyAutomationPropertyStatusBarsPropertyread-onlyAutomationPropertyS仁atusIndicatorPropertyread-onlyAutoroationPropertySystecnMenuPropertyread-onlyAutomationPropertyToolBarsPropertyPropertiesiBooleanCanArrangeCliildWindowsLogicalEl柳entRelatedTaskBarButton_________L09icalEl柳entStatusIndUcatoi:Methods:BooleanArrangeChildWindows(ChildArrang柳entposition〉LogicalEl抓ent(GetMdiChildren(〉LogicalElementGetMenuBars()LogicalElementnGetScrollBars()LogicalElement〗GetStatusBars()LogicalEl柳加t〗GetToolBars()表7控制模式類320還可以包括網格項模式(GridltemPattern)類,允許客戶300快速判定所揭示的項是否是網格的一部分。如果項是網格的一部分,GridltemPattern類就依據行/列坐標和間隔來幫助判定該項處于網格的什么位置。GridltemPattern類最好包含客戶300用來操作揭示在網格中單元格功能的控制的字段、屬性和方法。下表說明了根據本發明實施例的GridltemPattern類。classSystem,Windows,Automation.Gridlt柳Pa11emread-onlyAutomationpropertyColumnPropertyreaci-onlyAutotnatioiiPropertyColumnSpanProper仁yread-onlyAutomationPropertyC0ntainin9GridPr0pertyread-onlyAu仁oma"onPatternPatternread-onlyAutomationPropertyRowPropertyread-onlyAutomationPropertyRowSpanPropertyProperties1Int32ColumnInt32Colurnn鄰anL(OgicalElemeiitContainingGridInt32Row1nt33RowSpan____________________表8控制模式類320還可以包括層次項模式(HierarchyltemPattern)類,它表示了與其它單元(例如TreeView控制中的單元)彼此具有層次關系的單元。HierarchyltemPattern類含有自動客戶300用于操作獨立于UI單元在邏輯樹222中的關系,而揭示它們之間層次關系的控制的字段、屬性和方法。下表說明了根據本發明實施例的HierarchyltemPattern類。classSystem.Windows,Automation.HierarchyUemPattemread-onlyAutomationPropertyDepthPropertyread-onlyAutomationPropertyFirstChildProperxyread-onlyAuto鵬ticmEventHierarchyChangedBventread-onlyAutomationPropertyLastChildPropertyread-onlyAutomationPropertyNextSiblin9Pr0perty_read-onlyAu仁omationPropertyParentPropertyread-onl^"AutomationPatternPatternread-onlyAutomationPropertyPreviousSiblingPropertyInt32DepthLogicalElementPirstChildLogicalSl柳entI>astChildL09icalElementNextSiblingLogicalEl抓抑tParentLogicalElementPreviousSibllng_表9控制模式類320還可以包括激活模式(InvokePattern)類,它表示具有與它們相關的單一、明確動作的對象。相關UI組件的實例包括按鈕;超鏈接;菜單項;單選按鈕和復選框。InvokePattern類含有自動客戶300用于操作當激活時引起單一、明確動作發生的單元的字段、屬性和方法。下表說明了根據本發明實施例的InvokePattern類。classSystem.Windows.Automation.InvokePatternFieldsread-onlyMitomationEventInvokedEventread-onlyAutomationPatternPatternVoidInvoke()表10控制模式類320還包括多視圖模式(MultipleViewPattern)類,作為用于多視圖模式單元的封裝類。多視圖模式單元是可以在一信息集的多種表示之間切換的單元。該MultipleViewPattern類含有自動客戶300用于操作具有在同一信息集多種表示之間進行切換的功能的單元的字段、屬性和方法。下表說明了根據本發明實施例的MultipleViewPattern類。_classSystem.Windows.Automation.MultipleV丄ewPatternread-onlyAutomationPropertyCurr幼tViewPropertyread-。rvlyAutomationPatternPatternread-onlyAutomationPropertySupportedViewsPropertyInt32CurrentViewInt32UGetSupportedViews()StringGetViewMarne(Int32viewID)BooleanSetVlew(Int32vjewZD>_________表1129控制模式類320還包括范圍值模式(RangeValuePattern)類,它揭示了反映控制在一個有限范圍內管理值的能力的相關屬性集。RangeValuePattern類傳送控制有效的最小和最大值及其當前值。RangeValuePattern類含有自動客戶300用以取得單元當前值和值域的字段、屬性和方法。下表說明了根據本發明實施例的RangeValuePattern類。classSystem.Windows'Automation.RangeValuePatternread-onlyAutomationPropertyMaximumPropertyread-onlyAut加ationPropertyMinimumPropertyread-onlyAutomationPatternPatternObjectMaximum_ObjectMinimum_表12控制模式類320還包括滾動模式(ScrollPattern)類,它表示可以改變它們可視區域的UI單元。ScrollPattern類包含自動客戶300用以操作能通過滾動改變其可視區域部分的單元的字段、屬性和方法。下表說明了根據本發明實施例的ScrollPattern類。classSystem.Windows-Automation.ScrollPatternread-onlyAutomationPropertyHorizcmtallyScrollablePropertyread-onlyAutoma仁ionPropertyHorizontalScrollPercentPropertyread-onlyAutomationpropertyHorizontalViewSizePropeiXyread-onlyAuto附tionPatternPatcernread-onlyAutomationPropertyVerticallyScrollablePfopertyread-onlyAutomationPropertyVerticalScrollPercentPropertyread-onlyAutomationProper仁yVerticalViewSizePropertyBooleanHorizontailyScrollableSingleHorizontalScarollPercentSingleHorizontalViewSizeBooleanverticallyScrollableSingleVerticalScrollPercentSingleVerticalViewSizeInt32NoScrollMethodsiBooleanScroll(ScrollAmounthorizontalAraount,Scro!llAmountverticalAmount》VoidScrollHorizontal(ScrollAmountamount》BooleanScrollIntoView(L09icalElem的tle,BooleanalignToTop〉VoidScrollVertical(ScrollAmountamount)Voidset—HorizontalScrollPercent(Singlevalue)Void3et二VerticalScr0llPerc的t(Singlevalue)Boolean5etScrollPercent(SinglehorizontalPercent,SingverticalPercent)___表1330控制模式類320還包括選擇模式(SelectionPattern)類,它表示管理選擇的容器。相關選擇項模式(SelectionltemPaUern)類包含自動客戶300用以操作能被選擇和取消選擇的單元的字段、屬性和方法。下表說明了根據本發明實施例的SelectionPattern類禾口SelectionltemPattern類。classSyst柳.Windows.Automation.SeiectionltemPattemread-onlyAutomationPropertyIsSelectedPropertyread-onlyAutomationPatternPatternBooleanIsSelectedMethodssBooleanPddToSelec"on()BooleanRemoveFromSelection()BooleanSelect()表14classSystem.Windows.Automation.SelectionPatternF"lds:read-only/Uitoroa"onPropertyAtLeastOneSelectionRequiredPropertyread-orUyAutomationEventEl柳entAddedToSelectionEventread-onlyAutomationEv抑tEl柳entRemovedFromSelectionEventread-onlyAutomationBventEl柳entSelectedEventread-onlyAutomationBventInvalidatedBventread-onlyftutomationPatternPatternread-onlyAutomationPattemSelectionByIDPatternread-onlyAutcwnationPropertySelectionPa:opertyread-onlyAutomationPropertySupportaMultipleSelectionPropertyPropertiesiBooleanAtLeastOneSelectionRequiredIEnumerableSelectionBooleanSupportsMuItipleSelectionBooleanAddEle肺ntToSelection(L09icalElementel)Bool時nlsSelectable(LogicalElementel)BooleanlsSelected(LogicalEle鵬ntel)BooleanRemoveElementFrofnSelection(LogicalBl柳entel>BoolsanSelectBl柳幼t(Log:lcalBle肺ntel〉_表15控制模式類320還包括分類模式(SortPattern)類。SortPattern類含有自動客戶用以操作可對其子單元分類的容器單元的字段、屬性和方法。下表說明了根據本發明實施例的SortPattern類。_classSystem.Windows.Automation,SortPatternread-cmlyAutomationPropertyDepthPropertyread-onlyAutomationPropertyKeysPropertyread-onlyAutomationPropertyMaintainsSortOrderPropertyread-onlyAutoma"onPropertyOrderPropertyread-onlyAuto加tionPatternPatternInt32Depth______._一31BooleanMaintai加SortOrderStringGetKeyName(Int32key)Int32UGetKeys()SortlnformationJGetOrder()BooleanSortISortInformationHnewOrderJ表16控制模式類320還包括值模式(ValuePattern)類,以代表表示一個值的UI單元。ValuePattern類含有客戶300用以操作具有與其相關的值的單元的字段、屬性和方法。下表說明了根據本發明實施例的ValuePattern類。classSyst柳.Windows,Automation.ValuePatternread-onlyAutomationPropertyIsReadOnlyPropertyread-onlyAutomationPatternPatternread-on〗yAutomationPropertyValueAsObjectPropertyread-onlyAutomationPropertyValueABStringPropertyPropertiessBooleanIsReadOnlyobjectValueAsObjectStringValueAsStringBooleanSetValue(Objectval)__表17控制模式類320還包括可視信息模式(VisuallnformationPattern)類,它可以用于表示傳送信息給用戶的圖像或動畫相關的信息。VisualInformationPa1:tern類含有自動客戶300用以操作具有傳送信息給用戶的圖像或動畫的單元的字段、屬性和方法。下表說明了根據本發明實施例的VisuallnformationPattern類。classSystem.Windows.Automation,F"lds:read-onlyAutomationPropertyInformationPropertyread-onlyAutomationPatternPatternPropertiessInt32Information_表18控制模式類320還包括窗口模式(WindowPattern)類,它作為窗口模式的封裝類。WindowPattern類含有自動客戶300用以操作用戶桌面上窗口的字段、屬性和方法。下表說明了根據本發明實施例的WindowPattern類。<table>tableseeoriginaldocumentpage33</column></row><table>客戶側API300還包括輔助類350。該輔助類包括表示屬性、事件和模式識別符的多個類以及使用事件機制和輸入特征的助手類。輔助類350可以包括自動標識符(Automationldentifier)類。Automationldentifier類是用于基于對象識別的識別符的基類。由于僅例示了導出類,因此,這個類有效地抽象化。輔助類350另外包括表示用于在存取系統200中識別事件的一種類型的自動事件(AutomationEvent)類。輔助類350還包括自動模式(AutoraationPattern)類,表示用于在存取系統200中識別控制模式的一種類型。輔助類350還包括自動屬性(AutomationPr叩erty)類,表示用于在存取系統200中識別屬性的一種類型。輔助類350可以進一步包括自動事件參數(AutomationEventArgs)類,表示用于事件的控制模式或定制事件參數。客戶300接收該類的實例(instance)和定制事件。AutomationEventArgs類用于將有關自動事件的信息傳送給客戶300。輔助類350還可以包括用于UI事件的自動屬性改變事件參數(AutomationPropertyChangedEventArgs)類。客戶300接收該類的實例和屬性變化事件。AutomationPropertyChangedEventArgs類用于將有關屬性變化的事件的信息傳送給客戶300。輔助類350還可以包括邏輯結構變化事件參數類。用于UI事件的LogicalStructureChangedEventArgs類為客戶300提供該類的實例以及邏輯樹變化的事件。LogicalStructureChangedEventArgs類用于將有關邏輯結構變化的信息傳送給客戶300。輔助類350還可以包括頂層窗口事件參數(TopLevelWindowEventArgs)類,用于與UI事件一起使用為客戶300提供具有定制事件的該類的實例。TopLevelWindowEventArgs類用于將有關頂層窗口事件的信息傳送給客戶300。頂層窗口是父節點為桌面的窗口。術語"已開啟(叩ened)"的使用表示新的頂層窗口出現在用戶面前。術語"已關閉(closed)"的使用表示頂層窗口已經撤消。輔助類350還可以包括樹加載事件參數(TreeLoadEventArgs)類。該TreeLoadEventArgs類是用于UI事件的定制事件參數類。客戶300可接收該類的實例和樹加載事件。TreeLoadEventArgs用于將有樹加載事件的信息傳送給客戶300。輔助類350還可以包括Vkey類,它為輸入相關的方法提供了常量。輔助類350還可以包括NoClickablePointExc印tion。當在可點擊點的邏輯單元中出現錯誤時就產生該異常。當界定矩形為空,沒有寬或高,或該點的邏輯單元已變化就會發生錯誤。輔助類350還可以包括執行幾個類以接收事件通知。聚焦變化事件參數(FocusChangedEventArgs)用于將有關聚焦變化事件的信息傳送給客戶。如圖9所示,提供者側API440包括提供者自動類442、提供者自動接口448和提供者原始單元接口450。提供者側API440還包括控制模式提供者接口460和輔助類480。輔助類480可以與輔助類350共享使用和通信信息,例如屬性識別符、事件識別符、模式識別符和基本類型(如表示矩形或點)的類的類型。其它特征可以是對提供者輔助類480獨有,或對客戶輔助類350所獨有的。例如,Vkey類就僅存在于客戶輔助類350中。提供者自動類442最好包括自動互用性提供者(AutomationlnteropProvider)類502,如圖10所示。Automationlnter叩Provider類502可以包括具有Win32或第三方自動執行的存取系統200所使用的方法。AutomationlnteropProvider類502含有Win32或第三方UI自動提供者側執行所使用的屬性和方法。下表說明了根據本發明實施例的AutomationlnteropProvider類502。sealedclassSystem.Windows.Automation.InteropProvider.AutomationlnteropProviderPropertiesiBooleanClientsAreListeningInt32InvalidateljimitZnt32RootObjectIDMethods:IRawBlementProviderBaseRawElementProviderFromHandle(IntPtrhwnd)LogicaJLElementLogicalElementFromLocalProvider(IRawElementProvlderlocalln)lVoidRaiseAutomationEvent《AutomationEventeventId,IRawElementProviderelement,AutomationEventArgse)VoidRaiseAutomationPropertyChangedEvent(IRawElementProviderelement,AutomationPropertyChangedEventArgse)VoidRaiseF0cusChan3edBvent(IRawElementProviderelement,PocusChangedEventArgse〉VoidRaiseLogicalStructureChan訴dEvent(IRaWElementProviderelement,LogicalStructureChangedBventArgse>IRawElementProviderRawElementProviderFromHaJidle(IntPtrhwnd)IntPtrReturnRawEl柳entProvider(3ntPtrhwnd,IntPtrwPar柳,2ntPtrlPar柳,IRawE1柳entProviderel)___■表20自動提供者(AutomationProvider)類500是含有具有窗口客戶平臺(WindowsClientPlatform)的存取系統200所使用的方法的相似類(similarclass)。提供者側API440還包括提供者自動接口448。提供者自動接口448可以包括自動屬性互用性提供者(IAutomationPropertylnteropProvider)接口447,由Win32或第三方執行以揭示存取系統200默認揭示的屬性上的附加屬性。提供者自動接口448還可以包括自動屬性提供者(IAutomationPropertyProvider)接口449。該接口449類似于接口447,但可以由本機窗口客戶平臺提供者執行以揭示除存取系統200默認揭示的那些屬性之外的屬性。提供者原始單元接口450可以包括原始單元提供者35(IRawElementProvider)接口456。IRawElementProvider接口456定義了方法,所述方法包括由本機窗口客戶平臺、Win32或第三方提供者執行并由存取系統200調用以返回相關單元,例如第一子節點、最后子節點、下一繼承者和父節點,和返回特定或所有本機和UI自動屬性。IRawElementProvider接口456進一步為控制模式返回提供者對象。IRawElementProvider接口456由存取系統200執行,并與特定單元相關的功能的提供者進行互動。在下表中提供了一種IRawElementProvider接口456實施例的實例。interfaceSystem.Windows.AutomationInteropProvider.IRawElementProviderProperties:IRawEl柳entProviderBaseRawEle肺ntProviderRectBoundingRectangle工RawElementContextProviderContextStringDebugStringMethods:BooleanCoropareNativeELe膽ntIObjectnativeEle職nt)BooleanGetfirstChUd(IRawElementProvide"retBooleanGetLastChild(IRawElementProvider^ret〉VoidGetWativeProperties(GetNativePropertiesOptionsoptions,StringI)Stnames.Objectj&values.StringJfcvalueStrings)ObjectGetHativePropertyValue(Stringname)StringGetNativePropertyValueAsString(Stringname)BooleanGetNextSibling(IRawEleroentProviderfi;ret)BooleanGetParent(IRawElem的tProviderfitret)Object;GetPatternProvider(Automationpatterniid)BooleanGetPreviousSibling(IRawEl抓entProvide"ret)__ObjectGetPropertyValue(AutomationPropertyidProp〉Imt32tGetRuntimeID(}_AutomationPropertyIGetSupportedProperties()_TABLE21表21附加提供者原始單元接口450可以包括原始單元上下文互用性提供者(IRawElementContextlnteropProvider)接口452。該接口452可以由Win32或第三方提供者執行。該接口452用于管理與任何特定單元無關的事件和其它功能。而附加原始單元接口450可以包括原始單元上下文提供者(IRawElementContextProvider)接口458,并可由本機窗口客戶平臺提供者執行,并用于管理與任何特定單元無關的事件和其它功能。一個IRawElementContextProvider接口458的實施例在下表中示出。interface$ystem-Windows.Mitomation,InteropPa:ovider.IRawElementContextProviderProperties-IRawElementProviderRootElementProviderMethods-BooleanAdLviseEventAdde(3《AutomationEventeventld,AutomationProperty"properties)VoidAdviseEventRemoved(AutomationEventeventld,AutomaticmPropertylproperties)1RawEl柳entProviderElementProviderFromNative(ObjectnativeElement)IRawEl柳entProviderEleroentProviderFromPoint(Int32x,Booleanfcdone)iRawElementContextProviderUGetEmbeddedContexts(IRawElemen仁ProvidefrawElStartingPoint)_IRawEl柳entProviderGetFocus(Boolean^done》__BooleanSetFocua(IRawEl柳entProviderel)_表22提供者側API440可以包括控制模式提供者接口460。每個控制模式具有提供者接口460,由將控制模式揭示給存取系統200的對象執行。例如,應用程序窗口提供者(IApplicationWindowProvider)接口揭示了與應用程序頂層窗口相關的狀態和信息。下述的控制模式提供者接口460包括可以由基于HWND和第三方提供者執行的互用性提供者(Inter叩Provider)接口。控制模式提供者接口460還可以包括可以由窗口客戶平臺提供者機內執行的提供者接口。控制模式提供者接口460還可以包括應用程序窗口提供者(IApplicationWindowProvider)接口。該IApplicationWindowProvider或IApplicationWindowInteropProvider接口可以揭示通常與頂層應用程序窗口關聯的狀態和信息。該接口通常可以由提供者執行以揭示操作應用程序主窗口的功能。控制模式提供者接口460還可以包括展開和收縮提供者(IExpandColl叩seProvider)接口或IExpandCollapselnteropProvider接口。該接口揭示了能展開以顯示更多內容或收縮以隱藏內容的控制能力。該IExpandCollapseProvider接口可以結合Hierarchyltera模式(下面將描述)得到支持提供類似樹的狀態,但它對于單獨的開啟和關閉控制還是相關的。諸如工具欄、組合框和菜單的UI單元可包括有關的執行。控制模式提供者接口460還可以包括網格提供者(IGridProvider)接口或工GridlnteropProvider接口。該IGridProvider接口揭示了基本網格功能,包括網格大小和特定單元格的信息運動。網格項提供者(IGridltemProvider)或IGridltemlnteropProvider可以提供附加的控制模式提供者接口460。IGridltemProvider接口表示在網格中的項。該接口可以僅包括屬性,而不包含方法。IGridltemProvider或IGridltemlnter叩Provider接口由提供者執行以對操作揭示網格中單元格功能的控制的功能進行揭示。控制模式提供者接口460還可以包括層次項提供者(IHierarxhyltemProvider)或IHierarchyltemlnteropProvider接口。客戶300獨立于UI單元在邏輯樹222中的關系來遍歷它們之間的層次關系。層次關系定義為非圓形(noncircular)的。執行該接口的UI單元包括菜單和列表視圖控制。附加控制模式提供者接口460可以包括激活提供者(IInvokeProvider)或IInvokeInteropProvider接口。該激活提供者接口可以由與項具有單一、明確關系的動作的對象來執行。這些對象通常是無狀態的(stateless),激活它們不會對它們自身的狀態發生變化,但會在應用程序的更大上下文范圍中引起變化。執行IInvokeProvider接口的UI單元包括按鈕和超鏈接菜單項。多視圖提供者(IMultipleViewProvider或IMultipleViewInter叩Provider)接口提供附加控制模式接口460。該多視圖提供者接口可以揭示在同一信息、數據或子節點集中多種表示之間切換的單元能力。該模式應該在控制當前內容視圖的容器上執行。控制模式提供者接口460可以包括范圍值提供者(IRangeValueProvider)或(IRangeValuelnteropProvider)接口。范圍值提供者接口揭示了反映管理有限范圍內值的一控制的能力的相關屬性集。接口將傳送一控制的有效最小和最大值及其當前值。執行該接口的UI單元包括在進程欄和滾動條上的數字旋轉器(numericspinner)。滾動提供者(IScrollProvider或IScrollInteropProvider)接口可以作為附加控制模式提供者接口460提供。接口揭示了通過滾動其內容改變其可視區域部分的一控制的能力,該區域對用戶是可見的。該接口表示了滾動其內容,例如列表框、樹視圖或其它保持內容區域大于控制的可視區域的容器的UI單施例。interfaceSyst柳.Windows.AutomationInteropProvider,IScrollInteropProviderBooleanScroll(ScrollAroountverticalftmount)BooleanScroll2ntoView(IRawElementPtoviderre.Booleanstart〉BooleanSetScrollPercent(SinglehorizcmtaJPercent,SingleverticalPercent)_表23附加控制模式提供者接口460包括由標識選擇的提供者(ISelectionByIDProvider或ISelectionByIDInteropProvider)接口。該接口表示為容器單元提供在其所含有的項之間進行選擇。標識選擇提供者接口是用于不具有邏輯單元子節點的控制的提供者側接口。客戶將把該方法看作如同該控制具有作為子節點的邏輯單元的方法一樣。執行該接口以幫助提供者揭示操作可選擇和未經選擇容器中單元的功能。該接口實施例在下表中示出。interfaceSyBt柳,Windows.Automation.InteropProvider.ISelectionBylDInteropProviderBooleanAddSelect丄onIDToSelection<Int32selectionID)StringGetSelectionIDName(Int32selectionID)IntJGetSupportedSelec"onsIDa()BooleanIsSelected(Int32selectioniD)BooleanRemoveSelectionIDFroraSelection(Int32selectionID)_BooleanSelectElementBySelec"onID(Int32selectioiUD1_表24控制模式提供者接口460還可以包括選擇提供者(ISelectionProvider或ISelectionlnteropProvider)接口。該選擇提供者接口表示管理選擇的容器,并且由提供者執行以揭示操作含有可選擇單元的單元的功能。該接口的實施例在下表中示出。interfaceSystem.Windows.Automation,interopprovider,ISelectionlnteropProviderBooleanAtLeastOneSe1ecticmRequiredIEnumeratorSelectionBooleanSupportsMultipleSelectionBooleanAddElementToSelection(IRawElementProviderel)BooleanIsSelectable(IRawElementProviderel}BooleanIsSelected(IRawElementProviderel)BooleanRemoveElementFromSelection(IRawElementProviderel)BooleanSelectElement(IRawElementProviderel>_________表25控制模式提供者接口460另外包括選擇項提供者(ISelectionltemProvider或ISelectionltemlnteropProvider)接口。該接口定義了可選擇的項,并揭示了功能,因此,它可以被選擇或不被選擇。控制模式提供者接口460還可以包括分類提供者(ISortProvider或ISortlnter叩Provider)接口。該接口揭示容器當前分類次序,并允許客戶可編程地重新分類其單元。值提供者(IValueProvider或IValuelnteropProvider)接口可以由控制模式提供者接口460執行以表示和操作具有相關值的單元。可視信息提供者(IVisualInformationProvider或IVisualInformationlnteropProvider)接口可以包含在控制模式提供者接口460中以揭示有關傳送信息給用戶的圖像或動畫的信息。窗口提供者(IWindowProvider或IWindowInteropProvider)接口還可以包括在控制模式提供者接口460中以揭示改變單元在屏幕位置或大小以及改變可視狀態并關閉它的一單元的能力。下表示出該接口的實例。interfaceSyst柳.Windows.Automation.InteropProvider.lWindowInteropProviderVoidClose()BooleanMoveTo(Int32x,Int32y)BooleanResize(Int32width,Int32heighc)BooleanSetVisualState(WicidowVisualStatestate)表26提供者側API440還可以包括輔助類480。該輔助類480基本等同于在客戶側API305中的類。如上所述,客戶和提供者可以共享輔助類。結合圖10進一步描述該特征。圖10示出客戶側API305、存取系統核心200和服務器側API440之間的互動。該客戶應用程序300執行自動類312、邏輯單元類314、原始單元類316或控制模式類320以通過存取系統核心201獲得信息。客戶應用程序300還執行客戶輔助類350和輸入類340。圖10說明結合使用Win32Run12的執行A(10)和使用WCPRun的執行B(20)的提供者側API440。執行A按需使用自動互用性提供者接口502、原始單元提供者接口456、原始單元上下文互用性提供者接口452以及控制模式接口460。執行B按請求使用自動提供者接口500、原始單元提供者接口456、自動屬性提供者接口448、原始單元上下文提供者接口458和控制模式接口460。執行IO和20都使用提供者輔助類480。如上所述,提供者輔助類基本與客戶輔助類350相同,或可以與客戶輔助類350共享一些類型,如共享輔助類510所示。如上所述,共享輔助類510可以包括客戶和提供者對傳送信息,例如屬性標識符、模式標識符和事件標識符的類型進行共享。在操作中,客戶側API305允許客戶300取得邏輯樹。功能包括1)從點到點的邏輯單元;2)來自事件的邏輯單元;3)當前聚焦的邏輯單元。如上所述,邏輯單元表示UI組件,可能是一控制、控制的一部分、或一容器或邏輯分組(即對話、窗格或框架)。控制可以根據其功能顯著變化。因此,不同的接口用于表示與特定控制類型關聯的功能。然而,這些特定控制接口是從表示對所有控制都公用的功能的公用基本接口中獲得。公用基本接口含有核心類310,它包括1)用于瀏覽邏輯樹222的方法;2)取得屬性值的通用方法;3)訪問所支持特定控制接口的方法。在瀏覽邏輯樹222中,每個基礎應用程序UI技術將為瀏覽提供其自身的技術。為開始使用應用程序中的存取系統,客戶300可以做下列事之一1)使用來自自動類312的"AddTopLevelWindowEventHandler"方法以揭示事件中在桌面上或句柄中出現的新UI,登記其它事件,并由此從任意進程接收事件;2)從自動類312中使用一種"査找"方法以定位感興趣的UI和把特定UI段作為目標;3)使用自動類312中一些其它的方法以揭示感興趣的UI,例如查找窗口句柄或屏幕上某點,并使用該句柄或點,獲得作為監聽事件參照使用的邏輯單元;或4)使用自動類312中的"AddFocusChangedEventHandler"以追蹤輸入聚焦并在當前聚焦的UI上登記事件。客戶側API305和服務器側API440用于滿足客戶300的需要。下述實例用于說明客戶如何使用客戶側API305和隨后如何激活服務器側API440以向客戶300提供用戶接口信息。頂層窗口事件包括與菜單和組合框落下或任何將桌面作為父節點的特征相關的事件。在本發明的實施例中,AddTopLevelWindowEventHandler方法用于接收開啟和關閉頂層窗口的通知。調用AddTopLevelWindowEventHandler將獲得在當前桌面上新頂層窗口開啟或頂層窗口關閉的通知。RemoveTopLevelWindowEventHandler方法提供了一種機制以停止接收在桌面上頂層窗口開啟或關閉的通知。該方法使用調回(callback)對象以識別該聽眾。因此,至URemoveTopLevelWindowEventHandler方法的對象與至UAddTopLevelWindowEventHandler的對象相同。對于每個新打開的頂層窗口從提供者側API440調用一方法。同樣,一旦當頂層窗口關閉,存取系統200可以調用一方法。為了接收這些通知,客戶300調用AddTopLevelWindowEventHandler方法。另一類型的事件是聚焦事件。客戶300經常請求一種追蹤聚焦的方法。在微軟窗口0S中,這是很難實現的。例如,當下拉菜單(例如在微軟的Word中的文件菜單),在用戶沿每個項向下移動光標時,菜單中的項就獲得聚焦。當該菜單關閉(例如用戶按下ESC鍵),就不會發送聚焦事件。實際上,對聚焦變化感興趣的客戶必須監聽大量事件,并找出這些事件中哪些事件邏輯上表示聚焦變化。在本發明的一個實施例中,自動類312中的AddFocusChangedEventHandler方法可以用于告知監聽者聚焦變化事件。客戶300可以規定隨同該方法或其它事件登記方法返回一組屬性。客戶300調用RemoveFocusChangedEventHandler方法以停止接收聚焦變化的通知。該方法使用調回對象來識別該監聽者,并且在此情況下,給RemoveFocusChangedEventHandler方法中的對象禾口給AddFocusChangedEventHandler過程中的對象相同。當聚焦變化時,為了告知客戶300,存取系統200將從提供者側自動類442中調用例如RaiseFocusChangedEvent的方法。屬性變化事件是在當邏輯單元的屬性發生變化時被激活。在本發明的實施例中,客戶300從自動類312中調用AddPropertyChangedEventHandler方法以接收屬性變化的通知。當在AddPr叩ertyChangedEventHandler所規定的邏輯單元樹中的一個邏輯單元上的屬性值發生變化,存取系統200就從提供者側API440中激活提供者側方法。一個范圍參數指示事件應該針對哪些單元被激活。例如,傳遞窗口的根邏輯單元和對后代的請求限制了對該窗口的屬性變化調回。如果范圍參數設定為樹中的所有單元,那就忽略所述范圍,并將把桌面上出現的任何特定屬性變化都發送。客戶300可以多次調用具有不同屬性集和/或不同調回對象的AddPr叩ertyChangedEventHandler。存取系統200提供的通知指示了所改變的屬性;新屬性值;以及如果可提供的話還包括舊屬性值。客戶300將調用RemovePropertyChangedEvenHandler方法來停止接收屬性變化的通知。該方法可以使用范圍單元和調回對象來識別該監聽者,并且在這種情況下,傳送的對象必須與傳送給AddPropertyChangedEventHandler的對象相同。提供者自動類442包括RaiseAutomationPropertyChangedEvent方法以告知客戶300自動屬性的變化。客戶自動類312中的AddAutomationEventHandler方法可以使客戶300接收控制事件。范圍參數可用于指示事件應該針對哪些單元被激活。例如,傳遞窗口的根邏輯單元和對后代的請求將限制該窗口的事件。如果需要樹中的所有單元,那就將把桌面上的所有事件都發送。RemoveAutomationEventHandler方法可以用于停止接收控制的事件。該方法可以使用范圍單元、調回對象和事件識別符以識別監聽者。在這種情況下,傳送的對象必須與傳送給AddAutomationEventHandler方法的對象相同。提供者自動類442包括RaiseAutomationEvent方法以告知客戶300事件。當客戶應用程序300激活AddAutomationEventHandler方法,而特定控制事件也被激活且該事件源是AddAutomationEventHandler中規定的邏輯單元樹中的一個邏輯單元時,存取系統200就從提供者側API440調用方法。當控制事件被激活,通常就有特定事件的信息可用。可以調用RemoveAllEventHandlers方法來停止接收任何事件。這是一種在客戶應用程序關閉之前進行清空的快速方法。當終止應用程序時,最好使用該撤消方法。當邏輯單元樹結構變化時,就激活邏輯結構變化事件。執行AddLogicalStructureChangedEventHandler方法以接收在邏輯單元樹中結構變化的通知。當邏輯單元被加入、撤消或無效,就調用特定調回對象上的方法。可以調用RemoveLogicalStructureChangedEventHandler方法以停止接收邏輯單元樹變化的事件。該方法可以使用調回對象和范圍單元以識別監聽者。在這43種情況下,傳送的對象必須與傳送給AddLogicalStructureChangedEventHandler的對象相同。提供者自動類442包括RaiseLogicalStructureChangedEvent方法以告知客戶300邏輯結構的變化。UI自動服務器或提供者側API440包括服務器或基礎UI引擎可以調用的方法以完成屬性變化通知。當UI變化時,服務器400可以調用這些通知方法以產生合適的參數。本發明已經結合特定實施例進行了描述,其目的是為了說明而不是進行限制。在不背離本發明的范圍時,其它實施例對于本領域的熟練技術人員來說都是顯而易見的。如上所述,可以看出本發明能夠實現上述所有目標,并且該系統和方法具有其他顯而易見和固有的優點。可以理解某些特征及其子集合是有用的,并無需參照其他特征及子集合使用。這也在該權利要的范圍中。權利要求1.一種在為客戶提供用戶接口信息的存取系統中執行的提供者側工具系統,該存取系統包括一種從提供者側向客戶傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述提供者側工具包括提供者側自動類,包括為客戶提供事件通知的工具;提供者側自動接口,用于揭示用戶接口屬性;原始單元接口,用于返回與特定相關單元有關的信息;以及原始單元上下文接口,用于管理與特定單元無關的事件和功能。2.如權利要求l所述的系統,其特征在于,提供者側自動類包括產生自動事件的工具。3.如權利要求l所述的系統,其特征在于,提供者側自動類包括產生屬性改變事件的工具。4.如權利要求l所述的系統,其特征在于,提供者側自動類包括產生聚焦改變事件的工具。5.如權利要求l所述的系統,其特征在于,提供者側自動類包括產生邏輯結構改變事件的工具。6.如權利要求l所述的系統,其特征在于,進一步包括控制模式提供者接□。7.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括應用程序窗口提供者接口,用于揭示與頂層應用程序窗口相關的狀態和信息。8.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括展開和收縮接口,用于隱藏和顯示內容。9.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括網格提供者接口,用于揭示基本網格功能。10.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括層次項提供者接口,用于允許客戶在用戶接口單元之間遍歷層次關系。11.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括激活提供者接口,供執行單一動作的對象使用。12.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括多視圖提供者接口,用于揭示對象在多個表示之間進行切換的能力。13.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括范圍值提供者接口,用于揭示能夠管理有限值域的一組屬性的能力。14.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括滾動提供者接口,用于揭示改變可視區域的能力。15.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括由標識選擇提供者接口,用于揭示在項之間提供選擇的單元。16.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括選擇提供者接口,用于表示管理選擇的容器。17.如權利要求6所述的系統,其特征在于,所述控制模式提供者接口包括窗口提供者接口,用于揭示改變大小和位置的能力。18.—種用于通過存取系統將用戶接口信息提供給客戶的應用程序接口系統,所述存取系統包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述應用程序接口系統包括客戶側應用程序接口,用于輔助客戶獲得用戶接口信息,其中所述客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類以及輸入類;以及提供者側應用程序接口,以響應客戶請求,所述提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口以及控制模式提供者接口。19.如權利要求18所述的系統,其特征在于,進一步包括由提供者側和客戶側使用的輔助類。20.—種用于通過存取系統將用戶接口信息提供給客戶的計算機執行的方法,所述存取系統包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述方法包括提供客戶側應用程序接口,用于輔助客戶獲得用戶接口信息,其中所述客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類以及輸入類;以及提供提供者側應用程序接口,以響應客戶請求,所述提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口以及控制模式提供者接口。21.如權利要求20所述的方法,其特征在于,進一步包括提供給提供者側和客戶側使用的輔助類。22.—種用于通過存取系統將用戶接口信息提供給客戶的計算機執行的方法,所述存取系統包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述方法包括使用從客戶自動類中所選擇的事件句柄來請求用戶接口信息;使用對應的激活事件方法來激活提供者自動類以提供用戶接口事件通知。23.如權利要求22所述的方法,其特征在于,進一步包括使用邏輯單元工具來獲得用戶接口單元信息。24.如權利要求22所述的方法,其特征在于,進一步包括使用客戶側原始單元工具來獲得有關原始單元樹中單元的原始單元信息。25.如權利要求22所述的方法,其特征在于,進一步包括使用客戶側輸入類以提供模擬輸入的方法。26.如權利要求25所述的方法,其特征在于,進一步包括模擬鼠標輸入和鍵盤輸入。27.如權利要求22所述的方法,其特征在于,進一步包括使用客戶側控制模式類以允許客戶與存取系統控制模式進行互動。28.如權利要求22所述的方法,其特征在于,進一步包括執行輔助工具以執行附加功能。29.如權利要求22所述的方法,其特征在于,進一步包括使用提供者側自動接口以揭示附加屬性。30.如權利要求22所述的方法,其特征在于,包括執行提供者原始單元接口,以從原始單元樹返回相關單元。31.如權利要求22所述的方法,其特征在于,進一步包括執行控制模式提供者接口,以揭示與定義的控制模式相關的狀態和信息。全文摘要描述了一種為客戶提供用戶接口信息的方法和系統。該方法和系統執行一組應用程序接口,以通過存取系統將用戶接口信息提供給客戶。存取系統包括一種從提供者側向客戶側傳送用戶接口信息的機制,以及有選擇地揭示用戶接口信息的邏輯樹,所述應用程序接口系統包括客戶側應用程序接口,用于輔助客戶獲得用戶接口信息。所述客戶側應用程序接口包括自動類、邏輯單元類、原始單元類、控制模式類以及輸入類。提供者側應用程序接口包括提供者自動類、提供者自動接口、原始單元接口以及控制模式提供者接口。文檔編號H04N5/00GK101615122SQ20091016052公開日2009年12月30日申請日期2003年5月17日優先權日2003年5月16日發明者B·麥克科恩,H·S·博恩斯,M·A·弗里德曼,P·J·里德,P·M·瓦格納,R·辛克萊申請人:微軟公司
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品