CN1487391A - 可访问性***事件机构和方法 - Google Patents
可访问性***事件机构和方法 Download PDFInfo
- Publication number
- CN1487391A CN1487391A CNA031231098A CN03123109A CN1487391A CN 1487391 A CN1487391 A CN 1487391A CN A031231098 A CNA031231098 A CN A031231098A CN 03123109 A CN03123109 A CN 03123109A CN 1487391 A CN1487391 A CN 1487391A
- Authority
- CN
- China
- Prior art keywords
- user interface
- incident
- information
- client computer
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
- Computer And Data Communications (AREA)
- Digital Computer Display Output (AREA)
- Telephone Function (AREA)
- Jib Cranes (AREA)
- Fittings On The Vehicle Exterior For Carrying Loads, And Devices For Holding Or Mounting Articles (AREA)
Abstract
在此描述向客户机提供用户接口信息的方法和***。一种在客户机-服务器环境中的事件机构,用于保持向客户机通知用户接口事件。该事件机构包括一个登记机构,用于使客户机进行登记以接收感兴趣的用户接口信息。一个用户接口自动客户机其接收来自该客户机的登记信息,并且在接收到该感兴趣的用户接口信息之后,把其传送到该客户机。一个用户接口自动服务器从该用户接口自动客户机接收登记信息,并且把该登记通知给一个用户接口引擎。该用户接口自动服务器另外从该用户接口引擎接收用户接口信息。该用户接口自动服务器包括用于滤除该客户机不感兴趣的信息的一个过滤设备,以及用于把该客户机感兴趣的信息通知给该用户接口自动客户机的通知设备。
Description
技术领域
本发明涉及辅助技术、自动测试和其它收集用户接口信息的产品以及这些产品与用户接口信息之间的交互作用。
背景技术
辅助技术(AT:assistive technology)产品用于帮助在学习、通信和对包含在计算机软件中并由其所显示的信息的访问方面需要协助的计算机用户。这些产品需要与计算机接口相关的信息。类似地,现有的自动测试产品和用户接口命令没备也需要关于用户接口的信息。目前,这些产品不具有用户接口(UI:user interface)信息的充足来源。有三种产品(客户机)需要来自其它方面的必要支持,以使它们:(1)收集关于应用程序的用户接口的信息;(2)与用于构建用户接口的技术无关地,编程地发现和询问UI元件;(3)产生键盘和指针输入;以及(4)理解当前可用的行为或功能的类型。目前没有一种技术能够把所有这些功能赋予一个AT产品。另外,当前的AT产品不总是与所有图形操作***(OS)技术相兼容,并且缺乏以集中的方式过滤和协调冗余或误导的通知。另一个缺点是当前的自动和可访问性基础结构不可扩展,因此需要在OS级别上改变,以增加新的功能。
另外,当前为了收集关于应用程序用户接口的信息,AT产品必须编写应用程序专用代码,以获得用于该用户的信息。编写该应用程序专用代码的过程是费时间并且需要经常维护的。当前自动的基础结构还缺乏以持续的方式过滤和协调冗余或误导的事件通知的功能。因此,事件客户需要独立地过滤信息。
当前的***使AT产品在三个级别上要求事件通知:(1)在桌面上的所有内容;(2)在一个特定的进程中(例如打开一个文字处理器);或(3)在特定进程中的一个线程(在该进程中工作的多个对象)。当前,当客户机接收一个事件时,它对出现该事件的一个特定窗口接收一个窗口句柄和其它信息位,以表示出现该事件的位置。一个客户机可以发出一个跨进程呼叫,以提取与该事件相关的UI对象。利用该对象,该客户机可以发出另一个跨进程呼叫,以要求关于该对象的信息。如果该客户机需要5个信息,则该客户机必须发出5个跨进程呼叫。跨进程呼叫非常慢,从而使用当前的可访问性基础结构收集UI信息的性能成本较高。这种已知情况在图8中示出。一个服务器应用程序12启动一个事件6。内核程序14确定必须被通知的客户机,并且把一个事件通知18发送到一个感兴趣的客户机10。该客户机10从服务器应用程序12通过进程边界2发出用于与事件通知18相关的对象的请求16。服务器应用程序12返回该对象20,然后客户机10可以开始发送用于与启动该事件的UI控制相关的信息的请求16。服务器应用程序12通过处理边界2把所请求的信息20返回到客户机10。
另一个当前选项使得客户机代码被作为一个动态链接库(.DLL)装载在一个进程中。该选项具有几个缺点。第一,它需要来自该***的协作,以把客户机代码装载到一个进程中。第二,由于一旦客户机代码被装载到一个应用程序进程中,则导致安全性问题,难以限制它所收集的信息。第三,作为一种用于客户机的有效技术,它必须装载到该***上的每个进程中。最好,仅仅被信任的客户机被装载到另一个应用程序的进程中。
另外,一个***需要把指定要接收的事件通知的功能给予该客户机。在已知***中,客户机需要发出多个跨进程呼叫,然后分析该信息,以确定它是否对该事件感兴趣。需要一种能够以更加有效的方式执行该事件过滤并且可以容易地被更新以支持新的***和应用程序事件的机构(mechanism)。另外,需要一种***,其仅仅使用被信任的组件,以减轻安全性问题。
当前,当搜索关于用户接口的信息时,该AT产品需要访问特定UI构架所固有的树。相应地,需要多个树来为多个UI构架传递用户接口信息。这些不同的树可能包含用户不感兴趣或不可见的信息,例如管理由终端用户所操作的可见UI控制的隐藏的容器对象。因此,需要仅仅具有用户感兴趣的节点的单个非统一的树。
需要一种解决方案,其解决AT产品、自动测试工具和命令设备的需要。该解决方案应当由所有图形OS技术所使用,并且使所有形式的UI和UI组件的变为可访问。
发明内容
本发明针对于一种用于向客户机提供用户接口信息的方法和计算机应用程序。在本发明的一个方面中,一种事件机构被提供在客户机-服务器环境中,用于保持把用户接口(UI)的变化通知给客户机。该事件机构包括一个登记机构,其使得客户机登记以接收感兴趣的UI信息。该事件机构还包括一个UI自动客户机,用于登记客户机以接收事件通知,以及用于在这些通知出现时把这些通知传送给客户机。该UI自动服务器另外接收来自UI构架的通知,并且包括用于除去客户机不感兴趣的事件的一个过滤机构,以及用于把剩余的感兴趣通知内容通知给UI自动客户机的通知机构。
本发明的另一个方面提供一种计算机执行的方法,用于收集关于感兴趣的UI单元的信息。该方法包括从客户机接收对特定用户接口信息的请求,并且通过UI自动服务器查询UI引擎,以确定所要求的UI信息是否可用。指定的UI信息被从UI自动服务器传送到UI自动客户机。
从下文的描述中,本领域的技术人员在阅读下文或者在实现本发明的过程中,下文所述的本发明的其它优点和新的特点将变得更加清楚。
附图说明
下面参照附图详细描述本发明,其中:
图1为适用于实现本发明的计算***环境的方框图;
图2为可访问性***、客户机环境和服务器环境之间的相互作用和方框图;
图3为示出可访问性***核心的组件的方框图;
图4(A)-4(D)示出从自然元件创建逻辑树;
图5为示出用于构建逻辑树的一系列处理的流程图;
图6示出一个对话框以及其组件形成逻辑元件;
图7为示出在激活本发明的事件机构中涉及的处理的流程图;以及
图8示出用于事件通知的一种已知***。
具体实施方式
示例操作环境
图1示出可以实现本发明的一种适当的计算***环境100的一个例子。该计算***环境100仅仅是一种适当的计算环境的一个例子,并且不是对本发明的使用范围或功能的限制。该计算环境100不应当被认为具有与在该示例的操作环境100中所示的任何一个组件或者其组合相关的从属关系或必要条件。
本发明可以在例如程序模块这样由计算机所执行的计算机可执行指令的一般环境中描述。通常,程序模块包括执行特定任务或采用特定抽象数据类型的例程、程序、对象、组件、数据结构等等。另外,本领域的技术人员将认识到本发明可以用其它计算机***结构来实现,包括手持设备、多处理器***、基于位处理器或可编程的消费电子产品、微计算机、主机计算机等等。本发明还可以在分布式计算环境中实现,其中任务由通过通信网格链接的远程处理设备所执行。在一个分布式计算环境中,程序模块可以位于包括存储设备的本地和远程计算机存储介质中。
参见图1,用于实现本发明的示例***100包括采用计算机101形式的通用计算设备,其中包括处理单元120、***存储器130、以及把包括***存储器在内的各种***组件与处理单元120相连接的***总线121。
计算机110一般包括多个计算机可读介质。例如但不限于,计算机可读介质可以包括计算机存储介质和通信介质。***存储器130包括采用例如只读存储器(ROM)131和随机存取存储器(RAM)132这样的易失性和/或非易失性存储器形式的计算机存储介质。包含例如在启动过程中用于在计算机120中的元件之间传输信息的基本例程的基本输入/输出***133(BIOS)一般被存储于ROM131。RAM132一般包含由处理单元120立即可访问和/或当前***作的数据和/或程序模块。例如但不限于,图1示出操作***134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图1示出对不可移动非易失性磁性介质读写的硬盘驱动器141、对可移动非易失性磁盘152进行读写的磁盘驱动器151、以及对例如CD ROM或者其它光介质这样的可移动非易失性光盘156进行读写的光盘驱动器155。可以用于示例操作环境中的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于盒式磁带、闪存卡、数字通用光盘、数字视频磁带、固态RAM、固态ROM等等。硬盘驱动器141一般通过接口140这样的不可移动存储接口连接到***总线121,并且磁盘驱动器151和光盘驱动器155一般通过例如接口150这样的可移动存储接口连接到***总线121。
上述和图1中示出的驱动器以及它们相关的计算机存储介质提供计算机可读指令、数据结构、程序模块以及用于计算机110的其它数据的存储。在图1中,例如硬盘驱动器141被示出为存储操作***144、应用程序145、其它程序模块146和程序数据147。请注意,这些组件可以与操作***134、应用程序135、其它程序模块136和程序数据137相同或不同。操作***144、应用程序145、其它程序模块146和程序数据147在此被给予不同的标号,以示出它们为不同的副本。用户可以把命令和信息通过例如键盘和通常称为鼠标、轨迹球或触摸板的指示设备161输入到计算机110。其它输入设备(未示出)可以包括话筒、游戏杆、游戏盘、卫星碟形天线、扫描仪等等。这些和输入设备通常通过与***总线相连接的输入接口160连接到处理单元120,但是可以由例如并行端口、游戏端口或者通用串行总线(USB)这样的其它接口和总线结构连接到***总线。监视器191和其它类型的显示设备还可以通过例如视频接口190这样的接口连接到***总线121。除了监视器之外,计算机还可以包括其它***输出设备,例如扩音器197和打印机196,其可以通过输出***接口195连接。
在本发明中的计算机110可以在使用到例如远程计算机180这样的一个或多个远程计算机的逻辑连接的联网环境中操作。远程计算机180可以是一个个人计算机,并且一般包括许多或所有上述对于计算机110描述的元件,但是在图1中仅仅示出一个存储设备181。图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还可以包括其它网络。
当用于LAN联网环境中时,计算机110通过网络接口或适配器170连接到LAN171。当用于WAN联网环境中时,计算机110一般包括调制解调器172或者其它用于通过例如互联网这样的WAN173建立通信的装置。内置或外置的调制解调器172可以通过用户输入接口160或者其它适当的机构连接到***总线121。在联网环境中,相对于计算机110或其部分示出的程序模块可以存储在远程存储设备中。例如但不限于,图1示出驻留在存储设备181上的远程应用程序185。应当知道,所示的网络连接是示例性的,可以使用在计算机之间建立通信链路的其它方式。
尽管没有示出计算机110的许多其它内部组件,但是本领域的普通技术人员应当知道这些组件和相互连接是公知的。相应地,关于计算机110的内部结构的其它细节不需要在本发明中公开。
可访问性***结构
如图2中所示,可访问性***200与客户机环境300和服务器环境400相互作用。可访问性***200可以在上文对图1所述的计算机环境100中实现。可访问性***200包括用于促进与客户机300的交互作用的客户机方可访问接口220、用于促进与服务器方400的交互作用的服务器方可访问接口230、以及可访问性***核心201。本发明的可访问性***200提供新的应用程序接口(API)、接口和用于编程访问一个用户接口(UI)的语法(metaphor)。可访问性***200使得应用程序自身和它们所使用的任何组件可访问。
客户机环境300最好包括一个辅助技术(AT)产品或者自动UI测试工具。服务器方400可以采用如图2中所示的多种不同的技术。服务器***410包括可以在第一种UI中找到的适配器412和核心414。服务器***420包括可以在第二种UI中找到的代理组件422和控制424,例如在来自美国华盛顿州雷蒙德的微软公司的微软操作***产品中的Win32用户接口。服务器***430包括可在替换的第三种UI找到的适配器432和内部OM434。
如图3中所示,包含在可访问性***200中的事件机构210依赖于用于促进与客户机环境300和服务器环境400的交互作用的UI自动客户机202和UI自动服务器204。UI自动客户机202和UI自动服务器204在下文中参照本发明的事件机构210更加详细地描述。本发明的可访问性***200给予客户机(AT产品)300如下功能:(1)收集关于应用程序的用户接口的信息;(2)与用于构建用户接口的技术无关地编程地发现和询问UI元件;(3)产生键盘和指针输入;以及(4)理解当前可用的行为或功能的类型。可访问性***200使得应用程序本身和它们的组件可访问。图2和3中所示的结构示出可访问性***200的5个主要方面,包括:(1)逻辑UI树;(2)控制模式;(3)事件机构;(4)输入API(未在本文献中包含);以及(5)属性。
UI访问逻辑树222
可访问性***200的一个集成组件是逻辑树222,它的一个例子在图4(D)中示出。树222包含在客户机方可访问性接口220中。
逻辑树222是UI元件的下层结构层级的筛选示图,没有包含必须由该控制或应用程序开发者所使用的一个分离树。另外,其切除几个明确的感兴趣或不感兴趣的属性,其表示一个结构元件是否应当被暴露该逻辑树222中。该可访问性***核心201利用该信息来产生过滤的UI逻辑树222,其反过来呈现给AT产品或测试结果。
逻辑树222是一个元件的树,每个元件表示一个控制、在一个控制中的项目或者分组结构,其可以是一个对话框、窗格或框架。逻辑树222的结构应当表示由用户所感知的应用程序的UI(即使该控制实际使用不同的下层结构来实现)。该树应当随着时间保持稳定。只要应用程序对用户来说看起来是相同的,则表示该应用程序的逻辑树222应当保持相同,即使在该场景背后的该应用程序的应用细节已经改变也是如此。由于结构和应用的原因而存在的自然元件,例如在微软操作***产品中的对象处理程序(shell)的“ShDocView”窗口不应该出现在该树中,因为用户没有看到它们。
逻辑树222是从能够统一多个不同的进程的多个片断中构建的单个树,从而它们对客户机是相同的。逻辑树222能够进行批量检索,并且能够对一列属性获得一个数值。在此时,用户通常已经调用一个跨进程呼叫,以要求该数值,该可访问性***200将通过使用逻辑树222来获取它们。
除了在一个已知***中在一个步骤内构造之外,该逻辑树222从被用于构建一个原始树的片断中构造。如图5中所示,3个主要的处理构造该逻辑树222。在处理72中,可访问性***200定位下层技术的自然元件,并且得到如图4(A)中所示的自然树。在处理74中,可访问性***200把自然元件相组合,以形成如图4(B)中所示的原始树20。最后,在处理76中,通过在原始树20中隐藏不感兴趣的组件而获得逻辑树222,如图4(D)中所示。
图4(A)示出从例如Win32用户接口或者任何其它可用的UI这样的下层技术的自然元件构造的两个自然树10和14。自然树10包括相互之间具有各种关系的一个父节点11和多个子节点12。类似地,自然树14包括具有多个子节点16的父节点15。该子节点16可以被称为其它子节点的同辈。
如图4(B)中所示,自然树10和14可以被组合以形成一个自然树20。自然树20包括具有两个子节点22和23的一个父节点21。子节点22具有后代23-29以及子节点30具有后代31-33。该原始树20是自然树10和14的组合,自然树10的节点形成节点22-29,并且自然树14的节点形成节点30-33。
尽管在图4(C)和图4(D)概括地示出一种方法,但是原始树20被转换为逻辑树222。为了从原始树20移到逻辑树222,开发者可以在原始树中***提示。开发者可以把在原始树20中的节点标记为“隐藏自身”或者“隐藏自身和子节点”或者为“隐藏节点的子节点”等等。开发者还可以把节点移到旁边,或者把节点置于子节点之前。在原始树20中的这些“提示”和改变被用于形成逻辑树222。例如,在图4(C)中,开发者把原始树20的节点24-26以及33标记为不感兴趣,如方框40和41所示。一般来说,包含用户不可见的元素的节点被标记为不感兴趣。以可见UI相关的节点一般被认为是感兴趣的,并且将包含在由AT客户机300所使用的逻辑树222中。如图4(B)中所示,被标记为不感兴趣的节点不被包含在逻辑树222中。
可访问性***200使用逻辑树222来查找关于事件的信息、***的状态、对象的位置和关于控制的信息。已有的***没有在它们的树内进行检查的功能。逻辑树222可以根据客户机300的优选项而被导航,并且无论服务器方应用程序是否正在使用也能够提供信息。
在操作中,如果客户机300需要为一个用户获得关于一个应用程序的信息,客户机300查找一个要按下的按键,并且观察按键上的文字。客户机300将调用一个API“查找元件”。该API将返回指向客户机方接口220的逻辑树222的一个位置的数值。通过逻辑树222,可访问性***200把UI的一个概况示图给予客户机300,而无论该应用程序是否正在使用。该概况模型包括结构、属性、事件和列表框、按键或其它UI组件期望共同具有的功能。
逻辑树222是作为UI的逻辑表示的单个统一树,并且被形成为仅仅包含客户机300感兴趣的元件的形状。相应地,不是强制AT产品过滤UI元件的结构层级并且猜测要被显示给终端用户的模型,逻辑树222显示精确地反应要被显示给终端用户的结构的层级。这大大地简化了向用户描述UI的AT产品的任务,并且帮助用户与应用程序相互作用。
由于该逻辑UI树222是可访问性***200的一个基本部分,可访问性***200的所有其它组件被设计为由逻辑树222所工作。例如,图6示出表现为具有非常简单结构的一个简单对话框60。但是,当通过当前可用的可访问性技术来观察时,该对话框60的结构非常复杂。它包含264个对象,AT产品必须进行过滤以发现对于终端用户有意义的对象。利用该可访问性***200以及它对逻辑UI树222的支持,具有该对话框60的开发者可以设置几个属性来向AT产品300显示图6中所示的如下结构。
如图6中所示,对于“运行”对话框,开发者可以把飞行窗口图案62和在63的“键入您要打开的程序名、文件夹、文档或互联网资源,然后用视窗打开它”表示为感兴趣的。开发者还可以把包括记事本、WORD、计算器等等的组合框64以及“确定”65、“取消”66和“浏览”67按键表示为感兴趣的。这向开发者提供一种低成本的机构,以标记它们的元件层级,从而通过该UI可访问性***200产生它们的应用程序的UI的逻辑表示。在此所示的每个特征可以由一个节点所表示,其与逻辑树222中的每个其它节点具有特定的关系。该逻辑表示对测试小组和AT产品或客户机300提供立即见效的优点。
一组API使得客户机300获得该树。功能包括:(1)从点到点的逻辑元件;(2)来自事件的逻辑元件;以及(3)当前被聚焦(关注)的逻辑元件。如上文所述,逻辑元件表示UI组件,可能是一个控制、控制的一部分或者一个容器或逻辑分组(即,对话框、窗格或框架)。控制在它们的功能性方面可以具有较大的变化。相应地,不同的接口被用于表示与特定的控制类型相关的功能。这些控制专用的接口从表示所有控制所共同的功能的公用基本接口而导出。公用基本接口包括:(1)用于导航该逻辑树222的方法;(2)用于获得属性值的一般方法;以及(3)用于访问所支持的控制专用接口的方法。在导航逻辑树222中,每个下层应用程序UI技术将提供其自身的技术用于导航。
尽管逻辑树222是用户非常感兴趣的,但是原始元件树20也用于一些重要的功能。尽管逻辑树222仅仅包含用户可以相关的元件,但是原始元件树20包含例如22这样的节点,其表示下层构架的应用结构。对于Win32UI片断,例如该树将包含表示HWND的节点。在一些方面中,原始元件树20为逻辑元件树222和下层构架自身的自然元件树之间的一个“过渡”。原始元件树20被用作为构建逻辑元件树222的基础,并且它是自然元件首先***到该***中的位置。
原始元件素20还可以用于调试和测试。它对于精确定位和描述一个特定的有问题的节点所在位置是有用的。关于基本原始元件节点的功能包括:用于导航原始元件树的方法;用于跳到相应的逻辑元件(如果存在的话)的方法;包含用于该元件的“调试字符串”的属性-例如,用于HWND节点的“HWND 0x483FE”;以及其它“在场景基础结构背后的”方法。这些其它方法允许进行命中测试和定位;事件;以及暴露构架可以容易提供的属性(例如,聚焦、使能)。
原始元件树20包括表示来自各种显示引擎的元件的节点22-33。原始元件树被用作为显示引擎把它们***到可访问性***200中开始点,并且从例如来自Win32的HWND这样的自然元件适配到一个统一的逻辑树222中的轻型适配器对象构建。它被另外用于处理包容过渡(hosting transition),其中一种技术包容另一种技术。由于原始元件树20是构建逻辑树222的基础,因此它可以被用于检查逻辑树222是否完成和连接,并且可以用于检查不被考虑的元件。该原始元件树20被进一步用于其它类似基础结构的任务:例如提供一些基本元件ID,以及提供一些基本构架提供的元件属性,例如聚焦、使能和定位。
基础元件树20不是用于AT产品或客户机300的主要来源,被用于逻辑导航,并且不暴露给终端用户。逻辑元件树20不能够用于捕获一个元件在树中的位置,从而它可以返回到一些未来的时间点。该逻辑元件树222执行所有这些功能。
原始元件树20一般可以从下层显示技术(HWND,元件)的原始元件机械地构建,而不需要得知被显示的逻辑元件。因此,它可以用于查找没有在该逻辑树222中考虑的原始元件。原始元件树20是一种有用的调试和诊断工具,因为它使得节点的位置的“堆栈”式描述被捕获。另外,已知的***把它们的树基于代码特定的标准,并且难以用不同的技术来实现。本方法使用一种普通的抽象“原始元件”类型,其可以通过或利用任何下层显示技术来实现。
为了获得原始元件树,调用原始元件根节点将得到一个桌面元件,通过确定该节点的父节点为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自动服务器。仅仅当有一个监听事件的客户机时,如果UI引擎要启动UI自动服务器通知,则该推荐是有用的。UI引擎将由此来避免可能的UI速度下降,以及避免不必要的装载代码模块。
然后,UI引擎206把UI事件通知给UI自动服务器204。UI自动服务器204把所请求的逻辑元件返回到客户机300,并且把包括客户机300请求的事件的属性在内的信息发送到客户机300。UI自动服务器204确定什么信息在客户机请求的范围内,并且仅仅当该信息是感兴趣时才通知逻辑元件。形成一个逻辑元件包括在UI自动服务器方预取客户机已经表明它将在处理事件时使用的属性组。例如,UI自动服务器204可以为一个组合框发现一个逻辑元件。该范围将是该组合框或其子节点。客户机300可以请求子节点/父节点/从属节点来定义在登记阶段的范围。
在UI自动服务器204确定信息是否在所请求范围内,它构建一个逻辑元件。UI自动客户机202通过对从UI自动服务器204接收所请求信息的目标应用程序进行对话,并且把对象路由到在客户机300上的一个适当的空间中,来服务于该客户机300。
当客户机300登记以接收事件通知时,创建该UI自动服务器204。例如,UI引擎运行微软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将获得随着逻辑元件返回的所请求的批量获取属性的组合。
对于每个监听的客户机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接收进程之外的事件,请求收集要被与事件通知一同返回的属性,以及对关于多个元件的事件进行登记。
事件机构210暴露:AT产品或测试应用程序用于登记事件的接口;AT产品对于用来接收事件通知的对象应用的接口;以及用于把UI事件通知给事件引擎的接口控制执行者。事件机构210被用于使得AT产品和测试应用程序独立于用来呈现UI的UI引擎而接收事件,并且使AT产品和测试应用程序跟踪顶级应用程序窗口和焦点,而与下层技术无关。
图2示出客户机300如何与可访问性***200交互作用。不存跨进程的全局事件管理。而是,每个可访问性***客户机300和服务器400具有它们自身的应用环境。客户机应用程序将仅仅接收用于支持可访问性***200的应用程序的事件。为了开始在一个应用程序中使用可访问性***事件,客户机300可以执行如下四个步骤之一:(1)使用“AddTopLevelWindowListener(添加顶级窗口听众)”API来发现在桌面上在用于该事件的处理程序中出现的新UI,登记其它事件,以及通过这种方式来从任何进程接收事件;(2)使用一个查找API来定位感兴趣的UI,并且把目标确定在一个特定的UI上;(3)使用一些其它装置来发现感兴趣的UI,例如查找一个窗口句柄,或者在屏幕上的一个点,以及使用该句柄或点,获取一个逻辑元件,以用作为用于监听事件的参考;或者(4)使用“AddFocusChangedListener(添加焦点改变的听众)”API来跟踪输入的焦点以及登记关于当前具有焦点的UI的事件。
顶级窗口是其父节点为桌面的窗口。使用术语“打开”表示一个新的顶级窗口被显示给用户。使用术语“关闭”表示一个顶级窗口已经被取消。
可访问性***服务器方接口230包括两个API,用于把被添加和除去的事件通知给可访问性***200。当客户机登记和取消登记事件时,UI自动客户机调用这些API。这使得UI引擎206获得关于在其工作环境中被请求的可访问性事件。
在可应用的情况下,事件与来自应用程序的逻辑元件树222的逻辑元件相关。在逻辑元件不可用的情况下,事件与人可读字符串或者表示事件的来源的其它公知对象相关。事件机构210在事件登记过程中根据用户提供的优选项提供过滤。通过在服务器使用客户的过滤优选项,在创建事件相关数据并且把它跨进程发送到客户机之前,事件机构210通过减小跨进程呼叫的数目而内在地提高进程之外的性能。事件机构210提供一种方式来在事件登记过程中指定对于事件感兴趣的逻辑元件的属性。事件机构210是可扩展的,而不需要主要操作***(OS)改变。尽管事件机构210可以使用被控制的代码来实现,但是不被控制的应用程序可以通过COM互用性而访问它。
在此有两个由AT服务器300所执行以处理事件的任务:(1)事件登记;以及(2)在回叫中处理事件。对于任何一个任务的一个重要要求是可用于被控制和不被控制的代码中。在本发明的一个实施例中,客户机300在登记事件时可以传送接口。当登记和UI引擎206回叫这些接口以通知听众时,客户机300传送实现公知接口的对象。在逻辑元件树222中有一个来源对象的情况中,每个回叫接收该来源元件和一个额外的参数。
由AT产品所实现的公知接口被使用作为返回事件的方式。下文的部分示出一些事件类型、登记的外观以及事件被接收的方式。
1.顶级窗口事件
顶级窗口事件包括与菜单和组合框下拉或者任何以桌面作为父节点的特征相关的事件。在本发明的一个实施例中,AddTopLevelWindowListener(添加项级窗口听众)方法被用于接收被打开和关闭的顶级窗口的通知。调用AddTopLevelWindowListener将获得用于被在当前桌面上打开的新的顶级窗口或者被关闭的顶级窗口的通知。一种RemoveTopLevelWindowListener(除去顶级窗口听众)方法提供一种机构来停止接收对于在桌面上被打开或关闭的项级窗口的通知。该方法使用回叫对象来识别该听众。因此,传送到RemoveTopLevelWindowListener方法中的对象与传送到AddTopLevelWindowListener的对象相同。由可访问性***200对每个被打开的新的顶级窗口调用一个OnTopLevelWindowOpened(关于被打开的顶级窗口)。类似地,当一个顶级窗口被关闭时,可以由可访问性***200调用OnTopLevelWindowOpened方法。为了接收这些通知,客户机300调用AddTopLevelWindowListener方法。
2.焦点事件
客户机300通常要求用于跟踪焦点的方法。在微软的Windows操作***中实现该功能是困难的。例如,当一个菜单被拉下时(例如,在Microsoft Word中的文件菜单),当用户依次向下移动光标时,在菜单中的项目获得焦点。当菜单关闭(例如,用户按下ESC键),没有焦点事件被发送。对焦点改变感兴趣的客户机必须监听多个事件,并且发现哪一个事件逻辑地表示焦点改变。在本发明的一个实施例中,AddFocusChangedListener(添加焦点改变的听众)方法可以被用于把焦点改变事件通知给听众。客户机300必须指定要被返回的一组属性。与逻辑元件一同返回的该指定的属性的特征是所有事件登记API的一部分。客户机300可以调用RemoveFocusChangedListener(除去焦点改变的听众)方法来停止接收对于焦点改变的通知。该方法可以使用回叫对象来识别听众,并且在这种情况中,传送到RemoveFocusChangedListener方法中的对象与传送到AddFocusChangedListener处理中的对象相同。当焦点改变时,可访问性***200调用OnFocusChanged(关于焦点改变)方法。在OnFocusChanged方法中所用的FocusEventArgs(焦点事件参数)参数暴露与焦点改变相关的信息。如果关于最后的被聚焦的逻辑元件的信息可用,则该元件可以在用于OnFocusChanged元件中的事件参数中获得。存在有这样的情况,其中没有UI元件被聚焦直到某物明确地把焦点置于一个元件上为止。
3.属性改变事件
当逻辑元件的属性改变时,属性改变事件被启动。在本发明的一个实施例中,客户机300调用AddPropertyChangedListener(添加属性改变的听众)方法来接收关于属性改变的通知。当在AddPropertyChangedListener中指定的逻辑元件树内的逻辑元件的属性值被改变时,由可访问性***200调用OnPropertyChanged(关于属性改变)方法。一个范围参数表示应当为哪一个元件启动一个事件。例如,传送窗口的根逻辑元件和对后代的请求限制对该窗口回叫的属性改变。如果对该树中的所有元件设置范围参数,则该范围被忽略,并且对在桌面上出现的指定属性的任何改变被发送。一个客户机300可以用不同的属性组和/或不同的回叫对象多次调用AddPropertyChangedListener。由可访问性***200所提供的通知表示:被改变的属性;新的属性值;以及旧的属性值(如果可用的话)。
客户机300可以调用RemovePropertyChangedListener(除去属性改变听众)方法来停止接收对于属性改变的通知。该方法可以使用范围元件和回叫对象来识别听众,并且在这种情况中,传送的对象必须与传送到AddPropertyChangedListener的对象相同。
4.来自控制模式的事件
从控制模式启动的事件需要是可扩展的,因此这些事件由GUID所识别。在登记时,任何GUID数值被接受。对于任何新的控制模式,所记录的事件必须具有唯一的GUID。AT产品可能需要被更改与监听新的控制模式事件。听众还需要能够检查这些事件。例如,所指导的测试可能要把这些事件限制为特定的应用程序或者控制在一个应用程序之内。该控制模式定义来源是什么,事件客户将需要参照一部分记录,以得知如何使用源元件和事件参数对象。
一种AddEventListener方法使得客户机300接收用于控制的事件。范围参数可以被用于表示启动事件的元件。例如,传送窗口的根逻辑元件并且请求后代将把事件限制于该窗口。如果在树中的所有元件是所需的,则该桌面上的所有事件将被发送。RemoveEventListener(除去事件听众)方法可以用于停止接收用于控制的事件。该方法可以使用范围元件、回呼对象和事件标识符来识别听众。在这种情况中,被传送的对象必须与被传送到AddEventListener(添加事件听众)的对象相同。
当一个应用程序调用AddEventListener方法时,当一个控制特定事件被启动时,由可访问性***200调用一个OnEvent(关于事件)方法,并且该事件的来源是在AddEventListener中指定的逻辑元件树中的一个逻辑元件。当用于控制的事件被启动时,通常存在可用的事件特定信息。
RemoveEventListener方法可以被调用以停止接收任何事件。这是在客户机应用程序关闭之前清除的一种快速方法。当结束一个应用程序时,除去方法可以被选择地使用。
5.逻辑结构改变事件
当该逻辑元件树结构改变时启动逻辑结构改变事件。一个AddLogicalStructureChangedListener(添加逻辑结构改变的听众)方法可以被用于接收在该逻辑元件树中的结构改变的通知。当添加、除去或无效逻辑元件时,调用关于指定的回叫对象的方法。该范围参数可以限制上文所述的元件。一个RemoveLogicalStructureChangedListener(除去逻辑结构改变的听众)方法可以被调用,以停止接收用于逻辑元件树改变的事件。该方法可以使用回叫对象和范围元件来识别该听众,并且在该情况中,传送来的对象必须与传送到AddEventListener的对象相同。
当一个子元件被添加并且父节点为在AddLogicalStructureChangedListener中指定的逻辑元件树222内的一个逻辑元件时,可以由可访问性***200调用一个OnChildAdded(关于被添加的子节点)方法。当一个子元件被除去并且旧的父节点为在AddLogicalStructureChangedListener中指定的逻辑元件树222内的一个逻辑元件时,由可访问性***200调用一个OnChildRemoved(关于被除去的子节点)方法。
当在短时间内添加大量子元件(例如大于20个子元件)时由可访问性***调用一个OnChildrenBulkAdded(关于被批量添加的子节点)方法。当在短时间内除去大量子元件时由可访问性***调用一个OnChildrenBulkRemoved(关于被批量除去的子节点)方法。当在短时间内添加和除去大量子元件(例如大于20个子元件)时由可访问性***调用一个OnChildrenInvalidated(关于被无效的子节点)方法。
6.多媒体事件
另一种类型的事件为多媒体事件。多媒体可以包括声音、视频和动画。该方法将支持多媒体事件,并且把包括“停止”、“暂停”、“快进”、“快倒”和“静音”的动作通知给客户机。类似于上文所述的方法可以被用于添加和除去多媒体听众。
7.简单声音事件
简单声音事件可以与多媒体事件相分离地处理。简单声音事件表示简单、短持续时间的声音,其用于向用户传达除了声音本身之外的一些事件。简单声音事件可以包括:当新的邮件到达时播放的声音;当笔记本电脑的电池量较低时产生的声音;或者当用IconExclamation(图标激励)类型显示消息框时播放的声音。AddSoundListener(添加声音听众)方法可以被调用以接收被播放的简单声音的通知,并且RemoveSoundListener(除去声音听众)方法可以被用于停止接收对于简单声音事件的通知。
当播放简单声音时由可访问性***200调用一个OnSound(关于声音)方法。为了接收该通知,监听应用程序调用AddSoundListener。OnSound方法提取如下信息:声音的名称;声音的来源;以及表示声音对用户的重要性的提示级别值。可能的提示级别包括:“未知”,表示重要性未知;“信息”,表示信息已经被显示;“警告”,表示警告状态;“问题”,表示需要用户响应;“惊叹”,表示该事件不是关键的但可能是重要的;以及“关键”,表示出现关键事件。
8.软聚焦事件
软聚焦事件出现在桌面上,但保留在背景中。软聚焦事件的一些例子是:在通知区域中表示“可以进行新的更新”的一个汽球状帮助窗口;在任务栏中用于要获得焦点的背景应用程序的一个闪烁图标;以及当打印开始和结束时从通知条上出现和消失的打印机图标。这些事件可能看起来与其它事件类型相重叠(当进行软聚焦时,多媒体可能调用动画事件)。但是,事件可以根据它要根据它要传递给用户的内容而不是根据如何传递来分类。
AddSoftFocusListener(添加软聚焦听众)方法可以被用于接收事件的通知,其尝试引起用户的注意而不是采取输入焦点。RemoveSoftFocusListener(除去软聚焦听众)方法停止该通知,该方法可能使用回叫对象来识别该听众,因此传送来的对象应当与传送到AddSoftFocusListener的对象相同。
当已经出现一个软聚焦事件时,可以由可访问性***200调用OnSoftFocus(关于软聚焦)方法。为了接收该通知,监听应用程序或客户机300调用AddSoftFocusListener。如果可用的话,一个来源元件可以用于获得关于该事件的更多信息。一个示例的来源元件可以是由在***盘中的一个通知应用程序所使用的汽球状帮助窗口。OnSoftFocus方法返回:事件名称;事件的来源;以及表示对用户的重要性的提示级别。
下文的表格示出当客户机使用AddTopLevelWindowListener API来监听来自特定处理的事件时,客户机300的可访问性***200的动作。
客户机 | 可访问性***和目标UI窗口 |
调用AddTopLevelWindowListener | .可访问性***客户机启动一个线程,以监视已经被创建和关闭的顶级应用程序窗口.新的UI出现,并且可访问性***调用客户机的OnTopLevelWindowOpened方法 |
从OnTopLevelWindowOpened方法调用其它API,以登记在目标UI窗口中出现的其它事件 | .可访问性***客户机把事件标识传送到目标UI窗口,从而它可以选择事件的通知。.可访问性***客户机把事件标识和过滤信息传送到可访问性***服务器,从而它可以进一步过滤事件。.目标UI窗口使用可访问性***服务器API来把感兴趣的事件通知给可访问性***服务器方。 |
处理在回叫对象中的事件 | .可访问性***服务器把事件传送回可访问性***客户机。.可访问性***客户机回叫被登记有客户机应用程序的对象。 |
调用RemoveListener API来停止接收事件 | .可访问性***客户机把不再感兴趣的事件通知给可访问性***服务器和目标UI窗口。.目标应用程序停止把事件通知给可访问性***服务器。 |
事件通知
相应的事件通知方法由服务器400或下层的UI引擎所使用,以支持上述列举的可访问性***事件。UI自动服务器API包括服务器或下层的UI引擎可以调用的方法。例如,有一个NotifyPropertyChanged(通知被改变的属性)方法,用于当关于逻辑元件的特定属性改变时由服务器来调用。由服务器400或下层的UI引擎来产生适当的参数,并且当UI改变时调用这些通知方法。
服务器方法
当客户机300请求事件时,由UI自动客户机调用AdviseEventAdded(通知被添加事件)方法和AdviseEventRemoved(通知被除去事件)方法,以通知服务器400。这使得服务器400在没有感兴趣的事件时不把事件传送到可访问性***200。服务器可以使用这些通知来使得性能决定于是否存在使用该事件的客户机。
控制模式
可访问性模式提供一种唯一的方法,来分类和暴露由特定UI元件或控制所支持的功能。如在现有技术中,除了把功能与特定控制类型相关联之外,(例如,一个按键、一个编辑框或者一个列表框),可访问性模型定义一组通用的控制模式,每个模式定义UI行为的一个方面。由于这些模式相互独立,因此它们可以被组合来描述由特定的UI元件所支持的完全功能组。
例如,除了以例如按键这样的类名来描述一个元件之外,可访问性***200把它描述为支持可调用的控制模式。一个控制模式定义由一个元件所支持的结构、属性、事件和方法。因此这些模式不仅仅使得客户机查询一个控制的行为,而且它还使使其通过使用为特定模式设计的接口编程地操作该控制。例如,一个选择容器模型提供查询被选择项目的方法,以选择或取消选择一个特定的项目,或者确定该控制是否支持单个或多个选择模式。
当前为可访问性***300定义的控制模式包括:(1)选择容器;(2)层级;(3)可调用;(4)简单网格;(5)文本;(6)数值;(7)表示对象;(8)可卷动;(9)可排序;(10)画图;以及(11)其它容器。
这些技术使得控制开发者采用一种新的控制类型,并且仍然具有用于把其行为暴露给AT产品和测试脚本的明确方法。如果新的行为类型被导入,则一个新的控制模式可以被定义,以表达所需的功能。
现在可以描述辅助技术产品和测试脚本,以理解如何与每个模式进行工作,而不是与每个UI控制进行工作。由于存在比控制类型少得多的控制模式,因此该技术使必要的代码最少化。该方法还提出更加灵活的构架,其可以有效地查询和操纵新的控制(只要它们支持已知的控制模式即可)。
下表提供它们所支持的公用控制和模式
控制 | 相关控制模式 |
按键 | 可调用 |
复选框,单选按键 | 数值 |
列表框 | 选择容器,可卷动 |
组合框 | 选择容器,可卷动,数值 |
树图 | 选择容器,可卷动,层级 |
列表图 | 选择容器,可卷动,可排序 |
文本框,编辑 | 数值,文本,可卷动 |
更加具体的接口被用于暴露与公用控制模式相关的功能。这些模式的例子包括:(1)选择管理容器;(2)网格布局容器;(3)包含数值的UI元件;(4)表示对象(文件,电子邮件等等)的图标;以及(5)可以被调用的UI元件。通常,这些模式不与特定的控制紧密地结合,并且不同的控制可以应用相同的模式。例如,列表框、组合框、和树图都采用“选择管理容器”模式。如果适当的话,一些控制可以采用多种模式:选择网格将采用“网格布局容器”模式和“选择管理容器”模式。
在此没有如以前的应用程序中的单个“角色”属性。而是,使用两个分离的机制。控制模式确定控制的可用功能,并且人可读的本地化属性提供用户可以理解的控制类型名称,例如,“按键”、“列表框”等等。
属性
可访问性***200将以一种总的GetProperty(获取属性)方法为特征。属性最好由GUID所表示,利用实用方法来转换非本地化的存储格式(对于描述和配制文件是有用的)并且还获得本地化的描述。与独立方法不同的总的GetProperty方法的两个关键优点是(a)它允许新的属性随着时间而添加,而不改变接口,并且(b)它允许采用这样的技术-例如阵列驱动批量属性提取-其在使用分例方法时是不可能的。每个属性必须具有明确的目的。该属性是否用于人或机器、该属性是否被本地化等等必须被明确定义。
本发明已经对于具体的实施例而描述,其被用于说明性而非限制性的。本领域的技术人员可以容易获得关于本发明其它实施例,而不脱离其范围。
从上文中,可以看出本发明适用于获得上述所有目的,以及该***和方法所固有和显而易见的其它优点。应当知道特定的功能和部分组合是有效的,并且可以不与其它功能和部分组合相结合地使用。这些被包含在本发明的范围之内。
Claims (19)
1.一种在客户机-服务器环境中的事件机构,用于保持向客户机通知用户接口中的改变,该事件机构包括:一个登记机构,用于使客户机进行登记以接收感兴趣的用户接口信息;一个用户接口自动客户机,用于接收来自该客户机的登记信息,并且在接收到该感兴趣的用户接口信息之后,把其传送到该客户机,其中该用户接口自动客户机使用该登记信息来通知一个用户接口服务器;以及一个用户接口自动服务器,用于从该用户接口自动客户机接收登记信息,用于从一个用户接口引擎接收用户接口信息,该用户接口自动服务器包括用于虑除该客户机不感兴趣的信息的一个过滤设备,以及用于把该客户机感兴趣的信息通知给该用户接口自动客户机的通知设备。
2.根据权利要求1所述的事件机构,其中该登记机构从该客户机接收登记信息,该登记信息包括:对象信息;用于该对象信息的客户机位置;以及要与一个源对象一同返回的一个属性列表。
3.根据权利要求2所述的事件机构,其中该用户接口自动客户机包括用于把该对象信息传送到指定的客户机位置的装置。
4.根据权利要求2所述的事件机构,其中该用户接口自动服务器的过滤设备确定来自该用户接口引擎的用户接口信息是否包括该对象信息和所需的属性列表。
5.根据权利要求1所述的事件机构,其中该登记机构接收对一个指定信息范围的请求的登记机构。
6.根据权利要求5所述的事件机构,其中如果该用户接口信息是该客户机感兴趣的并且在指定的范围内,则该用户接口自动服务器形成一个逻辑元件,并且如果该用户接口信息是不感兴趣的或者不在该指定范围内,则抛弃该用户接口信息。
7.根据权利要求1所述的事件机构,其中来自该用户接口引擎的该用户接口自动服务器通知包括:一个被改变属性的名称;一个新数值;以及任何可用的旧数值。
8.根据权利要求1所述的事件机构,其中该用户接口信息包括与选自如下组中的至少一个事件类型相关的信息:顶级窗口事件;聚焦事件;属性改变事件;控制模式事件;逻辑结构改变事件;多媒体事件;简单声音事件;以及软聚焦事件。
9.根据权利要求8所述的事件机构,其中每个事件被归类为仅仅一个事件类型。
10.根据权利要求8所述的事件机构,其中每个事件类型包括用于添加听众、除去听众、提示该事件机构来监听事件类型、以及用于使该用户接口引擎把其事件通知给该用户接口自动服务器的一组方法。
11.一种用于把感兴趣的用户接口事件通知给客户机的计算机实现的方法,该方法包括:从该客户机接收用于指定的用户接口信息的登记请求;监控来自一个用户接口自动服务器的用户接口引擎信息,以确定该指定的用户接口信息是否可用;把指定的用户接口信息从该用户接口自动服务器传送到一个用户接口自动客户机;以及把该指定的用户接口信息从该用户接口自动客户机传送到一个适当的客户机位置。
12.根据权利要求11所述的方法,其中接收一个登记请求包括接收登记信息,该登记信息包括:对象信息;用于该对象信息的客户机位置;以及一个所需属性列表。
13.根据权利要求12所述的方法,其中传送该指定的用户信息包括把该对象信息传送到该指定的客户机位置。
14.根据权利要求12所述的方法,其中进一步包括用该用户接口自动服务器来过滤用户接口信息,以确定该来自该用户接口引擎的用户接口信息是否包括该对象信息和所需属性列表。
15.根据权利要求11所述的方法,其中接收登记请求包括接收对指定信息范围的请求。
16.根据权利要求15所述的方法,其中进一步包括如果该用户接口信息是该客户机感兴趣的并且在指定范围内,则用该用户接口自动服务器形成一个逻辑元件;以及如果该用户接口信息是不感兴趣的或者不在该指定范围内,则抛弃该用户接口信息。
17.根据权利要求11所述的方法,其中进一步包括从该用户接口引擎接收信息,该信息包括:一个被改变属性的名称;一个新数值;以及任何可用的旧数值。
18.根据权利要求11所述的方法,其中进一步包括接收属于如下至少一个事件类型的用户接口信息:顶级窗口事件;聚焦事件;属性改变事件;控制模式事件;逻辑结构改变事件;多媒体事件;简单声音事件;以及软聚焦事件。
19.根据权利要求11所述的方法,其中每个事件被归类为仅仅一个事件类型。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41533802P | 2002-09-30 | 2002-09-30 | |
US60/415,338 | 2002-09-30 | ||
US10/366,941 US20040064530A1 (en) | 2002-09-30 | 2003-02-14 | Accessibility system events mechanism and method |
US10/366,941 | 2003-02-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1487391A true CN1487391A (zh) | 2004-04-07 |
CN100589063C CN100589063C (zh) | 2010-02-10 |
Family
ID=31949832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03123109A Expired - Fee Related CN100589063C (zh) | 2002-09-30 | 2003-04-17 | 可访问性***事件机构和方法 |
Country Status (16)
Country | Link |
---|---|
US (1) | US20040064530A1 (zh) |
EP (1) | EP1403763A3 (zh) |
JP (1) | JP2004145851A (zh) |
KR (1) | KR20040028475A (zh) |
CN (1) | CN100589063C (zh) |
AU (1) | AU2003201954B2 (zh) |
BR (1) | BR0301004A (zh) |
CA (1) | CA2424204A1 (zh) |
CO (1) | CO5450260A1 (zh) |
IL (1) | IL155001A (zh) |
MX (1) | MXPA03003083A (zh) |
MY (1) | MY141524A (zh) |
NO (1) | NO325479B1 (zh) |
PL (1) | PL359693A1 (zh) |
SG (1) | SG134984A1 (zh) |
TW (1) | TWI273791B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7250955B1 (en) * | 2003-06-02 | 2007-07-31 | Microsoft Corporation | System for displaying a notification window from completely transparent to intermediate level of opacity as a function of time to indicate an event has occurred |
US20060031572A1 (en) * | 2004-05-18 | 2006-02-09 | Microsoft Corporation | Event broker |
WO2006027747A2 (en) * | 2004-09-10 | 2006-03-16 | Koninklijke Philips Electronics N.V. | Apparatus for enabling to control at least one media data processing device, and method thereof |
US7797636B2 (en) | 2005-08-19 | 2010-09-14 | Joseph Carter | System and method for administering pluggable user interactive system applications |
US20070043569A1 (en) * | 2005-08-19 | 2007-02-22 | Intervoice Limited Partnership | System and method for inheritance of advertised functionality in a user interactive system |
US9152475B1 (en) | 2005-09-29 | 2015-10-06 | Hewlett-Packard Development Company, L.P. | Notifying listeners of change events |
JP4791285B2 (ja) * | 2006-08-04 | 2011-10-12 | 富士通株式会社 | ネットワーク装置およびフィルタリングプログラム |
KR20080110489A (ko) * | 2007-06-14 | 2008-12-18 | 소니 가부시끼 가이샤 | 정보 처리 장치 및 방법, 및 컴퓨터 프로그램 |
TWI447593B (zh) * | 2008-04-25 | 2014-08-01 | Chi Mei Comm Systems Inc | 用戶介面通訊系統及方法 |
CA2792895C (en) * | 2011-10-18 | 2020-04-28 | Research In Motion Limited | Method of rendering a user interface |
JP5885839B2 (ja) * | 2012-07-02 | 2016-03-16 | 三菱電機株式会社 | 通信システム、gui装置及びサービス装置 |
CN104639721B (zh) * | 2013-11-06 | 2018-11-27 | 阿里巴巴集团控股有限公司 | 在移动终端设备中提供应用程序信息的方法及装置 |
US10313459B2 (en) | 2014-04-29 | 2019-06-04 | Entit Software Llc | Monitoring application flow of applications using a regular or extended mode |
US9917760B2 (en) | 2015-06-03 | 2018-03-13 | International Business Machines Corporation | Notifying original state listeners of events in a domain model |
US10656802B2 (en) | 2017-04-05 | 2020-05-19 | Microsoft Technology Licensing, Llc | User interface component registry |
US11175809B2 (en) | 2019-08-19 | 2021-11-16 | Capital One Services, Llc | Detecting accessibility patterns to modify the user interface of an application |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5432940A (en) * | 1992-11-02 | 1995-07-11 | Borland International, Inc. | System and methods for improved computer-based training |
AU2759297A (en) * | 1996-05-20 | 1997-12-09 | Cognos Incorporated | Application services builder |
US5923328A (en) * | 1996-08-07 | 1999-07-13 | Microsoft Corporation | Method and system for displaying a hierarchical sub-tree by selection of a user interface element in a sub-tree bar control |
US6334157B1 (en) * | 1997-03-11 | 2001-12-25 | Microsoft Corporation | Programmatically providing direct access to user interface elements of an application program |
US6144377A (en) * | 1997-03-11 | 2000-11-07 | Microsoft Corporation | Providing access to user interface elements of legacy application programs |
US6363435B1 (en) * | 1998-02-03 | 2002-03-26 | Microsoft Corporation | Event sourcing and filtering for transient objects in a hierarchical object model |
US6263360B1 (en) * | 1998-06-01 | 2001-07-17 | Sri International | System uses filter tree and feed handler for updating objects in a client from a server object list |
US6341280B1 (en) * | 1998-10-30 | 2002-01-22 | Netscape Communications Corporation | Inline tree filters |
US7010793B1 (en) * | 2000-10-12 | 2006-03-07 | Oracle International Corporation | Providing an exclusive view of a shared resource |
-
2003
- 2003-02-14 US US10/366,941 patent/US20040064530A1/en not_active Abandoned
- 2003-03-19 MY MYPI20030955A patent/MY141524A/en unknown
- 2003-03-19 IL IL155001A patent/IL155001A/en not_active IP Right Cessation
- 2003-03-19 SG SG200301431-3A patent/SG134984A1/en unknown
- 2003-03-20 NO NO20031294A patent/NO325479B1/no not_active IP Right Cessation
- 2003-03-20 AU AU2003201954A patent/AU2003201954B2/en not_active Ceased
- 2003-03-21 EP EP03006507A patent/EP1403763A3/en not_active Ceased
- 2003-03-31 BR BR0301004-0A patent/BR0301004A/pt not_active IP Right Cessation
- 2003-03-31 CA CA002424204A patent/CA2424204A1/en not_active Abandoned
- 2003-04-08 MX MXPA03003083A patent/MXPA03003083A/es active IP Right Grant
- 2003-04-14 CO CO03031595A patent/CO5450260A1/es not_active Application Discontinuation
- 2003-04-14 PL PL03359693A patent/PL359693A1/xx not_active Application Discontinuation
- 2003-04-15 KR KR1020030023608A patent/KR20040028475A/ko not_active Application Discontinuation
- 2003-04-17 CN CN03123109A patent/CN100589063C/zh not_active Expired - Fee Related
- 2003-04-23 TW TW092109522A patent/TWI273791B/zh not_active IP Right Cessation
- 2003-05-19 JP JP2003141200A patent/JP2004145851A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1403763A3 (en) | 2005-09-07 |
CO5450260A1 (es) | 2004-10-29 |
IL155001A (en) | 2008-04-13 |
EP1403763A2 (en) | 2004-03-31 |
KR20040028475A (ko) | 2004-04-03 |
NO20031294L (no) | 2004-03-31 |
AU2003201954B2 (en) | 2009-12-10 |
MY141524A (en) | 2010-05-14 |
TWI273791B (en) | 2007-02-11 |
TW200405695A (en) | 2004-04-01 |
CA2424204A1 (en) | 2004-03-30 |
PL359693A1 (en) | 2004-04-05 |
CN100589063C (zh) | 2010-02-10 |
MXPA03003083A (es) | 2004-10-15 |
US20040064530A1 (en) | 2004-04-01 |
SG134984A1 (en) | 2007-09-28 |
BR0301004A (pt) | 2004-08-17 |
IL155001A0 (en) | 2003-10-31 |
JP2004145851A (ja) | 2004-05-20 |
NO20031294D0 (no) | 2003-03-20 |
NO325479B1 (no) | 2008-05-13 |
AU2003201954A1 (en) | 2004-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1678994A (zh) | 用于提供访问用户界面信息的***和方法 | |
CN1487391A (zh) | 可访问性***事件机构和方法 | |
CN101615122B (zh) | 通过存取***将用户接口信息提供给客户的***和方法 | |
US7334196B2 (en) | User interface display navigation and item selection system | |
US7448042B1 (en) | Method and apparatus for providing inter-application accessibility | |
CN1855009A (zh) | 可搜索控制模板功能的基于任务的界面 | |
CN1550980A (zh) | 对象层次结构内对象创建的***和方法 | |
CN1811685A (zh) | 以文档为中心的软件应用程序的面向任务的用户界面模型 | |
CN1508679A (zh) | 被管理的文件***过滤器模型和构造 | |
JP2005174283A (ja) | コンピュータプラットフォームのプログラミングインターフェース | |
CN1310819A (zh) | 为选定的应用数据生成并显示描述性注释的方法和工具 | |
CN1323423A (zh) | 在超文本文档等之间导航用的多目标链接 | |
US20130151999A1 (en) | Providing Additional Information to a Visual Interface Element of a Graphical User Interface | |
CN1790327A (zh) | 交互式地将数据链接到图中的形状的***和方法 | |
TW200421189A (en) | Tool-tip for multimedia files | |
CN1609789A (zh) | 模块化对象串行化体系结构 | |
CN1855041A (zh) | 实现虚拟语音一键通功能的方法和多模式界面 | |
EP1445707A2 (en) | System and method for checking and resolving publication design problems | |
CN1257477C (zh) | 文本编辑装置及方法 | |
US8458592B2 (en) | Apparatus, system, and method for contextual visual search | |
CN1741532A (zh) | 智能网框架装置 | |
CN1855096A (zh) | 带有基础可扩展框架的面向任务的界面 | |
JP2010102707A (ja) | 情報処理装置、情報処理装置の制御方法、プログラムおよび記録媒体 | |
JP2008243033A (ja) | 検索システム、検索方法、プログラムおよび記憶媒体 | |
CN1512335A (zh) | 基于构件的操作***动态设备驱动的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100210 Termination date: 20130417 |