国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      通過(guò)存取系統(tǒng)將用戶接口信息提供給客戶的系統(tǒng)和方法

      文檔序號(hào):7710788閱讀:369來(lái)源:國(guó)知局

      專利名稱::通過(guò)存取系統(tǒng)將用戶接口信息提供給客戶的系統(tǒng)和方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及輔助技術(shù)(assistivetechnology)、自動(dòng)化測(cè)試和其它產(chǎn)品領(lǐng)域,所述產(chǎn)品對(duì)用戶接口信息以及具有用戶接口信息的這些產(chǎn)品的交互作用進(jìn)行收集。
      背景技術(shù)
      :輔助技術(shù)(AT)的產(chǎn)品是用于為在學(xué)習(xí)、交流和訪問(wèn)計(jì)算機(jī)軟件所含有和表達(dá)的信息這些方面需要輔助的計(jì)算機(jī)用戶提供幫助。這些產(chǎn)品需要與計(jì)算機(jī)接口相關(guān)的信息。同樣,現(xiàn)有的自動(dòng)化測(cè)試產(chǎn)品和用戶接口命令輔助程序也需要有關(guān)用戶接口的信息。當(dāng)前,這些產(chǎn)品并不具有足夠的用戶接口(UI)信息源。上述3種類型的產(chǎn)品(客戶)需要得到其它方面的必要支持以實(shí)現(xiàn)(1)收集有關(guān)應(yīng)用程序用戶接口的信息;(2)無(wú)論采用什么技術(shù)創(chuàng)建UI,都能可編程地揭示和詢問(wèn)UI單元;(3)產(chǎn)生鍵盤和指針輸入;以及(4)了解哪種類型的狀態(tài)或功能當(dāng)前有效。目前,還沒(méi)有哪種單一技術(shù)可以為某一AT產(chǎn)品提供所有這些能力。而且,當(dāng)前的AT產(chǎn)品并不都是與所有的圖形操作系統(tǒng)(OS)技術(shù)完全兼容,并且缺乏以集中方式過(guò)濾和調(diào)整冗余或誤導(dǎo)通知的能力。而另一缺陷在于現(xiàn)有的自動(dòng)和存取基本架構(gòu)缺乏可擴(kuò)展性,并且因此需要改變OS層以添加新功能。而且,目前,為收集有關(guān)應(yīng)用程序用戶接口的信息,AT產(chǎn)品必須寫入應(yīng)用程序定制代碼以便為用戶獲得信息。而寫入這些應(yīng)用程序定制代碼的處理是費(fèi)時(shí)并需要不斷維護(hù)。當(dāng)前的自動(dòng)基礎(chǔ)架構(gòu)也缺乏以相容方式過(guò)濾和調(diào)整冗余或誤導(dǎo)事件通知的能力。這樣,事件的消費(fèi)者就需要獨(dú)立地過(guò)濾信息。當(dāng)前的系統(tǒng)允許將AT產(chǎn)品以3級(jí)顆粒度(granularity)級(jí)別請(qǐng)求事件通知5(1)桌面上的一切;(2)在特定的進(jìn)程中(例如打開字處理程序);或3)在特定進(jìn)程中的線程(進(jìn)程中的多對(duì)象操作)。目前,當(dāng)客戶接收一個(gè)事件,它就對(duì)產(chǎn)生了該事件的特定窗口的窗口句柄和指示哪里產(chǎn)生事件的其它信息位進(jìn)行接收??蛻糇龀鼋徊嫣幚碚{(diào)用以檢索與該事件相關(guān)的UI對(duì)象。利用該對(duì)象,客戶可以做出附加交叉處理調(diào)用以請(qǐng)求有關(guān)該對(duì)象的信息。如果客戶需要五段信息,那么,客戶就必須做出5次交叉處理調(diào)用。交叉處理調(diào)用是非常緩慢的,因此,使用當(dāng)前存取基礎(chǔ)架構(gòu)收集UI信息的執(zhí)行成本是很高的。這種類型的己知情況在圖11中示出。服務(wù)器應(yīng)用程序12激活事件6。核心程序14判定必須通知哪些客戶,并向感興趣的客戶10發(fā)送事件通知18??蛻?0經(jīng)過(guò)處理邊界2向服務(wù)器應(yīng)用程序12發(fā)出對(duì)有關(guān)事件通知18的對(duì)象的請(qǐng)求16。服務(wù)器應(yīng)用程序12返回對(duì)象20,并且隨后,客戶10可以開始發(fā)送對(duì)與激活事件的UI控制相關(guān)信息的請(qǐng)求16。服務(wù)器應(yīng)用程序12經(jīng)過(guò)處理邊界2將所請(qǐng)求的信息20返回給客戶10。另一種選擇是將客戶代碼作為進(jìn)程中的動(dòng)態(tài)鏈接庫(kù)(.DDL)進(jìn)行加載。這種選擇具有一些缺陷。首先,它需要系統(tǒng)協(xié)助將客戶代碼加載到進(jìn)程中。其次,由于一旦將客戶代碼加載到應(yīng)用程序的進(jìn)程中,就很難對(duì)其收集的信息進(jìn)行限制,因此,它會(huì)產(chǎn)生安全問(wèn)題。再次,對(duì)于客戶來(lái)說(shuō)為了使其成為有效的技術(shù),就必須將其加載到系統(tǒng)上運(yùn)行的每個(gè)進(jìn)程中。比較理想的做法是僅將可信任的客戶加載到另一應(yīng)用程序進(jìn)程中。而且,需要系統(tǒng)能夠給予客戶對(duì)其想要接收的事件通知進(jìn)行規(guī)定的能力。在己知的系統(tǒng)中,客戶可能需要做出大量交叉處理調(diào)用,并隨后分析信息以判定它是否對(duì)該事件感興趣。需要一種機(jī)制能夠以更加有效的方式執(zhí)行對(duì)該事件的過(guò)濾,并能很容易地進(jìn)行升級(jí)以支持新的系統(tǒng)或應(yīng)用程序事件。而且,需要一種僅使用可信任成份的系統(tǒng),以緩解安全問(wèn)題。目前,當(dāng)查詢有關(guān)用戶接口的信息時(shí),要求AT產(chǎn)品對(duì)樹進(jìn)行訪問(wèn),該樹是特定UI框架的本身結(jié)構(gòu)。因此,對(duì)于多個(gè)UI框架就需要多個(gè)樹來(lái)傳送用戶接口信息。這些不同的樹可能含有不感興趣的信息或?qū)τ脩舨豢梢?,例如隱藏的容器對(duì)象,它對(duì)最終用戶控制的可視UI控制進(jìn)行管理。因此,就需要一種僅具有用戶感興趣的節(jié)點(diǎn)的單一標(biāo)準(zhǔn)的樹。需要一種解決方案來(lái)解決對(duì)AT產(chǎn)品、自動(dòng)測(cè)試工具和命令輔助程序的需求。這種解決方案可以由所有的圖形OS技術(shù)使用,并能允許對(duì)所有形式的UI和UI組件的存取訪問(wèn)。
      發(fā)明內(nèi)容本發(fā)明針對(duì)一種為客戶提供用戶接口信息的方法和計(jì)算機(jī)應(yīng)用程序。在本發(fā)明的一個(gè)方面,提供了一種在為客戶提供用戶接口信息的存取系統(tǒng)中使用的工具系統(tǒng)。該存取系統(tǒng)包括客戶側(cè)和提供者側(cè)。該工具系統(tǒng)包括客戶側(cè)自動(dòng)工具,包括査詢用戶接口信息的客戶自動(dòng)類。該客戶自動(dòng)類包括事件登記工具和邏輯單元揭示工具。這組工具還包括提供者側(cè)自動(dòng)工具,以便為客戶提供用戶接口信息。提供者側(cè)自動(dòng)工具包括自動(dòng)提供者類,具有為客戶提供事件信息的工具。在另一方面,客戶側(cè)工具組包括客戶側(cè)自動(dòng)機(jī)制和客戶側(cè)邏輯單元機(jī)制,客戶側(cè)自動(dòng)機(jī)制包含從提供者側(cè)查詢用戶接口事件信息,而客戶側(cè)邏輯單元機(jī)制包括表示在邏輯樹中用戶接口單元的邏輯單元類。在另一方面,提供者工具包括提供者側(cè)自動(dòng)類和提供者側(cè)自動(dòng)接口,提供者側(cè)自動(dòng)類包括用于向客戶提供事件通知的工具,而提供者側(cè)自動(dòng)接口用于揭示用戶接口屬性。提供者側(cè)工具進(jìn)一步包括原始單元接口,用于返回有關(guān)特定相關(guān)單元的信息;以及原始單元上下文(context)接口,用于管理與特定事件無(wú)關(guān)的事件和功能。在另一方面,本發(fā)明包括應(yīng)用程序接口系統(tǒng),用于通過(guò)存取系統(tǒng)向客戶提供用戶接口信息。該存取系統(tǒng)包括將用戶接口信息從提供者側(cè)傳送到客戶側(cè)的一種機(jī)制,以及有選擇性地揭示用戶接口信息的邏輯樹。應(yīng)用程序接口系統(tǒng)包括用于幫助客戶獲得用戶接口信息的客戶側(cè)應(yīng)用程序接口??蛻魝?cè)應(yīng)用程序接口包括自動(dòng)類、邏輯單元類、原始單元類、控制模式類和輸入類。提供者側(cè)應(yīng)用程序接口包括提供者自動(dòng)類、提供者自動(dòng)接口、原始單元接口和控制模式提供者接口。在另一個(gè)方面,本發(fā)明包括一種計(jì)算機(jī)可執(zhí)行方法,用于通過(guò)存取系統(tǒng)向客戶提供用戶接口信息。該方法包括用于幫助客戶獲得用戶接口信息的客戶側(cè)應(yīng)用程序接口,其中客戶側(cè)應(yīng)用程序接口包括自動(dòng)類、邏輯單元類、原始單元類、控制模式類和輸入類。該方法還包括提供提供者側(cè)應(yīng)用程序接口以響應(yīng)客戶請(qǐng)求,該提供者側(cè)應(yīng)用程序接口包括提供者自動(dòng)類、提供者自動(dòng)接口、原始單元接口和控制模式提供者接口。在另一方面,本發(fā)明包括一種計(jì)算機(jī)可執(zhí)行方法,用于通過(guò)存取系統(tǒng)向客戶提供用戶接口信息。該方法包括使用從客戶自動(dòng)類中選擇的事件句柄請(qǐng)求用戶接口信息,以及包括一種使用相應(yīng)的引發(fā)事件方法來(lái)為提供者提供用戶接口事件通知的方法。對(duì)于本領(lǐng)域的熟練技術(shù)人員來(lái)說(shuō),本發(fā)明的其它優(yōu)點(diǎn)和新穎特征將通過(guò)下面的描述變得更加顯而易見,或可以從本發(fā)明的實(shí)施中了解。本發(fā)明將結(jié)合下述附圖進(jìn)行詳細(xì)描述。圖1是適用于實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)環(huán)境框圖;圖2是在存取系統(tǒng)、客戶環(huán)境和服務(wù)器環(huán)境之間的互動(dòng)框圖;圖3是說(shuō)明存取系統(tǒng)核心的組件框圖;圖4(A)-4(D)是說(shuō)明從本機(jī)單元(nativeelement)創(chuàng)建邏輯樹;圖5是示出創(chuàng)建邏輯樹的過(guò)程次序的流程圖;圖6示出形成邏輯單元的對(duì)話框和其組件;圖7是說(shuō)明涉及激活本發(fā)明事件機(jī)制過(guò)程的流程圖;圖8是說(shuō)明本發(fā)明實(shí)施例中客戶側(cè)API的框圖;圖9是說(shuō)明本發(fā)明實(shí)施例中服務(wù)器側(cè)API的框圖;圖10是說(shuō)明使用本發(fā)明存取系統(tǒng)的實(shí)施例說(shuō)明在客戶和服務(wù)器之間互動(dòng)的框圖;圖11是示出已知的事件通知系統(tǒng)。具體實(shí)施方式示腳脾裙圖1說(shuō)明了可以實(shí)現(xiàn)本發(fā)明的一個(gè)示范計(jì)算系統(tǒng)環(huán)境100的實(shí)例。該計(jì)算系統(tǒng)環(huán)境IOO僅是一種適合的計(jì)算系統(tǒng)環(huán)境的示例,并非要將本發(fā)明的使用或功能范圍局限于此。計(jì)算環(huán)境100也不能解釋為必須對(duì)有關(guān)示范操作環(huán)境100說(shuō)明的任一組件或組合具有依賴或要求。本發(fā)明可以用計(jì)算機(jī)可執(zhí)行指令的通用環(huán)境來(lái)描述,例如計(jì)算機(jī)執(zhí)行的程序模塊。通常,程序模塊包括執(zhí)行特定任務(wù)或執(zhí)行特定抽象數(shù)據(jù)類型的例行程序、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。而且,本領(lǐng)域的技術(shù)人員可以理解本發(fā)明可以用其它計(jì)算機(jī)系統(tǒng)配置實(shí)現(xiàn),包括手持設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程的消費(fèi)類電子產(chǎn)品、迷你計(jì)算機(jī)、大型計(jì)算機(jī)等。本發(fā)明還可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,在本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)媒體中都可包含程序模塊,所述媒體包括存儲(chǔ)器存儲(chǔ)設(shè)備。參照?qǐng)D1,一種執(zhí)行本發(fā)明的示范系統(tǒng)100包括以計(jì)算機(jī)110形式出現(xiàn)的通用計(jì)算設(shè)備,它包括處理單元120、系統(tǒng)存儲(chǔ)器130和系統(tǒng)總線121,它將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合到處理單元120。計(jì)算機(jī)110典型地包括各種計(jì)算機(jī)可讀媒體。作為示例而不是限定,計(jì)算機(jī)可讀媒體包括計(jì)算機(jī)存儲(chǔ)媒體和通信媒體。系統(tǒng)存儲(chǔ)器130包括易失和/或非易失存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)媒體,例如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132。在ROM131中通常存儲(chǔ)了基本的輸入/輸出系統(tǒng)133(BIOS),它包含幫助,例如在啟動(dòng)期間,在計(jì)算機(jī)iio各單元之間傳輸信息的基本例行程序。RAM132通常包括處理單元120需要立刻存取和/或當(dāng)前正在處理的數(shù)據(jù)和/或程序模塊。作為示例而不是限定,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136以及程序數(shù)據(jù)137。計(jì)算機(jī)110可以包括其它可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)媒體。僅作為示例而不是限定,圖1示出了對(duì)不可移動(dòng)非易失磁性媒體進(jìn)行讀寫的硬盤驅(qū)動(dòng)器141、對(duì)可移動(dòng)非易失磁盤152進(jìn)行讀寫的磁盤驅(qū)動(dòng)器151,以及對(duì)可移動(dòng)非易失光盤156,例如CDROM或其它光媒體進(jìn)行讀寫的光盤驅(qū)動(dòng)器155。其它可以用于示范操作環(huán)境的可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)媒體包括(但不局限于)磁帶盒、閃存卡、數(shù)字通用盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)R0M等。硬盤驅(qū)動(dòng)器141通常通過(guò)不可移動(dòng)存儲(chǔ)器接口例如接口140與系統(tǒng)總線121相連,而磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常通過(guò)可移動(dòng)存儲(chǔ)器接口例如接口150與系統(tǒng)總線121相連。在圖1中討論和說(shuō)明的驅(qū)動(dòng)器及其相關(guān)計(jì)算機(jī)存儲(chǔ)媒體為計(jì)算機(jī)110提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。在圖1中,例如,硬盤驅(qū)動(dòng)器141示出存儲(chǔ)了操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件既可與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136以及程序數(shù)據(jù)137相同,也可以不同。對(duì)操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147給出不同的參考標(biāo)記是為了說(shuō)明至少它們是不同的副本。通過(guò)輸入設(shè)備,例如鍵盤162和指示設(shè)備161(通常為鼠標(biāo)、軌跡球或觸摸板),用戶將命令和信息輸入到計(jì)算機(jī)110。其它輸入設(shè)備(未示出)包括麥克風(fēng)、操縱桿、游戲手柄、衛(wèi)星天線、掃描儀等。這些設(shè)備和其它的輸入設(shè)備通常通過(guò)耦合到系統(tǒng)總線的用戶輸入接口160連接到處理單元120,但也可以通過(guò)其它接口和總線結(jié)構(gòu),例如并行口、游戲端口或通用串行總線(USB)進(jìn)行連接。通過(guò)一種接口,例如視頻接口190,也可將監(jiān)視器191或其它類型的顯示設(shè)備連接到系統(tǒng)總線121。除了監(jiān)視器,計(jì)算機(jī)還可以包括其它通過(guò)輸出外圍接口195連接的外圍輸出設(shè)備,例如揚(yáng)聲器197和打印機(jī)196。在本發(fā)明中的計(jì)算機(jī)110可以在使用邏輯連接到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),例如遠(yuǎn)程計(jì)算機(jī)180,的聯(lián)網(wǎng)環(huán)境中工作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī),并且雖然在圖1中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備181,但它通常包括上述有關(guān)計(jì)算機(jī)110所描述的許多單元或所有的單元。圖1中描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也包括其它網(wǎng)絡(luò)。當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用,計(jì)算機(jī)IIO通過(guò)網(wǎng)絡(luò)接口或適配器170連接到LAN171。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用,計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或其它在WAN173上建立通信的裝置,例如因特網(wǎng)。調(diào)制解調(diào)器172,可以是內(nèi)置也可以外置,可以通過(guò)用戶輸入接口160或其它合適的機(jī)制連接到系統(tǒng)總線121。在聯(lián)網(wǎng)的環(huán)境,針對(duì)計(jì)算機(jī)110描述的程序模塊或部分程序模塊可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備上。通過(guò)示例但不是限定,圖l示出將遠(yuǎn)程應(yīng)用程序185駐留在存儲(chǔ)器設(shè)備181上。需要了解所示的網(wǎng)絡(luò)連接只是示例,還可以使用其它裝置來(lái)建立計(jì)算機(jī)之間的通信鏈路。雖然,計(jì)算機(jī)110的許多其它內(nèi)部組件并沒(méi)有示出,但本領(lǐng)域的技術(shù)人員可以理解這些組件和互連已經(jīng)眾所周知。因此,有關(guān)計(jì)算機(jī)110的內(nèi)部構(gòu)造沒(méi)有必要在本發(fā)明中進(jìn)一步詳述。存攻系一統(tǒng)錄賴如圖2所示,存取系統(tǒng)200與客戶環(huán)境300和服務(wù)器環(huán)境400交互。存取系統(tǒng)200可以在上述圖1所述的計(jì)算機(jī)環(huán)境100中實(shí)現(xiàn)。存取系統(tǒng)200包括便于與客戶300交互的客戶側(cè)存取接口220,便于與服務(wù)器側(cè)400交互的服務(wù)器側(cè)存取接口230,以及存取系統(tǒng)核心201。本發(fā)明的存取系統(tǒng)200提供了可編程訪問(wèn)用戶接口(UI)的客戶側(cè)API305以及提供者側(cè)API440。存取系統(tǒng)200允許應(yīng)用程序自身或任何它們所使用的組件可存取??蛻舡h(huán)境300最好包括輔助技術(shù)(AT)產(chǎn)品或自動(dòng)UI測(cè)試工具。服務(wù)器側(cè)400可執(zhí)行多種不同的技術(shù),如圖2所示。服務(wù)器系統(tǒng)410包括適配器412和核心程序414,它可以在第一類型的UI中找到。服務(wù)器系統(tǒng)420包括代理組件422和控制程序424,它可以在第二類型的UI中找到,例如由位于華盛頓州雷蒙德的微軟公司所出品的微軟操作系統(tǒng)產(chǎn)品中使用的Win32UI。服務(wù)器系統(tǒng)430包括適配器432和內(nèi)部0M434,它可以在可選的第三類型UI中找到。如圖3所示,包含在存取系統(tǒng)200中的一種事件機(jī)制依賴于UI自動(dòng)客戶202和UI自動(dòng)服務(wù)器204,便于與客戶環(huán)境300和服務(wù)器環(huán)境400交互。UI自動(dòng)客戶202和UI自動(dòng)服務(wù)器204將參照本發(fā)明的事件機(jī)制210在下面詳細(xì)描述。本發(fā)明的存取系統(tǒng)200為客戶(AT產(chǎn)品)提供如下能力1)收集有關(guān)應(yīng)用程序用戶接口的信息;2)無(wú)論采用什么技術(shù)創(chuàng)建UI,都能可編程地揭示和詢問(wèn)UI單元;(3)產(chǎn)生鍵盤和指針輸入;以及(4)了解哪種類型的狀態(tài)或功能當(dāng)前有效。存取系統(tǒng)200允許應(yīng)用程序使得其自身和其組件可存取。如圖2和3所示的結(jié)構(gòu)展示了存取系統(tǒng)200的一些主要方面,包括l)邏輯UI樹;2)控制模式;3)事件機(jī)制;4)屬性;和5)客戶和服務(wù)器側(cè)API,所有這些都將在下面詳細(xì)描述?!?微邏謝m存取系統(tǒng)200的一個(gè)完整組件就是邏輯樹222,如圖4(D)所示的一個(gè)示例。樹222包含在客戶側(cè)存取接口220中。邏輯樹是UI單元的基礎(chǔ)結(jié)構(gòu)層次的過(guò)濾圖,而不是必須由控制或應(yīng)用程序開發(fā)程序所執(zhí)行的單獨(dú)樹。實(shí)際上,它切斷了一些意義明確的屬性,感興趣的或不感興趣的,這些屬性指示了在邏輯樹222中是否應(yīng)該揭示出該結(jié)構(gòu)單元。存取系統(tǒng)核心201消化這些信息以產(chǎn)生過(guò)濾的UI邏輯樹222,隨后,將其提供給AT產(chǎn)品或測(cè)試腳本。邏輯樹222是單元樹,每個(gè)單元表示了一種控制、控制中的一項(xiàng)或一分組結(jié)構(gòu),它們可以是對(duì)話框、窗格或框架。邏輯樹222的結(jié)構(gòu)應(yīng)該表示用戶可察覺(jué)到的應(yīng)用程序UI(即使該控制實(shí)際上是使用一種不同的基礎(chǔ)結(jié)構(gòu)執(zhí)行)。樹應(yīng)該隨時(shí)間保持穩(wěn)定。只要對(duì)于用戶來(lái)說(shuō)應(yīng)用程序看上去是相同的,即使在場(chǎng)景后的應(yīng)用程序執(zhí)行細(xì)節(jié)已經(jīng)變化,表示該應(yīng)用程序的邏輯樹222也要保持相同。為結(jié)構(gòu)和執(zhí)行原因而存在的本機(jī)的一些單元,例如在微軟OS產(chǎn)品中的外殼"ShDocView"窗口,不應(yīng)該在該樹中出現(xiàn),因?yàn)橛脩舨荒懿煊X(jué)到它們。邏輯樹222是從多個(gè)分段中創(chuàng)建的單一樹,它能將多個(gè)不同的處理進(jìn)行統(tǒng)一,因此,使得它們對(duì)于客戶端來(lái)說(shuō)是相同的。邏輯樹222允許批量檢索,并且能獲得屬性列表的一個(gè)值。當(dāng)用戶正常地激活跨處理(crossprocess)調(diào)用以請(qǐng)求值時(shí),存取系統(tǒng)200將通過(guò)使用邏輯樹222來(lái)取出它們。邏輯樹222是從用于創(chuàng)建原始樹的分段中構(gòu)建,而不象已有系統(tǒng)中在一步中就構(gòu)建成。如圖5所示,有3個(gè)主要過(guò)程來(lái)創(chuàng)建邏輯樹222。在過(guò)程72,存取系統(tǒng)200定位基礎(chǔ)技術(shù)的本機(jī)各單元,并到達(dá)如圖4(A)所示的本機(jī)樹。在過(guò)程74,存取系統(tǒng)200組合本機(jī)各單元以形成如圖4(B)所示的原始樹20。最后,在過(guò)程76,通過(guò)隱藏原始樹20中不感興趣的組件來(lái)獲得邏輯樹222,如圖4(D)所示。圖4(A)說(shuō)明了兩種本機(jī)樹10和14,它們是從基礎(chǔ)技術(shù),例如Win32UI或任意其它可用UI的本機(jī)單元中構(gòu)建的。本機(jī)樹10包括父節(jié)點(diǎn)11和多個(gè)彼此具有不同關(guān)系的后代12。同樣,本機(jī)樹14包括具有多個(gè)子節(jié)點(diǎn)16的父節(jié)點(diǎn)15。子節(jié)點(diǎn)16可以彼此作為兄弟節(jié)點(diǎn)來(lái)描述。如圖4(B)所示,本機(jī)樹10和14可以結(jié)合形成原始樹20。原始樹20包括父節(jié)點(diǎn)21,具有兩個(gè)子節(jié)點(diǎn)22和30。子節(jié)點(diǎn)22具有后代23-29,而子節(jié)點(diǎn)30具有后代31-33。該原始樹20是本機(jī)樹10和14、形成節(jié)點(diǎn)22-29的本機(jī)樹10的節(jié)點(diǎn)以及形成節(jié)點(diǎn)30-33的本機(jī)樹14的節(jié)點(diǎn)的組合。通過(guò)如圖4(C)和4(D)概括所示的方法,原始樹20轉(zhuǎn)換成了邏輯樹222。12在從原始樹20轉(zhuǎn)換為邏輯樹222的過(guò)程中,開發(fā)程序可以在原始樹中插入暗示。開發(fā)程序可以將原始樹20中的節(jié)點(diǎn)標(biāo)記為"隱藏自身"或"隱藏自身及子節(jié)點(diǎn)"或"隱藏節(jié)點(diǎn)的子節(jié)點(diǎn)"等。開發(fā)程序也可以橫向移動(dòng)節(jié)點(diǎn)或?qū)⒐?jié)點(diǎn)放置在子節(jié)點(diǎn)之前。對(duì)原始樹20中這些"暗示"和修改被用來(lái)形成邏輯樹222。例如,在圖4(C)中,開發(fā)程序?qū)⒃紭?0的節(jié)點(diǎn)24-26和33標(biāo)記為不感興趣,如框40和41所示。通常,含有對(duì)用戶不可見的單元的節(jié)點(diǎn)被標(biāo)記為不感興趣。而有關(guān)可視UI的節(jié)點(diǎn)通常被認(rèn)為是感興趣的,并且將被包含在邏輯樹222中提供給AT客戶300使用。如圖4(D)所示,標(biāo)記為不感興趣的這些節(jié)點(diǎn)并沒(méi)有包含在邏輯樹222中。存取系統(tǒng)200使用邏輯樹222來(lái)查找有關(guān)事件的信息、系統(tǒng)的狀態(tài)、對(duì)象的位置以及控制信息。已知的系統(tǒng)不具備在它們的樹中進(jìn)行研究的能力。而邏輯樹222可以基于客戶300的選擇進(jìn)行瀏覽,并提供信息,而不用顧慮服務(wù)器側(cè)使用的應(yīng)用程序。邏輯樹222是一種單獨(dú)的標(biāo)準(zhǔn)樹,它是UI的邏輯表現(xiàn),并且形成只包含客戶200感興趣單元的形式。因此,邏輯樹222呈現(xiàn)出一種層次體系,能精密映射到展示給最終用戶的結(jié)構(gòu),而不是強(qiáng)迫AT產(chǎn)品過(guò)濾UI單元的結(jié)構(gòu)體系并猜測(cè)呈現(xiàn)給最終用戶的模式。這對(duì)AT產(chǎn)品將UI描述給用戶的任務(wù)進(jìn)行了大大簡(jiǎn)化,并幫助了用戶與應(yīng)用程序的互動(dòng)。因?yàn)樵撨壿婾I樹222是存取系統(tǒng)200的基礎(chǔ)部分,存取系統(tǒng)200所有的其它組件都是根據(jù)邏輯樹222工作。例如,圖6示出具有非常簡(jiǎn)單的結(jié)構(gòu)的簡(jiǎn)易對(duì)話框60。然而,當(dāng)審視現(xiàn)有可用存取技術(shù)時(shí),該對(duì)話框60的結(jié)構(gòu)卻驚人地復(fù)雜。它包含264個(gè)AT產(chǎn)品要過(guò)濾的對(duì)象,以便只向最終用戶揭示有意義的對(duì)象。通過(guò)存取系統(tǒng)200和其對(duì)邏輯UI樹222的支持,擁有該對(duì)話框60的開發(fā)程序可以設(shè)定一些屬性以將下述圖6中所示的結(jié)構(gòu)呈現(xiàn)給AT產(chǎn)品300。如圖6所示,對(duì)于"運(yùn)行"對(duì)話,開發(fā)程序可以指示飛行窗口圖形62和"請(qǐng)打入你需要打開的程序、目錄、文檔的名字或因特網(wǎng)資源和窗口"63為感興趣的。開發(fā)程序也可以指定包含記事本、字、計(jì)算器等的組合框64、以及確定65、取消66和瀏覽67按鈕為感興趣。這為開發(fā)程序提供了一種低成本機(jī)制來(lái)標(biāo)記它們的單元體系,并因此,通過(guò)UI存取系統(tǒng)200產(chǎn)生它們的應(yīng)用程序UI的邏輯表現(xiàn)。每個(gè)所示出的特征都可以由與該節(jié)點(diǎn)與邏輯樹222中每個(gè)其它節(jié)點(diǎn)具有特定關(guān)系的一個(gè)節(jié)點(diǎn)表示。該邏輯表現(xiàn)為測(cè)試團(tuán)隊(duì)、AT產(chǎn)品或客戶300提供了直接利益。雖然邏輯樹222是用戶最終感興趣的東西,但原始樹20也具有一些重要的功能。邏輯樹222僅含有用戶能夠涉及的單元,而原始單元樹20含有表示基礎(chǔ)框架的執(zhí)行結(jié)構(gòu)的節(jié)點(diǎn),例如22。例如,對(duì)于Win32UI分段,該樹將包含表示HWND的節(jié)點(diǎn)。從某方面來(lái)說(shuō),原始樹20是在邏輯單元樹222和基礎(chǔ)框架自身的本機(jī)單元樹之間的"中間結(jié)構(gòu)"。原始樹20作為創(chuàng)建邏輯單元樹222的基礎(chǔ)使用,并且本機(jī)元素通過(guò)它首先插入到系統(tǒng)中。原始樹20也可用于調(diào)試和測(cè)試。對(duì)于定點(diǎn)或描述哪里是特定有問(wèn)題的節(jié)點(diǎn)是很有用的?;驹紗卧?jié)點(diǎn)的功能包括瀏覽原始單元樹的方法;跳轉(zhuǎn)到對(duì)應(yīng)邏輯單元(存在的話)的方法;含有該單元"調(diào)試字符串"的屬性,例如,對(duì)于H麗D節(jié)點(diǎn)為"H麗D0x483FE";以及其它"在場(chǎng)景基礎(chǔ)架構(gòu)之后"的方法。這些其它方法實(shí)現(xiàn)了命中測(cè)試和定位;事件;以及揭示框架可以很容易提供的屬性(例如聚焦、有效)。原始單元樹20含有節(jié)點(diǎn)22-33,它們表示了來(lái)自不同再現(xiàn)引擎的單元。該原始單元樹用作再現(xiàn)引擎的開始點(diǎn)以將它們自身插入到存取系統(tǒng)200中,并從適應(yīng)本機(jī)單元的輕適配對(duì)象(例如從Win32的H麗D)創(chuàng)建成標(biāo)準(zhǔn)的邏輯樹222。它還適用于處理主持轉(zhuǎn)換(hostingtransition),其中一種技術(shù)主導(dǎo)另一種技術(shù)。由于原始單元樹20是邏輯樹222創(chuàng)建的基礎(chǔ),它可以用于檢驗(yàn)邏輯樹222是否完成、連接,并能用于檢査未說(shuō)明單元。該原始單元樹20可進(jìn)一步用于其它類似基礎(chǔ)結(jié)構(gòu)的任務(wù)例如,提供一些基礎(chǔ)單元ID,并提供一些基礎(chǔ)框架配置的單元屬性,例如聚焦、有效和位置。原始單元樹20并不是AT產(chǎn)品或客戶300的主要信息源,并不用于邏輯瀏覽,且不揭示給最終用戶。原始單元樹20也不能用于獲取樹中的單元位置,因此,它能及時(shí)返回到一些未來(lái)的點(diǎn)。邏輯單元樹222執(zhí)行所有這些功能。原始單元樹20通??梢詮幕A(chǔ)再現(xiàn)技術(shù)(H麗D,Element)的原始單元機(jī)械地創(chuàng)建,而不需要表示邏輯單元的知識(shí)。因此,它可用于査找邏輯樹222沒(méi)有考慮到的原始單元。原始單元樹20是一種有用的調(diào)試和診斷工具,因?yàn)樗试S對(duì)獲取的節(jié)點(diǎn)位置進(jìn)行類似"堆棧(stack-dump)"的描述。而且,已知的系統(tǒng)中的樹是基于代碼特定標(biāo)準(zhǔn),而難以用逆向技術(shù)執(zhí)行。本方法使用的是通用的抽象"原始單元"類型,可以用任何基礎(chǔ)再現(xiàn)技術(shù)執(zhí)行和代表。為了獲得原始單元樹,調(diào)用原始單元根節(jié)點(diǎn)將獲得桌面單元,通過(guò)驗(yàn)證其父節(jié)點(diǎn)為Null來(lái)確定該根節(jié)點(diǎn),它是所有其它節(jié)點(diǎn)的最終祖先。為了獲得其它單元,調(diào)用一種從特定點(diǎn)獲得原始單元的方法將返回使用有效屏幕坐標(biāo)的單元。在獲得原始單元樹之后,可以通過(guò)檢查單元(父節(jié)點(diǎn)、繼承節(jié)點(diǎn)和子節(jié)點(diǎn))來(lái)檢驗(yàn)和驗(yàn)證該樹。在操作中,客戶300可以使用關(guān)系,例如父節(jié)點(diǎn)、下一繼承節(jié)點(diǎn)、前一繼承節(jié)點(diǎn)、第一子節(jié)點(diǎn)、最后子節(jié)點(diǎn)等,來(lái)瀏覽原始單元樹20??蛻?00可以從原始單元跳轉(zhuǎn)到邏輯樹222中的對(duì)應(yīng)邏輯單元。當(dāng)客戶300想要保持被告知各個(gè)事件,客戶300可以通過(guò)如圖3所示的UI自動(dòng)客戶202進(jìn)行登記以獲得信息??蛻?00指定它希望接收的對(duì)象信息、它想要信息去的地方以及想要取回的屬性列表??蛻粽?qǐng)求送到UI自動(dòng)客戶202。UI自動(dòng)客戶202能夠監(jiān)視桌面上的任何處理。UI自動(dòng)服務(wù)器204保持對(duì)監(jiān)聽的客戶300的追蹤,并知道如何取回給UI自動(dòng)客戶202。UI自動(dòng)客戶202告知UI引擎206客戶的興趣,所以,UI引擎206知道何時(shí)告知UI自動(dòng)服務(wù)器204該事件。UI引擎不需要使用客戶的建議,但可以選擇它以免總是要將事件通知UI自動(dòng)服務(wù)器204,或者在僅當(dāng)客戶監(jiān)聽所有事件時(shí)通知UI自動(dòng)服務(wù)器204。該建議在僅當(dāng)一個(gè)客戶在監(jiān)聽事件時(shí)如果UI引擎想要開啟UI自動(dòng)服務(wù)器204通知時(shí)很有效。UI引擎會(huì)這樣做以避免UI可能的速度下降,和避免加載它并不需要的代碼模塊。UI引擎206隨后告知UI自動(dòng)服務(wù)器204—個(gè)UI事件。UI自動(dòng)服務(wù)器204將所請(qǐng)求的邏輯單元返回給客戶300,并將信息發(fā)送給客戶300,所述信息包括客戶300所請(qǐng)求的事件的屬性。UI自動(dòng)服務(wù)器204決定哪些信息是在客戶所請(qǐng)求的范圍,并且僅當(dāng)該信息是感興趣時(shí)才形成一個(gè)邏輯單元。形成邏輯單元包括在UI自動(dòng)服務(wù)器側(cè)的預(yù)取客戶所指定的在處理事件時(shí)其要使用的屬性組。例如,UI自動(dòng)服務(wù)器204可以揭示組合框的邏輯單元。其范圍是該組合框和其15點(diǎn)/父節(jié)點(diǎn)/依賴關(guān)系來(lái)定義登記階段期間的范圍。在UI自動(dòng)服務(wù)器204判定信息是否在所請(qǐng)求范圍內(nèi)之后,就創(chuàng)建一個(gè)邏輯單元。該UI自動(dòng)客戶202通過(guò)對(duì)從UI自動(dòng)服務(wù)器204接收所請(qǐng)求信息的目標(biāo)應(yīng)用程序進(jìn)行對(duì)話,并將對(duì)象發(fā)送到客戶300上的合適空間來(lái)為客戶300服務(wù)。當(dāng)客戶300登記以接收事件通知時(shí),就創(chuàng)建UI自動(dòng)服務(wù)器204。作為示例,UI引擎206可以是運(yùn)行微軟Word字處理應(yīng)用程序??蛻?00登記需要名字屬性的變化??蛻舻牡怯浺饎?chuàng)建UI自動(dòng)服務(wù)器204??蛻舻牡怯浺步ㄗhUI引擎206開始告知UI自動(dòng)服務(wù)器204需要名字屬性。UI引擎206沒(méi)有取得范圍信息。UI引擎206調(diào)用服務(wù)器側(cè)的一個(gè)API。UI引擎206規(guī)定1)哪個(gè)屬性改變;2)屬性的新值;以及3)可能的舊值。UI自動(dòng)服務(wù)器204的創(chuàng)建是基于客戶300感興趣的事件,且從而知道感興趣的事件、屬性、客戶和范圍,因此,它就能知道是否有客戶300對(duì)創(chuàng)建的邏輯單元感興趣。如果有超過(guò)一個(gè)的客戶300通過(guò)一個(gè)特定的UI自動(dòng)服務(wù)器204登記事件,并且這些客戶300登記的是需要相同的事件,并隨同返回的邏輯單元要求大量取得屬性,那么當(dāng)UI自動(dòng)服務(wù)器204將事件發(fā)送回客戶300時(shí),每個(gè)客戶都將得到隨同邏輯單元返回的所請(qǐng)求大量取得屬性的組合。對(duì)于每個(gè)進(jìn)行監(jiān)聽的客戶300,UI自動(dòng)服務(wù)器204告知客戶300,將與事件相關(guān)的邏輯單元傳送給客戶。UI自動(dòng)服務(wù)器204僅創(chuàng)建一個(gè)邏輯單元。這是對(duì)現(xiàn)有技術(shù)的很大改進(jìn),現(xiàn)有技術(shù)中,要求每個(gè)客戶300都請(qǐng)求其自身的事件源對(duì)象副本。如果當(dāng)客戶登記事件時(shí),UI引擎206不利用UI自動(dòng)客戶建議,UI引擎206可以詢問(wèn)UI自動(dòng)服務(wù)器204是否有任何存取客戶300在監(jiān)聽,并且如果沒(méi)有一個(gè)在監(jiān)聽,就可以避免創(chuàng)建信息和將其發(fā)送給UI自動(dòng)服務(wù)器204的工作。例如,屏幕閱讀器是客戶300,并規(guī)定了它想要信息送到哪里、聚焦變化對(duì)象以接收事件以及感興趣的特定屬性列表。向UI引擎206提供建議,并且引擎知道它應(yīng)該將事件發(fā)送到UI自動(dòng)服務(wù)器204。依據(jù)檢測(cè)的聚焦變化,UI引擎206通知UI自動(dòng)服務(wù)器204。UI自動(dòng)服務(wù)器204將其轉(zhuǎn)換成熟知的接口并將事件和對(duì)象發(fā)送給UI自動(dòng)客戶202。UI自動(dòng)客戶202將對(duì)象發(fā)送到客戶300中的合適空間。上述組件與已有系統(tǒng)相比,其改進(jìn)在于消除了在核心程序中對(duì)事件的中央存儲(chǔ)。取而代之以UI自動(dòng)服務(wù)器204了解所有對(duì)其運(yùn)行的上下文程序中取得信息感興趣的客戶300。核心存儲(chǔ)的消除還創(chuàng)建了一種更加對(duì)等的互動(dòng),因?yàn)?,UI自動(dòng)服務(wù)器204實(shí)現(xiàn)了在核心程序中先前所執(zhí)行的功能。本發(fā)明的存取系統(tǒng)200為客戶300提供了指定其想要了解的東西的能力,這樣,使用UI自動(dòng)服務(wù)器204在服務(wù)器側(cè)就實(shí)現(xiàn)了過(guò)濾。圖7是有關(guān)事件登記和通知方法的過(guò)程的流程圖。在步驟80,客戶300請(qǐng)求事件通知。在步驟82,UI自動(dòng)客戶202將請(qǐng)求發(fā)送給UI自動(dòng)服務(wù)器204。在步驟84,UI自動(dòng)客戶建議UI引擎206它要求通知。在步驟86,UI自動(dòng)服務(wù)器204從UI引擎206接收通知。在步驟88,UI自動(dòng)服務(wù)器204過(guò)濾所接收的信息。在步驟90,如果所接收的信息被查明是用戶不感興趣的,UI自動(dòng)服務(wù)器204就丟棄該信息,并在步驟92繼續(xù)等待通知?;蛘撸绻诓襟E90發(fā)現(xiàn)該信息是感興趣的,在步驟94,UI自動(dòng)服務(wù)器204就創(chuàng)建邏輯單元,并將其發(fā)送給UI自動(dòng)客戶202。在步驟96,UI自動(dòng)客戶202將所接收的信息放入客戶300中其合適的位置。存取系統(tǒng)200的事件機(jī)制210允許客戶300登記以接收UI中屬性變化、控制結(jié)構(gòu)的樹變化、多媒體事件和相關(guān)信息的事件通知。沒(méi)有這些能力的話,客戶300必須連續(xù)調(diào)査系統(tǒng)中所有的UI單元,以驗(yàn)證是否有任何信息、結(jié)構(gòu)或狀態(tài)改變。存取系統(tǒng)200事件機(jī)制210也允許客戶300接收非處理(out-of-process)事件,請(qǐng)求隨事件通知一起返回的屬性集合,并為事件登記多個(gè)單元。事件機(jī)制210揭示了AT產(chǎn)品或測(cè)試應(yīng)用程序用于登記事件的接口;AT產(chǎn)品執(zhí)行用于接收事件通知的對(duì)象的接口;以及控制執(zhí)行程序用于通知UI事件的事件引擎的接口。事件機(jī)制210用于允許AT產(chǎn)品和測(cè)試應(yīng)用程序獨(dú)立于用于再現(xiàn)UI的UI引擎來(lái)接收事件,并允許AT產(chǎn)品和測(cè)試應(yīng)用程序追蹤頂層應(yīng)用程序窗口并聚焦,而不用顧慮基礎(chǔ)技術(shù)。在可用情況下,將事件與來(lái)自應(yīng)用程序邏輯單元樹222的邏輯單元相關(guān)聯(lián)。在邏輯單元不可用的情況下,將事件與人們可讀字符串或其它已知代表事件源的對(duì)象相關(guān)聯(lián)。事件機(jī)制210基于在事件登記期間用戶提供的選擇來(lái)進(jìn)行過(guò)濾。通過(guò)在服務(wù)器處使用客戶過(guò)濾選擇,在創(chuàng)建事件相關(guān)數(shù)據(jù)并將其通過(guò)跨處理發(fā)送給客戶之前,事件機(jī)制210通過(guò)減少大量交叉處理調(diào)用從本質(zhì)上改善了非處理性能。事件機(jī)制210提供了一種方式,在事件登記期間指定對(duì)于事件感興趣的邏輯單元的屬性。這進(jìn)一步減少了許多交叉處理調(diào)用。該事件機(jī)制210可以進(jìn)行擴(kuò)展,而不需要對(duì)主要的操作系統(tǒng)(OS)進(jìn)行改變。雖然,事件機(jī)制210使用經(jīng)管理的代碼實(shí)現(xiàn),但未經(jīng)管理的應(yīng)用程序可以通過(guò)COM的互用性對(duì)其進(jìn)行訪問(wèn)。事件機(jī)制210可以使得客戶被告知許多類型的事件。一種類型的事件是頂層窗口事件。頂層窗口事件包括與菜單和組合框落下或任何將桌面作為父節(jié)點(diǎn)的特征相關(guān)的事件。另一類型的事件是聚焦事件。客戶300經(jīng)常請(qǐng)求一種追蹤聚焦的方法。其它類型的事件包括屬性變化事件和邏輯結(jié)構(gòu)變化事件。屬性變化事件是在當(dāng)邏輯單元的屬性發(fā)生變化時(shí)被激活。邏輯結(jié)構(gòu)變化事件是在當(dāng)邏輯單元樹結(jié)構(gòu)改變時(shí)被激活。事件也可以從控制模式中激活。從控制模式中激活的事件需要是可擴(kuò)展的,并因此,這些事件由GUID識(shí)別。當(dāng)?shù)怯洉r(shí),可接受任何GUID值。對(duì)于任何新的控制模式,其證明的事件需要是唯一的GUID。AT產(chǎn)品可能需要進(jìn)行修改以監(jiān)聽新控制模式事件。監(jiān)聽程序也需要能涵蓋這些事件。例如,定向測(cè)試可能需要將這些事件限制在特定應(yīng)用程序或在應(yīng)用程序中控制。該控制模式定義了什么是源,而事件消費(fèi)者將需要參照該部分的記錄,以便了解如何使用源單元和事件爭(zhēng)論對(duì)象。另一種類型的事件是多媒體事件。多媒體可以包括聲音、視頻和動(dòng)畫。該方法將支持多媒體事件,并通知客戶一些動(dòng)作,包括"停止"、"暫停"、"快進(jìn)"、"重復(fù)"和"靜音"。簡(jiǎn)單的聲音事件可以獨(dú)立于多媒體事件進(jìn)行處理。簡(jiǎn)單的聲音事件表示單獨(dú)、短促的聲音,其存在是為了向用戶傳達(dá)某些事件的發(fā)生,而不是其聲音本身。簡(jiǎn)單的聲音事件可以包括當(dāng)新郵件到達(dá)時(shí)播放的聲音;當(dāng)膝上型電腦電量低時(shí)產(chǎn)生的聲音;或當(dāng)消息框用IconExclamation類型顯示時(shí)播放另一種類型的事件是軟焦點(diǎn)事件。軟焦點(diǎn)事件出現(xiàn)在桌面上,但停留在后臺(tái)中。一些軟焦點(diǎn)的示例是彈出式幫助窗口,在通知區(qū)域中顯示"有新的更新可用";在任務(wù)欄中的閃爍圖標(biāo),指示需要引起聚焦的后臺(tái)應(yīng)用程序;以及當(dāng)打印開始和結(jié)束時(shí),在通知盒(tray)中出現(xiàn)和消失的打印機(jī)圖標(biāo)。這些事件可能看上去與其它事件類別有某些重疊(多媒體可以涉及軟焦點(diǎn)也涉及的動(dòng)畫事件)。然而,該事件將依據(jù)其傳送給用戶的東西來(lái)分類,而不是依據(jù)其如何被傳送來(lái)分類??蛻魝?cè)API310和提供者側(cè)API440提供了一種事件通知方法,它支持上述所列舉類型的事件類型。這些方法將結(jié)合附圖8-10在下面進(jìn)一步描述??乩w式存取模型提供了獨(dú)特的方法來(lái)分類和揭示特定UI單元或控制所支持的功能。存取模型定義了一組公共控制模式,每種模式定義了UI狀態(tài)的一個(gè)方面,以取代已有技術(shù)中將功能和特定控制類型(例如按鈕、編輯框或列表框)相關(guān)聯(lián)。因?yàn)檫@些模式彼此獨(dú)立,可以將它們組合以描述特定UI單元所支持的完整功能集。例如,存取系統(tǒng)200將單元作為支持調(diào)用控制模式來(lái)描述,而不是以其類名例如按鈕來(lái)描述。一種控制模式定義了結(jié)構(gòu)、屬性、事件和該單元所支持的方法。因此,這些模式不僅允許客戶査詢控制狀態(tài),它們也允許其通過(guò)使用為特定模式設(shè)計(jì)的接口來(lái)可編程地操作控制。例如,SelectionContainer模式提供了對(duì)所選擇項(xiàng)進(jìn)行査詢、選擇或取消選定特定項(xiàng)、或判定控制是否支持單選或多選模式的方法。為存取系統(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。這種技術(shù)使得控制開發(fā)程序能夠執(zhí)行新類型控制,同時(shí)仍然具有精確定義的將其狀態(tài)揭示給AT產(chǎn)品和測(cè)試腳本的方法。如果引入新類型狀態(tài),就能定義新控制模式來(lái)表達(dá)所要求的功能。輔助技術(shù)產(chǎn)品和測(cè)試腳本現(xiàn)在可以寫成理解如何和每個(gè)模式工作,而不是和每個(gè)UI控制工作。因?yàn)榇嬖诘目刂颇J竭h(yuǎn)遠(yuǎn)少于控制類,因此,這種技術(shù)19使得所需要的代碼最小。這種方法也促進(jìn)了一種更加靈活的層次結(jié)構(gòu),該結(jié)構(gòu)能有效詢問(wèn)和操作新控制(只要它們支持已知的控制模式)。下述表格提供了公共控制的一些示例以及它們將支持的模式。ControlRelevantControlPatternsButtonhwokableCheckbox,Radiobu加nValueUstboxSelectionContainer,ScrollableComboboxSelectionContainer,Scrollable,ValueTreeviewSelectionContainer,Scrollable,HierarchyListviewSelectionContainer,Scrollable,SortaWeTextbox,EditValue,Text,Scrollable表格1更多的特定接口將用于揭示與公共控制模式相關(guān)的功能。這些模式的示例包括1)選擇管理容器;2)網(wǎng)格布局容器;3)含有值的UI單元;4)代表對(duì)象(文件、email等)的圖標(biāo);以及5)可調(diào)用的UI單元。通常,這些模式與特定控制并非緊密相連,并且不同的控制可以執(zhí)行相同的模式。例如,列表框、組合框和樹圖都執(zhí)行"選擇管理容器"的模式。一些控制可能執(zhí)行多種控制,如果滿足選擇網(wǎng)格將既執(zhí)行"網(wǎng)格布局容器"模式又執(zhí)行"選擇管理容器"模式。在以前的應(yīng)用程序中不存在單獨(dú)的"角色(role)"屬性,而是使用兩種單獨(dú)的機(jī)制??刂颇J脚卸ㄒ豢刂频目捎玫墓δ?,而人們可讀可定位屬性提供用戶可理解的控制類型名字,例如"按鈕"、"列表框"等。系統(tǒng)f/圖8示出本發(fā)明一實(shí)施例中客戶側(cè)API305的詳細(xì)情況??蛻魝?cè)API305可以包括一組核心類310。該核心類310包括一個(gè)或更多的自動(dòng)類312、邏輯單元類314以及原始單元類316??蛻魝?cè)API305還可以包括一個(gè)或更多的控制模式類320、輸入類340以及輔助類350。這些類型的類中的每個(gè)類將在下面詳細(xì)描述??蛻糇詣?dòng)類312為客戶300提供了一種UI自動(dòng)方法??蛻糇詣?dòng)類312含有并不是針對(duì)任何UI單元定制的方法??蛻糇詣?dòng)類312可以提供一種通過(guò)某點(diǎn)、窗口句柄或桌面根單元獲得邏輯或原始單元的方法??蛻糇詣?dòng)類312可以另外提供基于輸入規(guī)則查找邏輯單元的方法??蛻糇詣?dòng)類312最好還包括對(duì)事件通知進(jìn)行登記和取消登記的方法。自動(dòng)類312最好還提供加載代理DLL,檢索屬性局部名字和控制模式,以及執(zhí)行單元比較的助手功能??蛻糇詣?dòng)類312還包括讓客戶300監(jiān)聽事件的方法。自動(dòng)類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需要為用戶獲得有關(guān)應(yīng)用程序的信息,客戶300就找到一個(gè)按鈕并按下,觀察按鈕上的文字。客戶300可以調(diào)用一種方法,例如如表2所示的査找邏輯單元(FindLogicalElement)的方法??蛻魝?cè)API305將返回一個(gè)值,該值對(duì)應(yīng)于客戶側(cè)接口220的邏輯樹222中的一個(gè)位置。通過(guò)邏輯樹222,存取系統(tǒng)200不用考慮所使用的應(yīng)用程序就能為客戶300提供了UI的抽象視圖。抽象模型包括結(jié)構(gòu)、屬性、事件和功能,而列表框、按鈕或其它UI組件可以期望彼此共享。23客戶側(cè)API305另外包括邏輯單元314。邏輯單元314提供獲得公共單元屬性的字段、方法和屬性。如上所述,邏輯單元代表了邏輯樹222中的UI單元,例如界定矩形、聚焦、有效、可點(diǎn)擊點(diǎn)、運(yùn)行時(shí)間、固定標(biāo)識(shí)符以及名字。邏輯單元類314還可以提供在單元,例如第一子節(jié)點(diǎn)、最后子節(jié)點(diǎn)、下一繼承者和父節(jié)點(diǎn)中進(jìn)行瀏覽的工具。邏輯單元類314還可以提供獲得對(duì)一單元的特定模式或獲得由該單元所支持的所有模式的工具。邏輯單元類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承l(wèi)El柳entParentLogicalElementPreviousSiblingLogicalElementRootEle肺ntKeU10da,24<table>tableseeoriginaldocumentpage25</column></row><table>客戶側(cè)API305另外包括輸入類340。輸入類340可用于模擬鼠標(biāo)、鍵盤和其它類型的輸入。輸入類340允許通過(guò)輸入方法例如鍵盤、筆和鼠標(biāo)進(jìn)行編程(programmatic)輸入。一個(gè)示例輸入類示于下表。<table>tableseeoriginaldocumentpage26</column></row><table>表5客戶側(cè)API305另外包括UI自動(dòng)控制模式類320。UI自動(dòng)控制模式類320可以揭示可編程訪問(wèn)由邏輯單元揭示的特定功能的字段、屬性和方法。UI自動(dòng)控制模式類320幫助用戶與UI存取系統(tǒng)200所定義的控制模式進(jìn)行互動(dòng)。例如,應(yīng)用程序窗口模式方法將功能揭示給對(duì)應(yīng)用程序的編程工作。該功能可以允許對(duì)子窗口或表示應(yīng)用程序中工具欄、菜單、滾動(dòng)條和系統(tǒng)菜單的邏輯單元位置進(jìn)行配置??刂颇J筋?20可以包括應(yīng)用程序窗口模式(ApplicationWindowPattern)類。ApplicationWindowPattern類揭示了通常與頂層應(yīng)用程序窗口相關(guān)的狀態(tài)和信息??蛻?00可以使用這個(gè)類來(lái)平鋪或?qū)盈B應(yīng)用程序的多文檔界面(MDI)子界面,査找其任務(wù)欄上的按鈕,以及定位其用戶界面的已知區(qū)域,例如工具欄和菜單。下表說(shuō)明了本發(fā)明一個(gè)實(shí)施例的ApplicationWindow模式類。classSystem.Windows.Automation,ApplicationWindowPat:ternread-onlyAutomationPropertyCanArrangeChildWindowsPropertyread-onlyAutomationPropertyMdiChildrenPropertyread-onlyAutomationPropertyMemiBarsPropertyread-onlyAutomationPatternPatternread-onlyAu仁omationPropertyRelatedTaskBarButtonPropertyread-onlyAutomationPropertyScrollBarsPropertyread-onlyAutoma仁ionPropertyStatusBarsPropertyread-onlyAutomationPropertyStatusIncUcatorPropertyread-onlyAutomationPropertySystemMenuPropertyread-oniyAutomationPropertyToolBarsPropertyPropertiessBooleanCanArrangeChildWindowsIiOgicalEl柳entRelatedTaskBarButtonLogicalElementStatuslndicatorLogicalEl加節(jié)tSystemMenuMftthoda:BooleanArrangeChildWindows(ChildArrangementposition)LogicalEl柳ent〖1GetMdiChildren()LogicalEl飾entHGetMenuBars()IogicalEl咖erit1GetScrollBars()LogicalElementIGetStatusBars()LqgicalElementfGet丁oolBars(》__表6控制模式類320還可以包括用于展開和收縮單元的類,以提供一種展示和隱藏這些類的內(nèi)容的機(jī)制(ExpandCollapsePattern)0ExpandCollapsePattern類作為ExpandCollapse模式的封裝類(wrapperclass)。ExpandCollapsePattern類含有客戶300用來(lái)操作可以擴(kuò)展(顯示)或收縮(隱藏)內(nèi)容的字段、屬性和方法。下表說(shuō)明了ExpandCollapsePattern類的實(shí)施_______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還可以包括網(wǎng)格項(xiàng)模式(GridltemPattern)類,允許客戶300快速判定所揭示的項(xiàng)是否是網(wǎng)格的一部分。如果項(xiàng)是網(wǎng)格的一部分,GridltemPattern類就依據(jù)行/列坐標(biāo)和間隔來(lái)幫助判定該項(xiàng)處于網(wǎng)格的什么位置。GridltemPattern類最好包含客戶300用來(lái)操作揭示在網(wǎng)格中單元格功能的控制的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的GridltemPattern類。classSystem,Windows,Automation.Gridlt柳Pa11emread-onlyAutomationpropertyColumnPropertyreaci-onlyAutotnatioiiPropertyColumnSpanProper仁yread-onlyAutomationPropertyC0ntainin9GridPr0pertyread-onlyAu仁oma"onPatternPatternread-onlyAutomationPropertyRowPropertyread-onlyAutomationPropertyRowSpanPropertyProperties1Int32ColumnInt32Colurnn鄰anL(OgicalElemeiitContainingGridInt32Row1nt33RowSpan____________________表8控制模式類320還可以包括層次項(xiàng)模式(HierarchyltemPattern)類,它表示了與其它單元(例如TreeView控制中的單元)彼此具有層次關(guān)系的單元。HierarchyltemPattern類含有自動(dòng)客戶300用于操作獨(dú)立于UI單元在邏輯樹222中的關(guān)系,而揭示它們之間層次關(guān)系的控制的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的HierarchyltemPattern類。classSystem.Windows,Automation.HierarchyUemPattemread-onlyAutomationPropertyDepthPropertyread-onlyAutomationPropertyFirstChildProperxyread-onlyAuto鵬ticmEventHierarchyChangedBventread-onlyAutomationPropertyLastChildPropertyread-onlyAutomationPropertyNextSiblin9Pr0perty_read-onlyAu仁omationPropertyParentPropertyread-onl^"AutomationPatternPatternread-onlyAutomationPropertyPreviousSiblingPropertyInt32DepthLogicalElementPirstChildLogicalSl柳entI>astChildL09icalElementNextSiblingLogicalEl抓抑tParentLogicalElementPreviousSibllng_表9控制模式類320還可以包括激活模式(InvokePattern)類,它表示具有與它們相關(guān)的單一、明確動(dòng)作的對(duì)象。相關(guān)UI組件的實(shí)例包括按鈕;超鏈接;菜單項(xiàng);單選按鈕和復(fù)選框。InvokePattern類含有自動(dòng)客戶300用于操作當(dāng)激活時(shí)引起單一、明確動(dòng)作發(fā)生的單元的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的InvokePattern類。classSystem.Windows.Automation.InvokePatternFieldsread-onlyMitomationEventInvokedEventread-onlyAutomationPatternPatternVoidInvoke()表10控制模式類320還包括多視圖模式(MultipleViewPattern)類,作為用于多視圖模式單元的封裝類。多視圖模式單元是可以在一信息集的多種表示之間切換的單元。該MultipleViewPattern類含有自動(dòng)客戶300用于操作具有在同一信息集多種表示之間進(jìn)行切換的功能的單元的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的MultipleViewPattern類。_classSystem.Windows.Automation.MultipleV丄ewPatternread-onlyAutomationPropertyCurr幼tViewPropertyread-。rvlyAutomationPatternPatternread-onlyAutomationPropertySupportedViewsPropertyInt32CurrentViewInt32UGetSupportedViews()StringGetViewMarne(Int32viewID)BooleanSetVlew(Int32vjewZD>_________表1129控制模式類320還包括范圍值模式(RangeValuePattern)類,它揭示了反映控制在一個(gè)有限范圍內(nèi)管理值的能力的相關(guān)屬性集。RangeValuePattern類傳送控制有效的最小和最大值及其當(dāng)前值。RangeValuePattern類含有自動(dòng)客戶300用以取得單元當(dāng)前值和值域的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的RangeValuePattern類。classSystem.Windows'Automation.RangeValuePatternread-onlyAutomationPropertyMaximumPropertyread-onlyAut加ationPropertyMinimumPropertyread-onlyAutomationPatternPatternObjectMaximum_ObjectMinimum_表12控制模式類320還包括滾動(dòng)模式(ScrollPattern)類,它表示可以改變它們可視區(qū)域的UI單元。ScrollPattern類包含自動(dòng)客戶300用以操作能通過(guò)滾動(dòng)改變其可視區(qū)域部分的單元的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的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)類,它表示管理選擇的容器。相關(guān)選擇項(xiàng)模式(SelectionltemPaUern)類包含自動(dòng)客戶300用以操作能被選擇和取消選擇的單元的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的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時(shí)nlsSelectable(LogicalElementel)BooleanlsSelected(LogicalEle鵬ntel)BooleanRemoveElementFrofnSelection(LogicalBl柳entel>BoolsanSelectBl柳幼t(Log:lcalBle肺ntel〉_表15控制模式類320還包括分類模式(SortPattern)類。SortPattern類含有自動(dòng)客戶用以操作可對(duì)其子單元分類的容器單元的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的SortPattern類。_classSystem.Windows.Automation,SortPatternread-cmlyAutomationPropertyDepthPropertyread-onlyAutomationPropertyKeysPropertyread-onlyAutomationPropertyMaintainsSortOrderPropertyread-onlyAutoma"onPropertyOrderPropertyread-onlyAuto加tionPatternPatternInt32Depth______._一31BooleanMaintai加SortOrderStringGetKeyName(Int32key)Int32UGetKeys()SortlnformationJGetOrder()BooleanSortISortInformationHnewOrderJ表16控制模式類320還包括值模式(ValuePattern)類,以代表表示一個(gè)值的UI單元。ValuePattern類含有客戶300用以操作具有與其相關(guān)的值的單元的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的ValuePattern類。classSyst柳.Windows,Automation.ValuePatternread-onlyAutomationPropertyIsReadOnlyPropertyread-onlyAutomationPatternPatternread-on〗y(tǒng)AutomationPropertyValueAsObjectPropertyread-onlyAutomationPropertyValueABStringPropertyPropertiessBooleanIsReadOnlyobjectValueAsObjectStringValueAsStringBooleanSetValue(Objectval)__表17控制模式類320還包括可視信息模式(VisuallnformationPattern)類,它可以用于表示傳送信息給用戶的圖像或動(dòng)畫相關(guān)的信息。VisualInformationPa1:tern類含有自動(dòng)客戶300用以操作具有傳送信息給用戶的圖像或動(dòng)畫的單元的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的VisuallnformationPattern類。classSystem.Windows.Automation,F"lds:read-onlyAutomationPropertyInformationPropertyread-onlyAutomationPatternPatternPropertiessInt32Information_表18控制模式類320還包括窗口模式(WindowPattern)類,它作為窗口模式的封裝類。WindowPattern類含有自動(dòng)客戶300用以操作用戶桌面上窗口的字段、屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的WindowPattern類。<table>tableseeoriginaldocumentpage33</column></row><table>客戶側(cè)API300還包括輔助類350。該輔助類包括表示屬性、事件和模式識(shí)別符的多個(gè)類以及使用事件機(jī)制和輸入特征的助手類。輔助類350可以包括自動(dòng)標(biāo)識(shí)符(Automationldentifier)類。Automationldentifier類是用于基于對(duì)象識(shí)別的識(shí)別符的基類。由于僅例示了導(dǎo)出類,因此,這個(gè)類有效地抽象化。輔助類350另外包括表示用于在存取系統(tǒng)200中識(shí)別事件的一種類型的自動(dòng)事件(AutomationEvent)類。輔助類350還包括自動(dòng)模式(AutoraationPattern)類,表示用于在存取系統(tǒng)200中識(shí)別控制模式的一種類型。輔助類350還包括自動(dòng)屬性(AutomationPr叩erty)類,表示用于在存取系統(tǒng)200中識(shí)別屬性的一種類型。輔助類350可以進(jìn)一步包括自動(dòng)事件參數(shù)(AutomationEventArgs)類,表示用于事件的控制模式或定制事件參數(shù)??蛻?00接收該類的實(shí)例(instance)和定制事件。AutomationEventArgs類用于將有關(guān)自動(dòng)事件的信息傳送給客戶300。輔助類350還可以包括用于UI事件的自動(dòng)屬性改變事件參數(shù)(AutomationPropertyChangedEventArgs)類??蛻?00接收該類的實(shí)例和屬性變化事件。AutomationPropertyChangedEventArgs類用于將有關(guān)屬性變化的事件的信息傳送給客戶300。輔助類350還可以包括邏輯結(jié)構(gòu)變化事件參數(shù)類。用于UI事件的LogicalStructureChangedEventArgs類為客戶300提供該類的實(shí)例以及邏輯樹變化的事件。LogicalStructureChangedEventArgs類用于將有關(guān)邏輯結(jié)構(gòu)變化的信息傳送給客戶300。輔助類350還可以包括頂層窗口事件參數(shù)(TopLevelWindowEventArgs)類,用于與UI事件一起使用為客戶300提供具有定制事件的該類的實(shí)例。TopLevelWindowEventArgs類用于將有關(guān)頂層窗口事件的信息傳送給客戶300。頂層窗口是父節(jié)點(diǎn)為桌面的窗口。術(shù)語(yǔ)"已開啟(叩ened)"的使用表示新的頂層窗口出現(xiàn)在用戶面前。術(shù)語(yǔ)"已關(guān)閉(closed)"的使用表示頂層窗口已經(jīng)撤消。輔助類350還可以包括樹加載事件參數(shù)(TreeLoadEventArgs)類。該TreeLoadEventArgs類是用于UI事件的定制事件參數(shù)類??蛻?00可接收該類的實(shí)例和樹加載事件。TreeLoadEventArgs用于將有樹加載事件的信息傳送給客戶300。輔助類350還可以包括Vkey類,它為輸入相關(guān)的方法提供了常量。輔助類350還可以包括NoClickablePointExc印tion。當(dāng)在可點(diǎn)擊點(diǎn)的邏輯單元中出現(xiàn)錯(cuò)誤時(shí)就產(chǎn)生該異常。當(dāng)界定矩形為空,沒(méi)有寬或高,或該點(diǎn)的邏輯單元已變化就會(huì)發(fā)生錯(cuò)誤。輔助類350還可以包括執(zhí)行幾個(gè)類以接收事件通知。聚焦變化事件參數(shù)(FocusChangedEventArgs)用于將有關(guān)聚焦變化事件的信息傳送給客戶。如圖9所示,提供者側(cè)API440包括提供者自動(dòng)類442、提供者自動(dòng)接口448和提供者原始單元接口450。提供者側(cè)API440還包括控制模式提供者接口460和輔助類480。輔助類480可以與輔助類350共享使用和通信信息,例如屬性識(shí)別符、事件識(shí)別符、模式識(shí)別符和基本類型(如表示矩形或點(diǎn))的類的類型。其它特征可以是對(duì)提供者輔助類480獨(dú)有,或?qū)蛻糨o助類350所獨(dú)有的。例如,Vkey類就僅存在于客戶輔助類350中。提供者自動(dòng)類442最好包括自動(dòng)互用性提供者(AutomationlnteropProvider)類502,如圖10所示。Automationlnter叩Provider類502可以包括具有Win32或第三方自動(dòng)執(zhí)行的存取系統(tǒng)200所使用的方法。AutomationlnteropProvider類502含有Win32或第三方UI自動(dòng)提供者側(cè)執(zhí)行所使用的屬性和方法。下表說(shuō)明了根據(jù)本發(fā)明實(shí)施例的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自動(dòng)提供者(AutomationProvider)類500是含有具有窗口客戶平臺(tái)(WindowsClientPlatform)的存取系統(tǒng)200所使用的方法的相似類(similarclass)。提供者側(cè)API440還包括提供者自動(dòng)接口448。提供者自動(dòng)接口448可以包括自動(dòng)屬性互用性提供者(IAutomationPropertylnteropProvider)接口447,由Win32或第三方執(zhí)行以揭示存取系統(tǒng)200默認(rèn)揭示的屬性上的附加屬性。提供者自動(dòng)接口448還可以包括自動(dòng)屬性提供者(IAutomationPropertyProvider)接口449。該接口449類似于接口447,但可以由本機(jī)窗口客戶平臺(tái)提供者執(zhí)行以揭示除存取系統(tǒng)200默認(rèn)揭示的那些屬性之外的屬性。提供者原始單元接口450可以包括原始單元提供者35(IRawElementProvider)接口456。IRawElementProvider接口456定義了方法,所述方法包括由本機(jī)窗口客戶平臺(tái)、Win32或第三方提供者執(zhí)行并由存取系統(tǒng)200調(diào)用以返回相關(guān)單元,例如第一子節(jié)點(diǎn)、最后子節(jié)點(diǎn)、下一繼承者和父節(jié)點(diǎn),和返回特定或所有本機(jī)和UI自動(dòng)屬性。IRawElementProvider接口456進(jìn)一步為控制模式返回提供者對(duì)象。IRawElementProvider接口456由存取系統(tǒng)200執(zhí)行,并與特定單元相關(guān)的功能的提供者進(jìn)行互動(dòng)。在下表中提供了一種IRawElementProvider接口456實(shí)施例的實(shí)例。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或第三方提供者執(zhí)行。該接口452用于管理與任何特定單元無(wú)關(guān)的事件和其它功能。而附加原始單元接口450可以包括原始單元上下文提供者(IRawElementContextProvider)接口458,并可由本機(jī)窗口客戶平臺(tái)提供者執(zhí)行,并用于管理與任何特定單元無(wú)關(guān)的事件和其它功能。一個(gè)IRawElementContextProvider接口458的實(shí)施例在下表中示出。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提供者側(cè)API440可以包括控制模式提供者接口460。每個(gè)控制模式具有提供者接口460,由將控制模式揭示給存取系統(tǒng)200的對(duì)象執(zhí)行。例如,應(yīng)用程序窗口提供者(IApplicationWindowProvider)接口揭示了與應(yīng)用程序頂層窗口相關(guān)的狀態(tài)和信息。下述的控制模式提供者接口460包括可以由基于HWND和第三方提供者執(zhí)行的互用性提供者(Inter叩Provider)接口。控制模式提供者接口460還可以包括可以由窗口客戶平臺(tái)提供者機(jī)內(nèi)執(zhí)行的提供者接口。控制模式提供者接口460還可以包括應(yīng)用程序窗口提供者(IApplicationWindowProvider)接口。該IApplicationWindowProvider或IApplicationWindowInteropProvider接口可以揭示通常與頂層應(yīng)用程序窗口關(guān)聯(lián)的狀態(tài)和信息。該接口通??梢杂商峁┱邎?zhí)行以揭示操作應(yīng)用程序主窗口的功能??刂颇J教峁┱呓涌?60還可以包括展開和收縮提供者(IExpandColl叩seProvider)接口或IExpandCollapselnteropProvider接口。該接口揭示了能展開以顯示更多內(nèi)容或收縮以隱藏內(nèi)容的控制能力。該IExpandCollapseProvider接口可以結(jié)合Hierarchyltera模式(下面將描述)得到支持提供類似樹的狀態(tài),但它對(duì)于單獨(dú)的開啟和關(guān)閉控制還是相關(guān)的。諸如工具欄、組合框和菜單的UI單元可包括有關(guān)的執(zhí)行??刂颇J教峁┱呓涌?60還可以包括網(wǎng)格提供者(IGridProvider)接口或工GridlnteropProvider接口。該IGridProvider接口揭示了基本網(wǎng)格功能,包括網(wǎng)格大小和特定單元格的信息運(yùn)動(dòng)。網(wǎng)格項(xiàng)提供者(IGridltemProvider)或IGridltemlnteropProvider可以提供附加的控制模式提供者接口460。IGridltemProvider接口表示在網(wǎng)格中的項(xiàng)。該接口可以僅包括屬性,而不包含方法。IGridltemProvider或IGridltemlnter叩Provider接口由提供者執(zhí)行以對(duì)操作揭示網(wǎng)格中單元格功能的控制的功能進(jìn)行揭示??刂颇J教峁┱呓涌?60還可以包括層次項(xiàng)提供者(IHierarxhyltemProvider)或IHierarchyltemlnteropProvider接口。客戶300獨(dú)立于UI單元在邏輯樹222中的關(guān)系來(lái)遍歷它們之間的層次關(guān)系。層次關(guān)系定義為非圓形(noncircular)的。執(zhí)行該接口的UI單元包括菜單和列表視圖控制。附加控制模式提供者接口460可以包括激活提供者(IInvokeProvider)或IInvokeInteropProvider接口。該激活提供者接口可以由與項(xiàng)具有單一、明確關(guān)系的動(dòng)作的對(duì)象來(lái)執(zhí)行。這些對(duì)象通常是無(wú)狀態(tài)的(stateless),激活它們不會(huì)對(duì)它們自身的狀態(tài)發(fā)生變化,但會(huì)在應(yīng)用程序的更大上下文范圍中引起變化。執(zhí)行IInvokeProvider接口的UI單元包括按鈕和超鏈接菜單項(xiàng)。多視圖提供者(IMultipleViewProvider或IMultipleViewInter叩Provider)接口提供附加控制模式接口460。該多視圖提供者接口可以揭示在同一信息、數(shù)據(jù)或子節(jié)點(diǎn)集中多種表示之間切換的單元能力。該模式應(yīng)該在控制當(dāng)前內(nèi)容視圖的容器上執(zhí)行??刂颇J教峁┱呓涌?60可以包括范圍值提供者(IRangeValueProvider)或(IRangeValuelnteropProvider)接口。范圍值提供者接口揭示了反映管理有限范圍內(nèi)值的一控制的能力的相關(guān)屬性集。接口將傳送一控制的有效最小和最大值及其當(dāng)前值。執(zhí)行該接口的UI單元包括在進(jìn)程欄和滾動(dòng)條上的數(shù)字旋轉(zhuǎn)器(numericspinner)。滾動(dòng)提供者(IScrollProvider或IScrollInteropProvider)接口可以作為附加控制模式提供者接口460提供。接口揭示了通過(guò)滾動(dòng)其內(nèi)容改變其可視區(qū)域部分的一控制的能力,該區(qū)域?qū)τ脩羰强梢姷摹T摻涌诒硎玖藵L動(dòng)其內(nèi)容,例如列表框、樹視圖或其它保持內(nèi)容區(qū)域大于控制的可視區(qū)域的容器的UI單施例。interfaceSyst柳.Windows.AutomationInteropProvider,IScrollInteropProviderBooleanScroll(ScrollAroountverticalftmount)BooleanScroll2ntoView(IRawElementPtoviderre.Booleanstart〉BooleanSetScrollPercent(SinglehorizcmtaJPercent,SingleverticalPercent)_表23附加控制模式提供者接口460包括由標(biāo)識(shí)選擇的提供者(ISelectionByIDProvider或ISelectionByIDInteropProvider)接口。該接口表示為容器單元提供在其所含有的項(xiàng)之間進(jìn)行選擇。標(biāo)識(shí)選擇提供者接口是用于不具有邏輯單元子節(jié)點(diǎn)的控制的提供者側(cè)接口??蛻魧言摲椒醋魅缤摽刂凭哂凶鳛樽庸?jié)點(diǎn)的邏輯單元的方法一樣。執(zhí)行該接口以幫助提供者揭示操作可選擇和未經(jīng)選擇容器中單元的功能。該接口實(shí)施例在下表中示出。interfaceSyBt柳,Windows.Automation.InteropProvider.ISelectionBylDInteropProviderBooleanAddSelect丄onIDToSelection<Int32selectionID)StringGetSelectionIDName(Int32selectionID)IntJGetSupportedSelec"onsIDa()BooleanIsSelected(Int32selectioniD)BooleanRemoveSelectionIDFroraSelection(Int32selectionID)_BooleanSelectElementBySelec"onID(Int32selectioiUD1_表24控制模式提供者接口460還可以包括選擇提供者(ISelectionProvider或ISelectionlnteropProvider)接口。該選擇提供者接口表示管理選擇的容器,并且由提供者執(zhí)行以揭示操作含有可選擇單元的單元的功能。該接口的實(shí)施例在下表中示出。interfaceSystem.Windows.Automation,interopprovider,ISelectionlnteropProviderBooleanAtLeastOneSe1ecticmRequiredIEnumeratorSelectionBooleanSupportsMultipleSelectionBooleanAddElementToSelection(IRawElementProviderel)BooleanIsSelectable(IRawElementProviderel}BooleanIsSelected(IRawElementProviderel)BooleanRemoveElementFromSelection(IRawElementProviderel)BooleanSelectElement(IRawElementProviderel>_________表25控制模式提供者接口460另外包括選擇項(xiàng)提供者(ISelectionltemProvider或ISelectionltemlnteropProvider)接口。該接口定義了可選擇的項(xiàng),并揭示了功能,因此,它可以被選擇或不被選擇??刂颇J教峁┱呓涌?60還可以包括分類提供者(ISortProvider或ISortlnter叩Provider)接口。該接口揭示容器當(dāng)前分類次序,并允許客戶可編程地重新分類其單元。值提供者(IValueProvider或IValuelnteropProvider)接口可以由控制模式提供者接口460執(zhí)行以表示和操作具有相關(guān)值的單元。可視信息提供者(IVisualInformationProvider或IVisualInformationlnteropProvider)接口可以包含在控制模式提供者接口460中以揭示有關(guān)傳送信息給用戶的圖像或動(dòng)畫的信息。窗口提供者(IWindowProvider或IWindowInteropProvider)接口還可以包括在控制模式提供者接口460中以揭示改變單元在屏幕位置或大小以及改變可視狀態(tài)并關(guān)閉它的一單元的能力。下表示出該接口的實(shí)例。interfaceSyst柳.Windows.Automation.InteropProvider.lWindowInteropProviderVoidClose()BooleanMoveTo(Int32x,Int32y)BooleanResize(Int32width,Int32heighc)BooleanSetVisualState(WicidowVisualStatestate)表26提供者側(cè)API440還可以包括輔助類480。該輔助類480基本等同于在客戶側(cè)API305中的類。如上所述,客戶和提供者可以共享輔助類。結(jié)合圖10進(jìn)一步描述該特征。圖10示出客戶側(cè)API305、存取系統(tǒng)核心200和服務(wù)器側(cè)API440之間的互動(dòng)。該客戶應(yīng)用程序300執(zhí)行自動(dòng)類312、邏輯單元類314、原始單元類316或控制模式類320以通過(guò)存取系統(tǒng)核心201獲得信息??蛻魬?yīng)用程序300還執(zhí)行客戶輔助類350和輸入類340。圖10說(shuō)明結(jié)合使用Win32Run12的執(zhí)行A(10)和使用WCPRun的執(zhí)行B(20)的提供者側(cè)API440。執(zhí)行A按需使用自動(dòng)互用性提供者接口502、原始單元提供者接口456、原始單元上下文互用性提供者接口452以及控制模式接口460。執(zhí)行B按請(qǐng)求使用自動(dòng)提供者接口500、原始單元提供者接口456、自動(dòng)屬性提供者接口448、原始單元上下文提供者接口458和控制模式接口460。執(zhí)行IO和20都使用提供者輔助類480。如上所述,提供者輔助類基本與客戶輔助類350相同,或可以與客戶輔助類350共享一些類型,如共享輔助類510所示。如上所述,共享輔助類510可以包括客戶和提供者對(duì)傳送信息,例如屬性標(biāo)識(shí)符、模式標(biāo)識(shí)符和事件標(biāo)識(shí)符的類型進(jìn)行共享。在操作中,客戶側(cè)API305允許客戶300取得邏輯樹。功能包括1)從點(diǎn)到點(diǎn)的邏輯單元;2)來(lái)自事件的邏輯單元;3)當(dāng)前聚焦的邏輯單元。如上所述,邏輯單元表示UI組件,可能是一控制、控制的一部分、或一容器或邏輯分組(即對(duì)話、窗格或框架)??刂瓶梢愿鶕?jù)其功能顯著變化。因此,不同的接口用于表示與特定控制類型關(guān)聯(lián)的功能。然而,這些特定控制接口是從表示對(duì)所有控制都公用的功能的公用基本接口中獲得。公用基本接口含有核心類310,它包括1)用于瀏覽邏輯樹222的方法;2)取得屬性值的通用方法;3)訪問(wèn)所支持特定控制接口的方法。在瀏覽邏輯樹222中,每個(gè)基礎(chǔ)應(yīng)用程序UI技術(shù)將為瀏覽提供其自身的技術(shù)。為開始使用應(yīng)用程序中的存取系統(tǒng),客戶300可以做下列事之一1)使用來(lái)自自動(dòng)類312的"AddTopLevelWindowEventHandler"方法以揭示事件中在桌面上或句柄中出現(xiàn)的新UI,登記其它事件,并由此從任意進(jìn)程接收事件;2)從自動(dòng)類312中使用一種"査找"方法以定位感興趣的UI和把特定UI段作為目標(biāo);3)使用自動(dòng)類312中一些其它的方法以揭示感興趣的UI,例如查找窗口句柄或屏幕上某點(diǎn),并使用該句柄或點(diǎn),獲得作為監(jiān)聽事件參照使用的邏輯單元;或4)使用自動(dòng)類312中的"AddFocusChangedEventHandler"以追蹤輸入聚焦并在當(dāng)前聚焦的UI上登記事件。客戶側(cè)API305和服務(wù)器側(cè)API440用于滿足客戶300的需要。下述實(shí)例用于說(shuō)明客戶如何使用客戶側(cè)API305和隨后如何激活服務(wù)器側(cè)API440以向客戶300提供用戶接口信息。頂層窗口事件包括與菜單和組合框落下或任何將桌面作為父節(jié)點(diǎn)的特征相關(guān)的事件。在本發(fā)明的實(shí)施例中,AddTopLevelWindowEventHandler方法用于接收開啟和關(guān)閉頂層窗口的通知。調(diào)用AddTopLevelWindowEventHandler將獲得在當(dāng)前桌面上新頂層窗口開啟或頂層窗口關(guān)閉的通知。RemoveTopLevelWindowEventHandler方法提供了一種機(jī)制以停止接收在桌面上頂層窗口開啟或關(guān)閉的通知。該方法使用調(diào)回(callback)對(duì)象以識(shí)別該聽眾。因此,至URemoveTopLevelWindowEventHandler方法的對(duì)象與至UAddTopLevelWindowEventHandler的對(duì)象相同。對(duì)于每個(gè)新打開的頂層窗口從提供者側(cè)API440調(diào)用一方法。同樣,一旦當(dāng)頂層窗口關(guān)閉,存取系統(tǒng)200可以調(diào)用一方法。為了接收這些通知,客戶300調(diào)用AddTopLevelWindowEventHandler方法。另一類型的事件是聚焦事件??蛻?00經(jīng)常請(qǐng)求一種追蹤聚焦的方法。在微軟窗口0S中,這是很難實(shí)現(xiàn)的。例如,當(dāng)下拉菜單(例如在微軟的Word中的文件菜單),在用戶沿每個(gè)項(xiàng)向下移動(dòng)光標(biāo)時(shí),菜單中的項(xiàng)就獲得聚焦。當(dāng)該菜單關(guān)閉(例如用戶按下ESC鍵),就不會(huì)發(fā)送聚焦事件。實(shí)際上,對(duì)聚焦變化感興趣的客戶必須監(jiān)聽大量事件,并找出這些事件中哪些事件邏輯上表示聚焦變化。在本發(fā)明的一個(gè)實(shí)施例中,自動(dòng)類312中的AddFocusChangedEventHandler方法可以用于告知監(jiān)聽者聚焦變化事件??蛻?00可以規(guī)定隨同該方法或其它事件登記方法返回一組屬性。客戶300調(diào)用RemoveFocusChangedEventHandler方法以停止接收聚焦變化的通知。該方法使用調(diào)回對(duì)象來(lái)識(shí)別該監(jiān)聽者,并且在此情況下,給RemoveFocusChangedEventHandler方法中的對(duì)象禾口給AddFocusChangedEventHandler過(guò)程中的對(duì)象相同。當(dāng)聚焦變化時(shí),為了告知客戶300,存取系統(tǒng)200將從提供者側(cè)自動(dòng)類442中調(diào)用例如RaiseFocusChangedEvent的方法。屬性變化事件是在當(dāng)邏輯單元的屬性發(fā)生變化時(shí)被激活。在本發(fā)明的實(shí)施例中,客戶300從自動(dòng)類312中調(diào)用AddPropertyChangedEventHandler方法以接收屬性變化的通知。當(dāng)在AddPr叩ertyChangedEventHandler所規(guī)定的邏輯單元樹中的一個(gè)邏輯單元上的屬性值發(fā)生變化,存取系統(tǒng)200就從提供者側(cè)API440中激活提供者側(cè)方法。一個(gè)范圍參數(shù)指示事件應(yīng)該針對(duì)哪些單元被激活。例如,傳遞窗口的根邏輯單元和對(duì)后代的請(qǐng)求限制了對(duì)該窗口的屬性變化調(diào)回。如果范圍參數(shù)設(shè)定為樹中的所有單元,那就忽略所述范圍,并將把桌面上出現(xiàn)的任何特定屬性變化都發(fā)送??蛻?00可以多次調(diào)用具有不同屬性集和/或不同調(diào)回對(duì)象的AddPr叩ertyChangedEventHandler。存取系統(tǒng)200提供的通知指示了所改變的屬性;新屬性值;以及如果可提供的話還包括舊屬性值??蛻?00將調(diào)用RemovePropertyChangedEvenHandler方法來(lái)停止接收屬性變化的通知。該方法可以使用范圍單元和調(diào)回對(duì)象來(lái)識(shí)別該監(jiān)聽者,并且在這種情況下,傳送的對(duì)象必須與傳送給AddPropertyChangedEventHandler的對(duì)象相同。提供者自動(dòng)類442包括RaiseAutomationPropertyChangedEvent方法以告知客戶300自動(dòng)屬性的變化??蛻糇詣?dòng)類312中的AddAutomationEventHandler方法可以使客戶300接收控制事件。范圍參數(shù)可用于指示事件應(yīng)該針對(duì)哪些單元被激活。例如,傳遞窗口的根邏輯單元和對(duì)后代的請(qǐng)求將限制該窗口的事件。如果需要樹中的所有單元,那就將把桌面上的所有事件都發(fā)送。RemoveAutomationEventHandler方法可以用于停止接收控制的事件。該方法可以使用范圍單元、調(diào)回對(duì)象和事件識(shí)別符以識(shí)別監(jiān)聽者。在這種情況下,傳送的對(duì)象必須與傳送給AddAutomationEventHandler方法的對(duì)象相同。提供者自動(dòng)類442包括RaiseAutomationEvent方法以告知客戶300事件。當(dāng)客戶應(yīng)用程序300激活A(yù)ddAutomationEventHandler方法,而特定控制事件也被激活且該事件源是AddAutomationEventHandler中規(guī)定的邏輯單元樹中的一個(gè)邏輯單元時(shí),存取系統(tǒng)200就從提供者側(cè)API440調(diào)用方法。當(dāng)控制事件被激活,通常就有特定事件的信息可用??梢哉{(diào)用RemoveAllEventHandlers方法來(lái)停止接收任何事件。這是一種在客戶應(yīng)用程序關(guān)閉之前進(jìn)行清空的快速方法。當(dāng)終止應(yīng)用程序時(shí),最好使用該撤消方法。當(dāng)邏輯單元樹結(jié)構(gòu)變化時(shí),就激活邏輯結(jié)構(gòu)變化事件。執(zhí)行AddLogicalStructureChangedEventHandler方法以接收在邏輯單元樹中結(jié)構(gòu)變化的通知。當(dāng)邏輯單元被加入、撤消或無(wú)效,就調(diào)用特定調(diào)回對(duì)象上的方法??梢哉{(diào)用RemoveLogicalStructureChangedEventHandler方法以停止接收邏輯單元樹變化的事件。該方法可以使用調(diào)回對(duì)象和范圍單元以識(shí)別監(jiān)聽者。在這43種情況下,傳送的對(duì)象必須與傳送給AddLogicalStructureChangedEventHandler的對(duì)象相同。提供者自動(dòng)類442包括RaiseLogicalStructureChangedEvent方法以告知客戶300邏輯結(jié)構(gòu)的變化。UI自動(dòng)服務(wù)器或提供者側(cè)API440包括服務(wù)器或基礎(chǔ)UI引擎可以調(diào)用的方法以完成屬性變化通知。當(dāng)UI變化時(shí),服務(wù)器400可以調(diào)用這些通知方法以產(chǎn)生合適的參數(shù)。本發(fā)明已經(jīng)結(jié)合特定實(shí)施例進(jìn)行了描述,其目的是為了說(shuō)明而不是進(jìn)行限制。在不背離本發(fā)明的范圍時(shí),其它實(shí)施例對(duì)于本領(lǐng)域的熟練技術(shù)人員來(lái)說(shuō)都是顯而易見的。如上所述,可以看出本發(fā)明能夠?qū)崿F(xiàn)上述所有目標(biāo),并且該系統(tǒng)和方法具有其他顯而易見和固有的優(yōu)點(diǎn)??梢岳斫饽承┨卣骷捌渥蛹鲜怯杏玫模o(wú)需參照其他特征及子集合使用。這也在該權(quán)利要的范圍中。權(quán)利要求1.一種在為客戶提供用戶接口信息的存取系統(tǒng)中執(zhí)行的提供者側(cè)工具系統(tǒng),該存取系統(tǒng)包括一種從提供者側(cè)向客戶傳送用戶接口信息的機(jī)制,以及有選擇地揭示用戶接口信息的邏輯樹,所述提供者側(cè)工具包括提供者側(cè)自動(dòng)類,包括為客戶提供事件通知的工具;提供者側(cè)自動(dòng)接口,用于揭示用戶接口屬性;原始單元接口,用于返回與特定相關(guān)單元有關(guān)的信息;以及原始單元上下文接口,用于管理與特定單元無(wú)關(guān)的事件和功能。2.如權(quán)利要求l所述的系統(tǒng),其特征在于,提供者側(cè)自動(dòng)類包括產(chǎn)生自動(dòng)事件的工具。3.如權(quán)利要求l所述的系統(tǒng),其特征在于,提供者側(cè)自動(dòng)類包括產(chǎn)生屬性改變事件的工具。4.如權(quán)利要求l所述的系統(tǒng),其特征在于,提供者側(cè)自動(dòng)類包括產(chǎn)生聚焦改變事件的工具。5.如權(quán)利要求l所述的系統(tǒng),其特征在于,提供者側(cè)自動(dòng)類包括產(chǎn)生邏輯結(jié)構(gòu)改變事件的工具。6.如權(quán)利要求l所述的系統(tǒng),其特征在于,進(jìn)一步包括控制模式提供者接□。7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括應(yīng)用程序窗口提供者接口,用于揭示與頂層應(yīng)用程序窗口相關(guān)的狀態(tài)和信息。8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括展開和收縮接口,用于隱藏和顯示內(nèi)容。9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括網(wǎng)格提供者接口,用于揭示基本網(wǎng)格功能。10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括層次項(xiàng)提供者接口,用于允許客戶在用戶接口單元之間遍歷層次關(guān)系。11.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括激活提供者接口,供執(zhí)行單一動(dòng)作的對(duì)象使用。12.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括多視圖提供者接口,用于揭示對(duì)象在多個(gè)表示之間進(jìn)行切換的能力。13.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括范圍值提供者接口,用于揭示能夠管理有限值域的一組屬性的能力。14.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括滾動(dòng)提供者接口,用于揭示改變可視區(qū)域的能力。15.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括由標(biāo)識(shí)選擇提供者接口,用于揭示在項(xiàng)之間提供選擇的單元。16.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括選擇提供者接口,用于表示管理選擇的容器。17.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制模式提供者接口包括窗口提供者接口,用于揭示改變大小和位置的能力。18.—種用于通過(guò)存取系統(tǒng)將用戶接口信息提供給客戶的應(yīng)用程序接口系統(tǒng),所述存取系統(tǒng)包括一種從提供者側(cè)向客戶側(cè)傳送用戶接口信息的機(jī)制,以及有選擇地揭示用戶接口信息的邏輯樹,所述應(yīng)用程序接口系統(tǒng)包括客戶側(cè)應(yīng)用程序接口,用于輔助客戶獲得用戶接口信息,其中所述客戶側(cè)應(yīng)用程序接口包括自動(dòng)類、邏輯單元類、原始單元類、控制模式類以及輸入類;以及提供者側(cè)應(yīng)用程序接口,以響應(yīng)客戶請(qǐng)求,所述提供者側(cè)應(yīng)用程序接口包括提供者自動(dòng)類、提供者自動(dòng)接口、原始單元接口以及控制模式提供者接口。19.如權(quán)利要求18所述的系統(tǒng),其特征在于,進(jìn)一步包括由提供者側(cè)和客戶側(cè)使用的輔助類。20.—種用于通過(guò)存取系統(tǒng)將用戶接口信息提供給客戶的計(jì)算機(jī)執(zhí)行的方法,所述存取系統(tǒng)包括一種從提供者側(cè)向客戶側(cè)傳送用戶接口信息的機(jī)制,以及有選擇地揭示用戶接口信息的邏輯樹,所述方法包括提供客戶側(cè)應(yīng)用程序接口,用于輔助客戶獲得用戶接口信息,其中所述客戶側(cè)應(yīng)用程序接口包括自動(dòng)類、邏輯單元類、原始單元類、控制模式類以及輸入類;以及提供提供者側(cè)應(yīng)用程序接口,以響應(yīng)客戶請(qǐng)求,所述提供者側(cè)應(yīng)用程序接口包括提供者自動(dòng)類、提供者自動(dòng)接口、原始單元接口以及控制模式提供者接口。21.如權(quán)利要求20所述的方法,其特征在于,進(jìn)一步包括提供給提供者側(cè)和客戶側(cè)使用的輔助類。22.—種用于通過(guò)存取系統(tǒng)將用戶接口信息提供給客戶的計(jì)算機(jī)執(zhí)行的方法,所述存取系統(tǒng)包括一種從提供者側(cè)向客戶側(cè)傳送用戶接口信息的機(jī)制,以及有選擇地揭示用戶接口信息的邏輯樹,所述方法包括使用從客戶自動(dòng)類中所選擇的事件句柄來(lái)請(qǐng)求用戶接口信息;使用對(duì)應(yīng)的激活事件方法來(lái)激活提供者自動(dòng)類以提供用戶接口事件通知。23.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括使用邏輯單元工具來(lái)獲得用戶接口單元信息。24.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括使用客戶側(cè)原始單元工具來(lái)獲得有關(guān)原始單元樹中單元的原始單元信息。25.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括使用客戶側(cè)輸入類以提供模擬輸入的方法。26.如權(quán)利要求25所述的方法,其特征在于,進(jìn)一步包括模擬鼠標(biāo)輸入和鍵盤輸入。27.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括使用客戶側(cè)控制模式類以允許客戶與存取系統(tǒng)控制模式進(jìn)行互動(dòng)。28.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括執(zhí)行輔助工具以執(zhí)行附加功能。29.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括使用提供者側(cè)自動(dòng)接口以揭示附加屬性。30.如權(quán)利要求22所述的方法,其特征在于,包括執(zhí)行提供者原始單元接口,以從原始單元樹返回相關(guān)單元。31.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括執(zhí)行控制模式提供者接口,以揭示與定義的控制模式相關(guān)的狀態(tài)和信息。全文摘要描述了一種為客戶提供用戶接口信息的方法和系統(tǒng)。該方法和系統(tǒng)執(zhí)行一組應(yīng)用程序接口,以通過(guò)存取系統(tǒng)將用戶接口信息提供給客戶。存取系統(tǒng)包括一種從提供者側(cè)向客戶側(cè)傳送用戶接口信息的機(jī)制,以及有選擇地揭示用戶接口信息的邏輯樹,所述應(yīng)用程序接口系統(tǒng)包括客戶側(cè)應(yīng)用程序接口,用于輔助客戶獲得用戶接口信息。所述客戶側(cè)應(yīng)用程序接口包括自動(dòng)類、邏輯單元類、原始單元類、控制模式類以及輸入類。提供者側(cè)應(yīng)用程序接口包括提供者自動(dòng)類、提供者自動(dòng)接口、原始單元接口以及控制模式提供者接口。文檔編號(hào)H04N5/00GK101615122SQ20091016052公開日2009年12月30日申請(qǐng)日期2003年5月17日優(yōu)先權(quán)日2003年5月16日發(fā)明者B·麥克科恩,H·S·博恩斯,M·A·弗里德曼,P·J·里德,P·M·瓦格納,R·辛克萊申請(qǐng)人:微軟公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1