JP2006526183A - ユーザインタフェースオートメーションフレームワークのクラスおよびインタフェース - Google Patents

ユーザインタフェースオートメーションフレームワークのクラスおよびインタフェース Download PDF

Info

Publication number
JP2006526183A
JP2006526183A JP2004570197A JP2004570197A JP2006526183A JP 2006526183 A JP2006526183 A JP 2006526183A JP 2004570197 A JP2004570197 A JP 2004570197A JP 2004570197 A JP2004570197 A JP 2004570197A JP 2006526183 A JP2006526183 A JP 2006526183A
Authority
JP
Japan
Prior art keywords
client
class
provider
interface
automation
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.)
Pending
Application number
JP2004570197A
Other languages
English (en)
Inventor
マッキーオン ブレンダン
シンクレア ロバート
エム.ワゴナー パトリシア
ジェイ.リード ポール
エイ.フリードマン マイケル
エス.バーンズ ヘザー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006526183A publication Critical patent/JP2006526183A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/241Operating system [OS] processes, e.g. server setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8173End-user applications, e.g. Web browser, game
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8543Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Library & Information Science (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

ユーザインタフェース情報をクライアントに提供する方法およびシステムが記載されている。本方法およびシステムは、アクセシビリティシステムを通じてクライアントにユーザインタフェース情報を提供するアプリケーションプログラムインタフェースのセットを実装する。アクセシビリティシステムは、プロバイダ側からクライアント側へユーザインタフェース情報を転送するメカニズムと、ユーザインタフェース情報を選択的に公開する論理ツリーを含む。アプリケーションプログラムインタフェースシステムは、クライアントがユーザインタフェース情報を取得することを支援するクライアント側アプリケーションプログラムインタフェースを含む。クライアント側アプリケーションプログラムインタフェースは、オートメーションクラス、論理要素クラス、raw要素クラス、コントロールパターンクラス、および入力クラスを含む。プロバイダ側アプリケーションプログラムインタフェースは、プロバイダオートメーションクラス、プロバイダオートメーションインタフェース、raw要素インタフェース、およびコントロールパターンプロバイダインタフェースを含む。

Description

本発明は、ユーザインタフェース情報を収集する支援テクノロジ、自動化テスト等の製品、およびこれらの製品とユーザインタフェース情報とのインタラクションの分野に関する。
[発明の背景]
学習、通信および、コンピュータソフトウェアに含まれコンピュータソフトウェアにより提示される情報へのアクセスの領域で支援を必要とするコンピュータユーザを助けるために、支援テクノロジ(AT)製品が存在する。このような製品は、コンピュータインタフェースに関連する情報を必要とする。同様に、既存の自動化テスト製品およびユーザインタフェースコマンドユーティリティもまた、ユーザインタフェースに関する情報を必要とする。現在、これらの製品には、ユーザインタフェース(UI)情報の十分なソースがない。これらの3種の製品(クライアント)は、以下のことができるためには他から必要なサポートを得なければならない:(1)アプリケーションのユーザインタフェースに関する情報を収集すること、(2)UIを構築するために使用されるテクノロジにかかわらずUI要素をプログラムで発見しそれに問い合わせること、(3)キーボードおよびポインタ入力を生成すること、ならびに(4)いかなるタイプの動作や機能が現在利用可能であるかを理解すること。これらのすべての能力をAT製品に与える単一のテクノロジは現在利用可能でなく市販されていない。また、現在のAT製品は、すべてのグラフィカルオペレーティングシステム(OS)テクノロジと常に互換性があるわけではなく、冗長な通知や紛らわしい通知を集中化された形でフィルタリング(選別)および調整をすることができない。もう1つの欠点として、現在のオートメーションおよびアクセシビリティのインフラストラクチャ(インフラ基盤)は拡張可能でないため、新しい機能を追加するにはOSレベルの変更を必要とする。
また、現在、アプリケーションのユーザインタフェースに関する情報を収集するには、AT製品は、ユーザについての情報を得るためにアプリケーション固有のコードを書かなければならない。このアプリケーション固有コードを書くプロセスは時間がかかり、継続的な保守を必要とする。現在のオートメーションインフラストラクチャは、冗長なイベント通知や紛らわしいイベント通知を一貫性のある形でフィルタリングおよび調整することもできない。したがって、イベントコンシューマ(イベント需要者)は、独力で情報をフィルタリングする必要がある。
現在のシステムによれば、AT製品は、次の3つの精度レベルでイベント通知を要求することができる:(1)デスクトップ上のあらゆるもの、(2)特定のプロセス(例えばワードプロセッサのオープン)において、または(3)特定プロセス(複数のオブジェクトがそのプロセス内で作業を行う)内のあるスレッドにおいて。現在、クライアントは、イベントを受け取る時、そのイベントが発生した特定のウィンドウのウィンドウハンドルと、そのイベントがどこで発生したかを示す他の情報ビットとを受け取る。クライアントは、イベントに関連するUIオブジェクトを取得するためにクロスプロセスコールを行うことができる。このオブジェクトを用いて、クライアントは、そのオブジェクトに関する情報を求めるための追加的なクロスプロセスコールを行うことができる。クライアントが5個の情報を必要とする場合、クライアントは、クロスプロセスコールを5回行わなければならない。クロスプロセスコールは非常に遅いため、現在のアクセシビリティインフラストラクチャを用いてUI情報を収集することのパフォーマンスコストは高い。この種の周知のシナリオ(筋書き)が図11に示されている。サーバアプリケーション12がイベント6を発火(fire)させる。カーネル14は、どのクライアントに通知しなければならないかを判断し、関心のあるクライアント10にイベント通知18を送る。クライアント10は、プロセス境界2を越えてサーバアプリケーション12に対して、イベント通知18に関連するオブジェクトを求める要求16を行う。サーバアプリケーション12がオブジェクト20を返すと、クライアント10は、イベントを発火させたUIコントロールに関する情報を求める要求16の送信を開始することができる。サーバアプリケーション12は、プロセス境界2を越えてクライアント10へ、要求された情報20を返す。
現在のもう1つの選択肢によれば、クライアントコードが、プロセス内にダイナミックリンクライブラリ(.DLL)としてロードされることが可能である。この選択肢はいくつかの欠点を有する。第1に、クライアントコードをプロセスにロードするためにシステムからの協力を必要とする。第2に、いったんクライアントコードがアプリケーションのプロセスにロードされると、それが収集する情報を制限することが困難であるため、セキュリティの問題が生じる。第3に、クライアントにとって有効な技法であるためには、それがシステム上のあらゆるプロセスにロードされなければならない。最適には、信頼できるクライアントのみが別のアプリケーションのプロセスにロードされるべきである。
また、クライアントがどのようなイベント通知を受け取ることを希望しているかを指定する能力をクライアントに与えるシステムが必要である。周知のシステムでは、クライアントは、いくつかのクロスプロセスコールを行ってから、その情報を分析して、イベントに関心があるかどうかを判断しなければならないことがある。このイベントフィルタリングをより高いパフォーマンスで実行することが可能であって、新しいシステムやアプリケーションイベントをサポートするために容易に更新可能なメカニズムが必要である。また、セキュリティの問題を軽減するために、信頼できるコンポーネントのみを使用するシステムが必要である。
現在、ユーザインタフェースに関する情報を求める際に、AT製品は、特定のUIフレームワークを原産とするツリーにアクセスする必要がある。したがって、複数のUIフレームワークに対するユーザインタフェース情報を伝達するには複数のツリーが必要である。これらの異なるツリーは、エンドユーザによって操作される可視UIコントロールを管理する非表示コンテナオブジェクトのように、ユーザにとって関心のない、または可視でない情報を含むことがある。したがって、ユーザにとって関心のあるノードのみを有する単一の統一されたツリーが必要とされている。
AT製品、自動化テストツール、およびコマンドユーティリティのニーズに応える解決法が必要とされている。その解決法は、すべてのグラフィカルOSテクノロジによって使用可能であるべきであり、すべての形態のUIおよびUIコンポーネントがアクセス可能となるようにすべきである。
[発明の概要]
本発明は、ユーザインタフェース情報をクライアントに提供する方法およびコンピュータアプリケーションに関する。本発明の一態様によれば、ユーザインタフェース情報をクライアントに提供するアクセシビリティシステムにおいて使用するためのツールのシステムが提供される。アクセシビリティシステムは、クライアント側およびプロバイダ側を含む。ツールのシステムは、ユーザインタフェース情報を求めるためのクライアントオートメーションクラスを含むクライアント側オートメーションツールを含む。クライアントオートメーションクラスは、イベント登録ツールおよび論理要素発見ツールを含む。ツールのセットは、さらに、ユーザインタフェース情報をクライアントに提供するプロバイダ側オートメーションツールを含む。プロバイダ側オートメーションツールは、イベント情報をクライアントに提供するツールを有するオートメーションプロバイダクラスを含む。
もう1つの態様によれば、クライアント側ツールのセットは、プロバイダ側からのユーザインタフェースイベント情報を求めるためのクライアントオートメーションクラスを含むクライアント側オートメーションメカニズムと、論理ツリー内のユーザインタフェース要素を表現する論理要素クラスを含むクライアント側論理要素メカニズムを含んでもよい。
さらにもう1つの態様によれば、プロバイダツールは、クライアントにイベント通知を提供するツールを含むプロバイダ側オートメーションクラスと、ユーザインタフェースプロパティを公開するプロバイダ側オートメーションインタフェースを含む。プロバイダ側ツールは、さらに、特定の関係要素に関連する情報を返すraw(生、未加工)要素インタフェースと、特定の要素に関連しないイベントおよび機能を管理するraw要素コンテクストインタフェースを含む。
もう1つの態様によれば、本発明は、アクセシビリティシステムを通じてクライアントにユーザインタフェース情報を提供するアプリケーションプログラムインタフェースシステムを含む。アクセシビリティシステムは、プロバイダ側からクライアント側へユーザインタフェース情報を転送するメカニズムと、ユーザインタフェース情報を選択的に公開する論理ツリーを含む。アプリケーションプログラムインタフェースシステムは、クライアントがユーザインタフェース情報を取得することを支援するクライアント側アプリケーションプログラムインタフェースを含む。クライアント側アプリケーションプログラムインタフェースは、オートメーションクラス、論理要素クラス、raw要素クラス、コントロールパターンクラス、および入力クラスを含む。プロバイダ側アプリケーションプログラムインタフェースは、プロバイダオートメーションクラス、プロバイダオートメーションインタフェース、raw要素インタフェース、およびコントロールパターンプロバイダインタフェースを含む。
もう1つの態様によれば、本発明は、アクセシビリティシステムを通じてクライアントにユーザインタフェース情報を提供するコンピュータ実施方法を含む。本方法は、クライアントがユーザインタフェース情報を取得することを支援するクライアント側アプリケーションプログラムインタフェースを提供する。ここで、クライアント側アプリケーションプログラムインタフェースは、オートメーションクラス、論理要素クラス、raw要素クラス、コントロールパターンクラス、および入力クラスを含む。本方法は、さらに、クライアント要求に応答するプロバイダ側アプリケーションプログラムインタフェースを提供することを含む。プロバイダ側アプリケーションプログラムインタフェースは、プロバイダオートメーションクラス、プロバイダオートメーションインタフェース、raw要素インタフェース、およびコントロールパターンプロバイダインタフェースを含む。
さらにもう1つの態様によれば、本発明は、アクセシビリティシステムを通じてクライアントにユーザインタフェース情報を提供するコンピュータ実施方法を含む。本方法は、選択されたイベントハンドラを用いてクライアントオートメーションクラスに対してユーザインタフェース情報を要求すること、およびプロバイダが対応するイベント発生メソッドを用いてユーザインタフェースイベント通知を提供する方法を含む。
本発明のさらなる利点および新規な特徴は、以下の説明に記載され、部分的には以下の記載を検討すれば当業者には明らかとなるか、または本発明の実施から分かるであろう。
本発明は、添付図面を参照して以下に詳細に記載される。
[発明の詳細な説明]
例示的なオペレーティング環境
図1は、本発明が実施され得る好適なコンピューティングシステム環境100の一例を示している。コンピューティングシステム環境100は、好適なコンピューティング環境の一例に過ぎず、本発明の用途または機能の範囲に関するいかなる限定を示唆することも意図していない。また、コンピューティング環境100は、例示的オペレーティング環境100に示されるいかなるコンポーネントまたはその組合せに関するいかなる従属性または要件を有するとも解釈されてはならない。
本発明は、コンピュータにより実行されるプログラムモジュール等のコンピュータ実行可能命令との一般的関連で記述され得る。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データストラクチャ(structure:構造、構造体)等を含む。さらに、当業者には理解されるように、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサ方式の、またはプログラム可能な消費者電子機器(家電製品)、ミニコンピュータ、メインフレームコンピュータ等の他のコンピュータシステム構成を用いて実施されてもよい。本発明は、通信ネットワークを通じてリンクされるリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施されてもよい。分散コンピューティング環境では、プログラムモジュールが、メモリ記憶デバイスを含むローカルおよびリモートの両方のコンピュータ記憶媒体に配置されてもよい。
図1を参照すると、本発明を実施する例示的システム100は、コンピュータ110の形態の汎用コンピューティングデバイスを含む。コンピュータ110は、処理ユニット120、システムメモリ130、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット120に結合するシステムバス121を含む。
コンピュータ110は通常、さまざまなコンピュータ可読媒体を含む。例として、限定ではないが、コンピュータ可読媒体にはコンピュータ記憶媒体および通信媒体が含まれ得る。システムメモリ130は、読み出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132のような揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中等にコンピュータ110内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム133(BIOS)が通常ROM131に格納される。RAM132は通常、処理ユニット120から直接アクセス可能な、および/または処理ユニット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は、少なくともそれらが別のコピーであることを示すためにここでは異なる番号が与えられている。ユーザは、キーボード162、および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス161のような入力デバイスを通じてコンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等があり得る。これらおよび他の入力デバイスは、システムバスに結合したユーザ入力インタフェース160を通じて処理ユニット120に接続されることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)のような他のインタフェースおよびバスストラクチャにより接続されてもよい。モニタ191または他のタイプの表示デバイスもまた、ビデオインタフェース190のようなインタフェースを通じてシステムバス121に接続される。モニタに加えて、コンピュータはスピーカ197およびプリンタ196のような他の周辺出力デバイスを含んでもよく、これらは出力周辺インタフェース195を通じて接続され得る。
本発明におけるコンピュータ110は、リモートコンピュータ180のような1つまたは複数のリモートコンピュータへの論理コネクションを用いたネットワーク環境で動作し得る。リモートコンピュータ180は、パーソナルコンピュータであってよく、通常、コンピュータ110に関して前述した要素の多くまたはすべてを含む。ただし、メモリ記憶デバイス181のみが図1には示されている。図1に示す論理コネクションは、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、他のネットワークを含んでもよい。
LANネットワーキング環境で使用される場合、コンピュータ110はネットワークインタフェースすなわちアダプタ170を通じてLAN171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は通常、インターネットのようなWAN173を通じて通信を確立するためのモデム172等の手段を含む。モデム172は、内蔵でも外付けでもよいが、ユーザ入力インタフェース160等の適切なメカニズムを通じてシステムバス121に接続され得る。ネットワーク環境では、コンピュータ110に関して図示したプログラムモジュールまたはその部分は、リモートメモリ記憶デバイスに格納されてもよい。例として、限定ではないが、図1は、リモートアプリケーションプログラム185がメモリデバイス181上に存在するように示している。理解されるように、図示したネットワークコネクションは例示であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよい。
コンピュータ110の多くの他の内部コンポーネントは示されていないが、当業者には理解されるように、このようなコンポーネントおよびその相互接続は周知である。したがって、コンピュータ110の内部構成に関するさらなる詳細は、本発明との関連では開示する必要はない。
アクセシビリティシステムの構成
図2に示すように、アクセシビリティシステム200は、クライアント環境300およびサーバ環境400と相互作用する。アクセシビリティシステム200は、図1に関して前述したコンピュータ環境100において実施されてもよい。アクセシビリティシステム200は、クライアント300とのインタラクションを容易にするクライアント側アクセシビリティインタフェース220と、サーバ側400とのインタラクションを容易にするサーバ側アクセシビリティインタフェース230と、アクセシビリティシステムコア201を含む。本発明のアクセシビリティシステム200は、プログラムでユーザインタフェース(UI)にアクセスするためのクライアント側API310およびプロバイダ側API440を含む新規なアプリケーションプログラムインタフェース(API)を提供する。アクセシビリティシステム200により、アプリケーションは、自分自身および使用するコンポーネントをアクセス可能にすることができる。
クライアント環境300は、好ましくは、支援テクノロジ(AT)製品または自動化UIテストツールを含む。サーバ側400は、図2に示すようなさまざまな異なるテクノロジを実施することができる。サーバシステム410は、アダプタ412およびコア414を含み、これらは第1のタイプのUIに見出され得る。サーバシステム420は、プロキシ(代理)コンポーネント422およびコントロール424を含む。これらは、米国ワシントン州Redmondの本願特許出願人から市販されているMicrosoft Operating System製品で利用可能なWin32 UIのような、第2のタイプのUIに見出され得る。サーバシステム430は、アダプタ432および内部OM434を含む。これらは別の第3のタイプのUIに見出され得る。
図3に示すように、アクセシビリティシステム200に含まれるイベントメカニズム210は、クライアント環境300およびサーバ環境400とのインタラクションを容易にするUIオートメーションクライアント202およびUIオートメーションサーバ204に頼る。UIオートメーションクライアント202およびUIオートメーションサーバ204は、本発明のイベントメカニズム210に関連して以下でさらに詳細に説明される。本発明のアクセシビリティシステム200は、クライアント(AT製品)300に以下の能力を与える:(1)アプリケーションのユーザインタフェースに関する情報を収集すること、(2)UIを構築するために使用されるテクノロジにかかわらずUI要素をプログラムで発見しそれに問い合わせること、(3)キーボードおよびポインタ入力を生成すること、ならびに(4)いかなるタイプの動作や機能が現在利用可能であるかを理解すること。アクセシビリティシステム200により、アプリケーションは、自分自身および自分のコンポーネントをアクセス可能にすることができる。図2および図3に示す構成は、アクセシビリティシステム200の以下のようないくつかの主要な側面を可能にする:(1)論理UIツリー、(2)コントロールパターン、(3)イベントメカニズム、(4)プロパティ、ならびに(5)クライアント側およびサーバ側API。これらのすべてについて、以下でさらに説明する。
UIアクセス論理ツリー222
アクセシビリティシステム200の不可欠なコンポーネントとして論理ツリー222がある。その一例を図4(D)に示す。ツリー222は、クライアント側アクセシビリティインタフェース220に含まれる。
論理ツリー222は、UI要素の基盤となるストラクチャ(structure:構造、構造体)階層のフィルタリングされたビューであり、コントロールやアプリケーションの開発者が実装しなければならない別個のツリーではない。その代わりに、論理ツリー222は、いくつかの明確なプロパティを備える。これらは、関心のある(interesting)ものも関心のない(uninteresting)ものも含めて、ストラクチャ要素が論理ツリー222に公開されるべきかどうかを示す。アクセシビリティシステムコア201は、この情報を用いて、フィルタリングされたUI論理ツリー222を生成し、そのUI論理ツリー222がAT製品またはテストスクリプトに提示される。
論理ツリー222は、要素のツリーであり、各要素は、コントロール、コントロール内の項目、またはグルーピングストラクチャを表現する。グルーピングストラクチャとしては、ダイアログ、ペイン(pane:ウインドウ枠)、またはフレームがあり得る。論理ツリー222のストラクチャは、ユーザによって認識される通りに(たとえコントロールが実際には異なる基盤ストラクチャを用いて実装されていても)アプリケーションのUIを表現すべきである。ツリーは、長い時間にわたり安定であるべきである。アプリケーションがユーザにとって同じように見える限り、たとえそのアプリケーションの舞台裏の実装の詳細が変化しても、そのアプリケーションを表現する論理ツリー222は同一のままにとどまるべきである。ストラクチャ上および実装上の理由で存在するネイティブ要素(例えば、MicrosoftのOS製品におけるシェルの「ShDocView」ウィンドウ)は、ユーザがそれを認識しないので、このツリーに現れるべきでない。
論理ツリー222は、クライアントにとって同じようになるように複数の異なるプロセスを統合することが可能な複数のフラグメントから構築された単一のツリーである。論理ツリー222によればバルク検索が可能であり、プロパティのリストに対する値を取得することができる。ユーザが通常の場合に、値を求めてクロスプロセスコールを呼び出す時までに、アクセシビリティシステム200は論理ツリー222を使用することによりその値をフェッチ(取得)しているであろう。
論理ツリー222は、周知のシステムの場合のように1ステップで構築されるのでなく、rawツリーを構築するのに使用しるフラグメントから構築される。図5に示すように、3つの主要な手続きが論理ツリー222を構築する。手続き72において、アクセシビリティシステム200が、基盤テクノロジのネイティブ要素を配置し、図4(A)に示すネイティブツリーに到達する。手続き74において、アクセシビリティシステム200がネイティブ要素を結合して、図4(B)に示すようなrawツリー20を形成する。最後に手続き76において、図4(D)に示すようにrawツリー20内の関心のないコンポーネントを隠蔽することによって、論理ツリー222が得られる。
図4(A)は、2つのネイティブツリー10および14を示している。これらは、Win32 UI等の利用可能なUIのような基盤テクノロジのネイティブ要素から構築される。ネイティブツリー10は、親ノード11と、互いに種々の関係を有する複数の子孫12を含む。同様に、ネイティブツリー14は、複数の子ノード16を有する親ノード15を含む。子ノード16は、互いの兄弟として記述することもできる。
図4(B)に示すように、ネイティブツリー10および14を結合してrawツリー20を形成することができる。rawツリー20は、2個の子ノード22および30を有する親ノード21を含む。子ノード22は子孫23〜29を有し、子ノード30は子孫31〜33を有する。このrawツリー20は、ネイティブツリー10および14の結合であり、ネイティブツリー10のノードがノード22〜29となり、ネイティブツリー14のノードがノード30〜33となっている。
図4(C)および図4(D)に大まかに示す方法により、rawツリー20は論理ツリー222に変換される。rawツリー20から論理ツリー222に移るため、開発者はrawツリーにヒントを挿入することができる。開発者は、rawツリー20内のノードに「自分自身を隠蔽する」や「自分自身と子を隠蔽する」や「ノードの子を隠蔽する」などとマークすることができる。また、開発者は、ノードを横へ移動したり、ノードを子の前に置いたりすることもできる。rawツリー20内のこれらの「ヒント」および修正は、論理ツリー222を形成するために使用される。例えば、図4(C)において、開発者は、ブロック40および41で示すように、rawツリー20のノード24〜26および33をuninteresting(関心なし)としてマークしている。通常、ユーザにとって可視とならない要素を含むノードはuninterestingとしてマークされる。可視UIに関連するノードは通常、interesting(関心あり)とみなされ、ATクライアント300によって使用される論理ツリー222に含められる。図4(D)に示すように、uninterestingとしてマークされたノードは論理ツリー222に含まれない。
アクセシビリティシステム200は、論理ツリー222を用いて、イベントに関する情報、システムの状態、オブジェクトの位置およびコントロールに関する情報を見つける。周知のシステムは、それらのシステムのツリー内を調べる能力を有していない。論理ツリー222は、クライアント300の選好(preference)に基づいてナビゲート可能であり、使用されるサーバ側アプリケーションにかかわらず情報を提供することができる。
論理ツリー222は、UIの論理表現である単一の統合されたツリーであり、クライアント300にとって関心のある要素のみを含む形状に形成される。したがって、AT製品がUI要素のストラクチャ階層をフィルタリングし、エンドユーザに提示されるモデルを推測しようとすることを余儀なくさせる代わりに、論理ツリー222は、エンドユーザに提示されるストラクチャに綿密にマッピングされる階層を提示する。これは、ユーザに対してUIを記述するAT製品のタスクを大幅に簡略化し、ユーザがアプリケーションと相互作用するのを助ける。
この論理UIツリー222はアクセシビリティシステム200の基本的な部分であるので、アクセシビリティシステム200の他のすべてのコンポーネントは、論理ツリー222で働くように設計される。例えば、図6は、非常に簡単なストラクチャを有するように見える簡単なダイアログボックス60を示している。しかし、現在利用可能なアクセシビリティテクノロジを通して見ると、このダイアログボックス60のストラクチャは驚くほど複雑である。このダイアログボックス60には、AT製品がエンドユーザにとって意味のあるオブジェクトを発見するためにフィルタリングしなければならないオブジェクトが264個含まれる。アクセシビリティシステム200および論理UIツリー222に対するそのサポートを用いると、このダイアログボックス60を所有する開発者は、少数のプロパティをセットすることにより、図6に示す以下のストラクチャをAT製品300に提示することができる。
図6に示すように、「実行(Run)」ダイアログの場合、開発者は、フライングウィンドウグラフィック62と、63の「開きたいプログラム、フォルダ、ドキュメント、またはインターネットリソースの名前を入力してください(Type the name of program, folder, document, or internet resource and windows will open it for you)」をinterestingとして示すことができる。また、開発者は、ノートパッド(notepad)、ワード(word)、電卓(calculator)等を含むコンボボックス64、ならびにOK65、キャンセル(cancel)66および閲覧(browse)67の各ボタンをinterestingとして示すこともできる。これは、それらの要素階層にタグ付けするための低コストのメカニズムを開発者に提供することにより、UIアクセシビリティシステム200を通じてそれらのアプリケーションのUIの論理表現を生成する。図示の各特徴は、論理ツリー222内のそれぞれの他のノードに対して指定された関係を有するノードによって表現することができる。この論理表現は、テストチームおよびAT製品すなわちクライアント300に直接的利益を提供する。
ユーザにとって最終的に関心があるのは論理ツリー222であるが、raw要素ツリー20もまたいくつかの重要な機能を提供する。論理ツリー222はユーザが関係し得る要素のみを含むが、raw要素ツリー20は、22のように、基盤フレームワークの実装ストラクチャを表現するノードを含む。例えばWin32 UIフラグメントの場合、このツリーは、HWNDを表現するノードを含むであろう。いくつかの点で、raw要素ツリー20は、論理要素ツリー222と基盤フレームワーク自身のネイティブ要素ツリーとの間の「中間点」である。raw要素ツリー20は、論理要素ツリー222を構築するための基礎として使用されるとともに、ネイティブ要素が最初にシステムに接続される場所である。
raw要素ツリー20は、デバッグおよびテストのために使用されることも可能である。raw要素ツリー20は、問題のある特定のノードがどこにあるかを指摘または記述するのに有用である。基礎raw要素ノードに関する機能としては、raw要素ツリー内をナビゲートするメソッド、対応する論理要素(もしそれが存在すれば)にジャンプするメソッド、この要素に対する「デバッグ文字列」(例えばHWNDノードに対する「HWND 0x483FE」)を含むプロパティ、および他の「舞台裏インフラストラクチャ」メソッドがある。これらの他のメソッドは、ヒットテストおよび位置判定、イベント、ならびにフレームワークが容易に提供可能な公開プロパティ(例えば、focused、enabled)をイネーブルする。
raw要素ツリー20は、種々のレンダリングエンジンからの要素を表現するノード22〜33を含む。raw要素ツリーは、アクセシビリティシステム200に自分自身を接続するためのレンダリングエンジンの開始点として使用され、ネイティブ要素(例えばWin32からのHWND)を統合された論理ツリー222に適応させるライトウェイト(軽量)アダプタオブジェクトから構築される。raw要素ツリーは、さらに、あるテクノロジが別のテクノロジをホスティング(hosting)するホスティング移行を処理するためにも使用される。raw要素ツリー20は、論理ツリー222が構築される基礎であるので、論理ツリー222が完全かつ連結であることをチェックするために使用可能であるとともに、行方不明(unaccounted-for)の要素をチェックするために使用可能である。raw要素ツリー20は、さらに、以下のような他のインフラストラクチャ的タスクのために使用されてもよい:基本要素IDを提供すること、ならびにフレームワークが提供する基本的な要素プロパティ(例えば、focused、enabled、およびlocation)を提供すること。
raw要素ツリー20は、AT製品すなわちクライアント300の主たる情報源ではなく、論理ナビゲーションには使用されず、エンドユーザには公開されない。また、raw要素ツリー20は、ツリー内の要素の位置を捕捉して、それが将来のある時点で返されるように使用することもできない。論理要素ツリー222がこれらすべての機能を実行する。
raw要素ツリー20は通常、表現されている論理要素を知ることなしに、基盤となるレンダリングテクノロジのraw要素(HWND、Element)から機械的に構築することができる。したがって、raw要素ツリー20は、論理ツリー222内で不明になったraw要素を探すために使用することができる。raw要素ツリー20は、ノードの位置の「スタックダンプ(stack-dump)」的記述を捕捉することができるので、有用なデバッグ・診断ツールである。さらに、周知のシステムのツリーは、コード固有の基準に基づいており、多様なテクノロジにおける実装が困難である。本発明の手法は、一般的で抽象的な「raw要素」タイプを使用する。これは、任意の基盤レンダリングテクノロジによって、またはそのために、実装可能である。
raw要素ツリーを取得するためには、raw要素ルートを呼び出すことでデスクトップ要素が得られる。これは、その親がNULLであること、およびすべての他のノードがそれを最終的祖先として有することを確かめることにより確認される。他の要素を取得するためには、指定された点からraw要素を取得するメソッドを呼び出すことにより、正しいスクリーン座標を用いた要素が返される。raw要素ツリーを取得した後、raw要素ツリーは、要素(親、兄弟および子)をチェックすることにより、チェック・確認することができる。
動作において、クライアント300は、親(parent)、次の兄弟(next sibling)、前の兄弟(previous sibling)、最初の子(first child)、最後の子(last child)等のような関係を用いてraw要素ツリー20内をナビゲートすることができる。そして、クライアント300は、raw要素から、論理ツリー222内の対応する論理要素へジャンプすることができる。
イベントメカニズム
クライアント300は、イベントの通知を継続して受けたい場合、図3に示されているようなUIオートメーションクライアント202を通じて登録を行い、情報を取得することができる。クライアント300は、受け取りたいオブジェクト情報、その情報の行き先、および受け取りたいプロパティのリストを指定する。クライアント要求はUIオートメーションクライアント202に送られる。UIオートメーションクライアント202は、デスクトップ上のプロセスを監視することができる。UIオートメーションサーバ204は、どのクライアント300がリスン(listening:待機、要求を待つ)中であるかを追跡し、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にサービスする。
UIオートメーションサーバ204は、クライアント300がイベント通知を受け取るように登録をする時に作成される。例として、UIエンジン206がMicrosoft Wordワードプロセッサアプリケーションを実行中であるとする。クライアント300はnameプロパティ変更に登録しているとする。クライアントの登録により、UIオートメーションサーバ204が作成される。また、クライアントの登録は、UIエンジン206に対して、UIオートメーションサーバ204へのnameプロパティの通知を開始するよう知らせる。UIエンジン206はスコープ情報を取得しない。UIエンジン206は、サーバ側のAPIの1つを呼び出す。UIエンジン206は、(1)どのプロパティが変化したか、(2)プロパティの新しい値、および(3)場合によっては古い値、を指定する。UIオートメーションサーバ204は、クライアント300にとって関心のあるイベントに基づいて作成されるので、イベント、プロパティ、クライアント、および関心のあるスコープを知っており、したがって、作成される論理要素にクライアント300が関心があるかどうかを知っている。複数のクライアント300が、同じイベントに対して特定のUIオートメーションサーバ204に登録し、返される論理要素とともにプロパティがバルクフェッチされるように求めている場合、UIオートメーションサーバ204がクライアント300にイベントを返送する時には、各クライアント300は、論理要素とともに返される要求したバルクフェッチプロパティの合併(union)を取得する。
リスン中の各クライアント300に対して、UIオートメーションサーバ204は、イベントに関連する論理要素をクライアントに渡してクライアント300に通知する。UIオートメーションサーバ204は、ただ1つの論理要素を作成する。これは現在のテクノロジに対する改善である。現在のテクノロジでは、各クライアント300が、イベントのソースであるオブジェクトの各自のコピーを求めることが要求される。
クライアントがイベントに対して登録する時にUIエンジン206がUIオートメーションクライアントのアドバイスを利用しない場合、UIエンジン206は、リスン中のアクセシビリティクライアント300があるかどうかをUIオートメーションサーバ204に問い合わせることが可能であり、いずれもリスン中でない場合、情報を作成してそれをUIオートメーションサーバ204に送る作業を回避することができる。例えば、スクリーンリーダがクライアント300であり、情報の行き先、イベントを受け取るべきフォーカス変更オブジェクト、および関心のある特定のプロパティのリストを指定しているとする。UIエンジン206はアドバイスを受け、イベントをUIオートメーションサーバ204へ送るべきことを知っている。UIエンジン206は、フォーカス変更を検出すると、UIオートメーションサーバ204に通知する。UIオートメーションサーバ204は、周知のインタフェースに変換し、イベントおよびオブジェクトをUIオートメーションクライアント202に送る。UIオートメーションクライアント202は、オブジェクトをクライアント300上の適切な空間に転送する。
上記のコンポーネントは、イベントのためのカーネル内の中央リポジトリ(repository)を除去することによって、周知のシステムを改善している。代わりに、UIオートメーションサーバ204は、実行中のコンテクストに関する情報を得ることに関心のあるすべてのクライアント300を知っている。また、カーネルリポジトリの除去は、より多くのピアツーピア(peer-to-peer)インタラクションを作り出す。というのは、UIオートメーションサーバ204は、従来カーネルで実行された機能を遂行するからである。本発明のアクセシビリティシステム200は、フィルタリングがUIオートメーションサーバ204を用いてサーバ側で遂行されるようにして、クライアント300が知りたいことを指定する能力をクライアント300に与える。
図7は、イベント登録および通知メソッドに関与する手続きを示すフローチャートである。ステップ80で、クライアント300がイベント通知を要求する。ステップ82で、UIオートメーションクライアント202が要求をUIオートメーションサーバ204へ送信する。ステップ84で、UIオートメーションクライアントは、通知を希望していることをUIエンジン206に知らせる。ステップ86で、UIオートメーションサーバ204は、UIエンジン206から通知を受け取る。ステップ88で、UIオートメーションサーバ204は、受け取った情報をフィルタリングする。ステップ90で、受け取った情報がユーザにとって関心のないものであることが分かった場合、ステップ92で、UIオートメーションサーバ204は、その情報を捨て、引き続き通知を待つ。他方、ステップ90で、情報が関心のあるものであることが分かった場合、ステップ94で、UIオートメーションサーバ204は、論理要素を作成し、それをUIオートメーションクライアント202へ送る。ステップ96で、UIオートメーションクライアント202は、受け取った情報をクライアント300上の適切な場所に置く。
アクセシビリティシステム200のイベントメカニズム210によれば、クライアント300は、UIにおけるプロパティ変更、コントロールのストラクチャにおけるツリー変更、マルチメディアイベント、および関連情報についてイベント通知を受け取るように登録することが可能となる。これらの能力がなければ、クライアント300は、情報、ストラクチャ、または状態が変化したかどうかを知るために、システム内のすべてのUI要素を継続的にポーリングしなければならない。また、アクセシビリティシステム200のイベントメカニズム210によれば、クライアント300は、プロセス外のイベントを受け取ること、プロパティ集(プロパティコレクション)がイベント通知とともに返されるように要求すること、および複数の要素に関するイベントに対する登録をすることが可能となる。
イベントメカニズム210は、AT製品またはテストアプリケーションがイベントに対して登録を行うために使用するインタフェース、AT製品がイベント通知を受け取るために使用されるオブジェクトに対して実装するインタフェース、およびコントロール実装者(制御メーカー)がUIイベントをイベントエンジンに通知するために使用するインタフェースを公開する。イベントメカニズム210は、UIをレンダリングするために使用されるUIエンジンとは独立にAT製品およびテストアプリケーションがイベントを受け取ることを可能にするとともに、AT製品およびテストアプリケーションが基盤テクノロジにかかわらずトップレベルのアプリケーションウィンドウおよびフォーカスを追跡することを可能にする。
該当する場合には、イベントは、アプリケーションの論理要素ツリー222からの論理要素に関連づけられる。論理要素が該当しない場合、イベントは、イベントのソースを表現する、人間が読める文字列等の周知のオブジェクトに関連づけられる。イベントメカニズム210は、イベント登録中に、ユーザが与えた選好に基づいてフィルタリングを行う。イベント関連データを作成してそれをクロスプロセスでクライアントに送る前に、クライアントのフィルタリング選好をサーバで使用することによって、イベントメカニズム210は、クロスプロセスコールの数を削減することによりプロセス外パフォーマンスを本質的に改善する。イベントメカニズム210は、イベント登録中に、イベントに対して関心のある論理要素のプロパティを指定する方法を提供する。これがクロスプロセスコールの数をさらに削減する。イベントメカニズム210は、オペレーティングシステム(OS)の重大な変更を必要とせずに拡張可能である。イベントメカニズム210は、マネージド(managed)コードを用いて実装されてもよいが、アンマネージド(unmanaged)アプリケーションがCOMインターオペラビリティを通じてそれにアクセスすることも可能である。
イベントメカニズム210によれば、クライアントは多数のタイプのイベントの通知を受け続けることができる。イベントのタイプの1つにトップレベルウィンドウイベントがある。トップレベルウィンドウイベントは、メニューおよびコンボボックスのドロップダウン等の、デスクトップを親とする機能に関連するイベントを含む。もう1つのタイプのイベントとして、フォーカスイベントがある。クライアント300は、フォーカスを追跡するメソッドをしばしば必要とする。さらなるイベントのタイプとして、プロパティ変更イベントおよび論理ストラクチャ変更イベントがある。プロパティ変更イベントは、論理要素のプロパティが変更される時に発火する。論理ストラクチャ変更イベントは、論理要素ツリーストラクチャが変更される時に発火する。
イベントは、コントロールパターンから発火させることも可能である。コントロールパターンから発火するイベントは拡張可能でなければならないので、これらのイベントはGUIDによって識別される。登録時には任意のGUID値が受け入れられる。任意の新しいコントロールパターンに対して、それがドキュメント化するイベントは一意のGUIDでなければならない。AT製品は、新しいコントロールパターンイベントをリスンするように修正されなければならないことがある。また、リスナは、これらのイベントを探索することができなければならない。例えば、管理されたテストでは、これらのイベントを、特定のアプリケーションまたはアプリケーション内のコントロールに制限したいかもしれない。コントロールパターンはソースが何であるかを定義し、イベントコンシューマは、ソース要素およびイベント引数オブジェクトの使用法を知るために、ドキュメンテーションのその部分を参照することが必要となる。
もう1つのタイプのイベントとしてマルチメディアイベントがある。マルチメディアとしては、サウンド、ビデオ、およびアニメーションがあり得る。メソッドは、マルチメディアイベントをサポートし、「停止」、「一時停止」、「早送り」、「巻戻し」、および「消音」等のアクションをクライアントに通知する。シンプルサウンドイベントは、マルチメディアイベントとは別個に扱われてもよい。シンプルサウンドイベントは、そのサウンド自体以外の何らかのイベントをユーザに伝えるために存在する単純な短時間のサウンドを表す。シンプルサウンドイベントとしては、新着メールの到着時に再生されるサウンド、ラップトップのバッテリが低下した時に発生されるサウンド、またはメッセージボックスがIconExclamation(アイコン感嘆符)タイプで表示される時に再生されるサウンドがあり得る。
もう1つのタイプのイベントとしてソフトフォーカスイベントがある。ソフトフォーカスイベントは、デスクトップに現れるがバックグラウンドに常駐する。ソフトフォーカスイベントの例としては、通知エリアに「新規更新が利用可能です」と示すバルーン(balloon)ヘルプウィンドウ、フォーカスを獲得したいバックグラウンドアプリケーションのためのタスクバー内の点滅アイコン、および印刷の開始・終了時に通知トレイ(tray)で出現・消滅するプリンタアイコンがある。これらのイベントは、他のイベントカテゴリと多少重複するように思われるかもしれない(マルチメディアはソフトフォーカスと同様にアニメーションイベントを含み得る)。しかし、イベントは、それがどのように伝えられるかではなく、それが何をユーザに伝えるかに基づいて分類される。
クライアント側API310およびプロバイダ側API440は、上記で列挙したイベントのタイプをサポートするイベント通知のメソッドを提供する。これらのメソッドについて、図8〜図10に関連して以下でさらに説明する。
コントロールパターン
アクセシビリティモデルは、特定のUI要素またはコントロールによってサポートされる機能を分類および公開する独自の手法を提供する。アクセシビリティモデルは、従来技術のように機能を特定のコントロールタイプ(例えば、ボタン、エディットボックス、またはリストボックス)に関連づけるのではなく、それぞれがUI動作の一側面(一態様)を定義する共通コントロールパターンのセットを定義する。これらのパターンは互いに独立であるので、特定のUI要素によってサポートされる機能の完全なセットを記述するように結合することができる。
例えば、アクセシビリティシステム200は、Buttonのようなクラス名によって要素を記述する代わりに、呼出し可能なコントロールパターンをサポートするものとして要素を記述する。コントロールパターンは、要素によってサポートされるストラクチャ、プロパティ、イベント、およびメソッドを定義する。したがって、これらのパターンは、クライアントがコントロールの動作を問い合わせることを可能にするだけでなく、クライアントが特定のパターンのために設計されたインタフェースを使用することによってコントロールをプログラムで操作することも可能にする。例えば、SelectionContainerパターンは、選択された項目に対して問合せを行うメソッド、特定の項目の選択もしくは選択解除を行うメソッド、またはコントロールが単一もしくは複数の選択モードをサポートしているかどうかを判定するメソッドを提供する。
アクセシビリティシステム300に対して現在定義されているコントロールパターンとしては、(1)Selection Container(セレクションコンテナ)、(2)Hierarchy(階層)、(3)Invokable(呼出し可能)、(4)Simple Grid(単純グリッド)、(5)Text(テキスト)、(6)Value(値)、(7)Represents Object(オブジェクト表現)、(8)Scrollable(スクロール可能)、(9)Sortable(ソート可能)、(10)Drawing(描画)、および(11)Other Container(他のコンテナ)がある。
この技法によれば、コントロール開発者は、新しいタイプのコントロールを実装しながら、しかもその動作をAT製品およびテストスクリプトに公開するための明確な手法を有することができる。新しいタイプの動作を導入する場合、必要な機能を表すように新しいコントロールパターンを定義することができる。
こうして、支援テクノロジ製品およびテストスクリプトは、各UIコントロールではなく各パターンを扱う方法を理解するように書くことができる。コントロールクラスに比べてコントロールパターンの数ははるかに少ないため、この技法は、必要なコードを最小限にする。また、この手法は、新しいコントロールについて(それが周知のコントロールパターンをサポートする限り)効果的に問い合わせて操作することができる、よりフレキシブルなアーキテクチャを促進する。
次の表は、共通コントロールおよびそれがサポートするパターンのいくつかの例を与える。
Figure 2006526183
共通コントロールパターンに関連する機能を公開するために、より具体的なインタフェースが使用される。これらのパターンの例としては、(1)セレクション管理コンテナ、(2)グリッド配置コンテナ、(3)値を含むUI要素、(4)オブジェクト(ファイル、電子メール等)を表すアイコン、および(5)呼び出され得るUI要素がある。一般的に、これらのパターンは特定のコントロールに緊密に結びついておらず、異なるコントロールが同じパターンを実装してもよい。例えば、リストボックス、コンボボックス、およびツリービューはすべて、「セレクション管理コンテナ」パターンを実装する。コントロールには、適宜複数のパターンを実装するものがあってもよい。セレクショングリッドは、「グリッド配置コンテナ」パターンおよび「セレクション管理コンテナ」パターンの両方を実装する。
従来のアプリケーションの場合のように、単一の「ロール(role)」プロパティはない。代わりに、2つの別個のメカニズムが使用される。コントロールパターンが、コントロールの利用可能な機能を決定し、人間が読めるローカライズ可能な(localizable)プロパティが、「ボタン」、「リストボックス」等のようにユーザが理解可能なコントロールタイプ名を提供する。
システムAPI
図8は、本発明の一実施形態におけるクライアント側API305の詳細を示している。クライアント側API305は、コアクラス310のセットを含み得る。コアクラス310は、1つまたは複数のオートメーションクラス312、論理要素クラス314、およびraw要素クラス316を含み得る。クライアント側API305は、さらに、1つまたは複数のコントロールパターンクラス320、入力クラス340、および補助クラス350を含み得る。これら各タイプのクラスについて以下でさらに説明する。
クライアントオートメーションクラス312は、クライアント300に対するUIオートメーションメソッドを提供する。クライアントオートメーションクラス312は、いかなるUI要素にも固有でないメソッドを含む。クライアントオートメーションクラス312は、ポイント、ウィンドウハンドル、またはデスクトップルート要素から論理要素またはraw要素を取得するメソッドを提供することができる。クライアントオートメーションクラス312は、さらに、論理要素に基づく入力基準を求めるメソッドを提供することができる。また、クライアントオートメーションクラス312は、好ましくは、イベント通知の登録および登録解除を行うメソッドも含む。また、オートメーションクラス312は、好ましくは、プロキシ(proxy)DLLをロードするヘルパ(helper)関数、プロパティおよびコントロールパターンのローカライズ名を取得するヘルパ関数、ならびに要素比較を実行するヘルパ関数も提供する。また、クライアントオートメーションクラス312は、クライアント300がイベントをリスンするためのメソッドも含む。オートメーションクラス312によって提供されるいくつかのメソッドを次の表にまとめる。
Figure 2006526183
Figure 2006526183
動作において、クライアント300がアプリケーションに関するユーザに対する情報を取得する必要がある場合、クライアント300は、押下するボタンを探索し、そのボタン上のテキストを確認する。クライアント300は、上記の表2に示される論理要素を見つけるメソッド(FindLogicalElement)のようなメソッドを呼び出してもよい。クライアント側API305は、クライアント側インタフェース220の論理ツリー222内の位置を基準とする値を返す(return)。論理ツリー222を通じて、アクセシビリティシステム200は、使用中のアプリケーションにかかわらず、UIの抽象的ビューをクライアント300に与える。抽象モデルとしては、ストラクチャ、プロパティ、イベントや、リストボックス、ボタン等のUIコンポーネントが互いに共有していることが期待できる機能がある。
クライアント側API305は、さらに、論理要素クラス314を含み得る。論理要素クラス314は、要素の共通プロパティを取得するためのフィールド、メソッドおよびプロパティを提供し得る。上記のように、論理要素は、境界長方形、フォーカス、イネーブル、クリッカブルポイント、ランタイムおよび永続(persistent)識別子、ならびに名前のような、論理ツリー222内のUI要素を表現する。また、論理要素クラス314は、最初の子、最後の子、次の兄弟、および親のような要素間をナビゲートするためのツールも提供し得る。また、論理要素クラス314は、要素の特定のパターンを取得するツール、または要素によってサポートされるすべてのパターンを取得するツールも提供し得る。論理要素クラス314は、論理要素ツリー222内の要素に対して使用されるフィールド、プロパティ、およびメソッドを含む。
Figure 2006526183
クライアント側API305は、さらに、raw要素クラス316を含み得る。raw要素クラス316は、raw要素ツリー内を移動するための同様の技法を提供する。raw要素クラス316は、raw要素ツリー内の要素にアクセスするために使用されるフィールド、プロパティおよびメソッドを含む。
Figure 2006526183
クライアント側API305は、さらに、入力クラス340を含む。入力クラス340は、マウス、キーボードおよびその他のタイプの入力をシミュレートするために使用可能である。入力クラス340によれば、キーボード、ペンおよびマウスのような入力メソッドによるプログラム入力が可能となる。例示的な入力クラスを次の表に示す。
Figure 2006526183
Figure 2006526183
クライアント側API305は、さらに、UIオートメーションコントロールパターンクラス320を含む。UIオートメーションコントロールパターンクラス320は、論理要素によって公開された特定の機能へのプログラムでのアクセスのためのフィールド、プロパティおよびメソッドを公開することができる。UIオートメーションコントロールパターンクラス320は、ユーザがUIアクセシビリティシステム200において定義されるコントロールパターンと相互作用するのを助ける。例えば、アプリケーションウィンドウパターン(application window pattern)メソッドは、アプリケーションをプログラムで扱うための機能を公開する。この機能は、子ウィンドウの配置やアプリケーション内のツールバー、メニュー、スクロールバー、およびシステムメニューを表す論理要素の位置判定を可能にし得る。
コントロールパターンクラス320は、アプリケーションウィンドウパターン(ApplicationWindowPattern)クラスを含み得る。ApplicationWindowPatternクラスは、トップレベルアプリケーションウィンドウに通常関連する動作および情報を公開する。クライアント300は、このクラスを用いて、アプリケーションのマルチドキュメントインタフェース(MDI)子(children)を並べて表示(tile)または重ねて表示(cascade)すること、タスクバー上のそのボタンを見つけること、およびツールバーやメニューのようなそのユーザインタフェースの周知のセクションを位置判定することができる。次の表は、本発明の一実施形態のApplicationWindowPatternクラスを示している。
Figure 2006526183
また、コントロールパターンクラス320は、要素のコンテンツを表示または非表示にするためのメカニズムを提供する、要素の展開および折りたたみを行うクラス(ExpandCollapsePattern)も含み得る。ExpandCollapsePatternクラスは、ExpandCollapseパターンに対するラッパークラスとして作用する。ExpandCollapsePatternクラスは、展開(表示)または折りたたみ(非表示)が可能なコンテンツを操作するためにクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、ExpandCollapsePatternクラスの一実施形態を示している。
Figure 2006526183
また、コントロールパターンクラス320は、クライアント300が、発見された項目がグリッドの一部であるかどうかを迅速に判定することを可能にするグリッドアイテムパターン(GridItemPattern)クラスも含み得る。項目がグリッドの一部である場合、GridItemPatternクラスは、その項目が行/列の座標および範囲に関してグリッド内のどこにあるかを判定するのを助ける。GridItemPatternクラスは、好ましくは、グリッド内のセルの機能を公開するコントロールを操作するためにクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるGridItemPatternクラスを示している。
Figure 2006526183
また、コントロールパターンクラス320は、TreeViewコントロール内の要素のように互いに階層関係を有する要素を表現する階層項目パターン(HierarchyItemPattern)クラスも含み得る。HierarchyItemPatternクラスは、論理ツリー222内でのUI要素の関係とは独立に、UI要素間の階層関係を公開するコントロールを操作するためにオートメーションクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるHierarchyItemPatternクラスを示している。
Figure 2006526183
また、コントロールパターンクラス320は、関連する単一の明瞭なアクションを有するオブジェクトを表現する呼出しパターン(InvokePattern)クラスも含み得る。関連するUIコンポーネントの例としては、プッシュボタン、ハイパーリンク、メニュー項目、ラジオボタン、およびチェックボックスがある。InvokePatternクラスは、呼び出された時に単一の明瞭なアクションを発生させる要素を操作するためにオートメーションクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態による例示的なInvokePatternクラスを示している。
Figure 2006526183
また、コントロールパターンクラス320は、マルチビューパターン要素に対するラッパークラス(wrapper class)として働くマルチビューパターン(MultipleViewPattern)クラスも含み得る。マルチビューパターン要素は、1つの情報セットの複数の表現の間で切替可能な要素である。MultipleViewPatternクラスは、同じ情報セットの複数の表現の間で切替を行うための機能を有する要素を操作するためにオートメーションクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるMultipleViewPatternクラスを示している。
Figure 2006526183
コントロールパターンクラス320は、さらに、有限範囲内の値を管理するコントロールの能力を反映する、関連するプロパティのセットを公開するレンジバリューパターン(RangeValuePattern)クラスを含み得る。RangeValuePatternクラスは、コントロールの有効な最小値および最大値ならびにその現在値を伝える。RangeValuePatternクラスは、要素の現在値およびレンジバリューを得るためにオートメーションクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるRangeValuePatternクラスを示している。
Figure 2006526183
また、コントロールパターンクラス320は、見える領域を変更することが可能なUI要素を表現するスクロールパターン(ScrollPattern)クラスも含み得る。ScrollPatternクラスは、スクロールによってその可視領域の部分を変更する能力を有する要素を操作するためにオートメーションクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるScrollPatternクラスを示している。
Figure 2006526183
また、コントロールパターンクラス320は、セレクションを管理するコンテナを表すセレクションパターン(SelectionPattern)クラスも含み得る。関連するセレクション項目パターン(SelectionItemPattern)クラスが、選択および選択解除可能な要素を操作するためにクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態による例示的なSelectionPatternクラスおよびSelectionItemPatternクラスを示している。
Figure 2006526183
Figure 2006526183
また、コントロールパターンクラス320は、ソートパターン(SortPattern)クラスも含み得る。SortPatternクラスは、サブ要素をソートすることが可能なコンテナ要素を操作するためにオートメーションクライアントによって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるSortPatternクラスを示している。
Figure 2006526183
また、コントロールパターンクラス320は、値を表すUI要素を表現する値パターン(ValuePattern)クラスも含み得る。ValuePatternクラスは、関連する値を有する要素を操作するためにクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるValuePatternクラスを示している。
Figure 2006526183
コントロールパターンクラス320は、さらに、ユーザに情報を伝えているイメージまたはアニメーションに関する情報を表すために使用可能なビジュアル情報パターン(VisualInformationPattern)クラスを含み得る。VisualInformationPatternクラスは、ユーザに情報を伝えているイメージまたはアニメーションを有する要素を操作するためにオートメーションクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるVisualInformationPatternクラスを示している。
Figure 2006526183
コントロールパターンクラス320は、さらに、ウィンドウパターンのラッパークラスとして作用するウィンドウパターン(WindowPattern)クラスを含み得る。WindowPatternクラスは、ユーザのデスクトップ上のウィンドウを操作するためにオートメーションクライアント300によって使用されるフィールド、プロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるWindowPatternクラスを示している。
Figure 2006526183
また、クライアント側API305は、補助クラス350も含み得る。補助クラスは、イベントメカニズムおよび入力機能を使用するためのヘルパクラスとともに、プロパティ、イベント、およびパターン識別子を表現する複数のクラスを含み得る。
補助クラス350は、オートメーション識別子(AutomationIdentifier)クラスを含み得る。AutomationIdentifierクラスは、オブジェクト識別に基づく識別子の基本クラスである。このクラスは、派生クラス(derived class)のみがインスタンス化(instantiate)されるので、事実上は抽象クラスである。補助クラス350は、さらに、アクセシビリティシステム200におけるイベントを識別するために使用されるタイプを表現するオートメーションイベント(AutomationEvent)クラスを含み得る。また、補助クラス350は、アクセシビリティシステム200におけるコントロールパターンを識別するために使用されるタイプを表現するオートメーションパターン(AutomationPattern)クラスも含み得る。補助クラス350は、さらに、アクセシビリティシステム200におけるプロパティを識別するために使用されるタイプを表現するオートメーションプロパティ(AutomationProperty)クラスを含み得る。
補助クラス350は、さらに、イベントとともに使用されるコントロールパターンまたはカスタムイベント引数を表現するオートメーションイベント引数(AutomationEventArgs)クラスを含み得る。クライアント300は、カスタムイベントとともにこのクラスのインスタンスを受け取る。AutomationEventArgsは、クライアント300にオートメーションイベントに関する情報を送るために使用される。
また、補助クラス350は、UIイベントとともに使用されるオートメーションプロパティ変更イベント引数(AutomationPropertyChangedEventArgs)クラスも含み得る。クライアント300は、プロパティ変更イベントとともにこのクラスのインスタンスを受け取る。AutomationPropertyChangedEventArgsは、クライアント300にプロパティ変更イベントに関する情報を送るために使用される。
補助クラス350は、さらに、論理ストラクチャ変更イベント引数(LogicalStructureChangedEventArgs)クラスを含み得る。LogicalStructureChangedEventArgsクラスは、論理ツリー変更イベントとともにこのクラスのインスタンスをクライアント300に提供するために、UIイベントとともに使用され得る。LogicalStructureChangedEventArgsは、クライアント300に論理ストラクチャ変更に関する情報を送るために使用される。
補助クラス350は、さらに、トップレベルウィンドウイベント引数(TopLevelWindowEventArgs)クラスを含み得る。これは、カスタムイベントとともにこのクラスのインスタンスをクライアント300に提供するために、UIイベントとともに使用され得る。TopLevelWindowEventArgsは、クライアント300にトップレベルウィンドウイベントに関する情報を送るために使用される。トップレベルウィンドウとは、その親がデスクトップであるウィンドウである。「開いている(opened)」という用語の使用は、新しいトップレベルウィンドウがユーザに対して現れていることを示す。「閉じている(closed)」という用語の使用は、トップレベルウィンドウが破棄・無効化(destroy)されていることを示す。
補助クラス350は、さらに、ツリーロードイベント引数(TreeLoadEventArgs)クラスを含み得る。TreeLoadEventArgsクラスは、UIイベントとともに使用されるカスタムイベント引数クラスである。クライアント300は、ツリーロードイベントとともにこのクラスのインスタンスを受け取ることができる。TreeLoadEventArgsは、クライアント300にツリーロードイベントに関する情報を送るために使用され得る。
補助クラス350は、さらに、入力関連メソッドに対する定数を提供するVKeysクラスを含み得る。また、補助クラス350は、NoClickablePointExceptionも含み得る。この例外は、クリッカブルポイントにおける論理要素内でエラーが発生した時に投げられる。エラーは、境界長方形が空である時、幅もしくは高さがない時、またはそのポイントにおける論理要素が変更された時に発生し得る。
また、補助クラス350は、イベント通知を受け取るためのいくつかのクラスも含み実装し得る。フォーカス変更イベント引数(FocusChangedEventArgs)クラスは、クライアントにフォーカス変更イベントに関する情報を送るために使用され得る。
図9に示すように、プロバイダ側API440は、プロバイダオートメーションクラス442、プロバイダオートメーションインタフェース448およびプロバイダraw要素インタフェース450を含む。また、プロバイダ側API440は、コントロールパターンプロバイダインタフェース460および補助クラス480も含み得る。補助クラス480および350は、プロパティ識別子、イベント識別子、パターン識別子ならびに長方形やポイントを表すクラスのような基本タイプ等の情報を使用および通信するためにタイプを共有してもよい。他の特徴は、プロバイダ補助クラス480またはクライアント補助クラス350に固有であってもよい。例えば、Vkeysクラスは、クライアント補助クラス350としてのみ予約されてもよい。
プロバイダオートメーションクラス442は、好ましくは、図10に示すようなオートメーションインターオペラビリティプロバイダ(AutomationInteropProvider)クラス502を含む。AutomationInteropProviderクラス502は、Win32またはサードパーティのオートメーション実装とともにアクセシビリティシステム200によって使用されるメソッドを含み得る。AutomationInteropProviderクラス502は、Win32またはサードパーティのUIオートメーションプロバイダ側実装によって使用されるプロパティおよびメソッドを含む。次の表は、本発明の一実施形態によるAutomationInteropProviderクラス502を示している。
Figure 2006526183
オートメーションプロバイダ(AutomationProvider)クラス500は、Windows Client Platformとともにアクセシビリティシステム200によって使用され得るメソッドを含む類似のクラスである。
また、プロバイダ側API440は、プロバイダオートメーションインタフェース448も含む。プロバイダオートメーションインタフェース448は、アクセシビリティシステム200がデフォルトで公開するプロパティ以外に追加プロパティを公開するためにWin32またはサードパーティのプロバイダによって実装されるオートメーションプロパティインターオペラビリティプロバイダ(IAutomationPropertyInteropProvider)インタフェース447を含み得る。プロバイダオートメーションインタフェース448は、さらに、オートメーションプロパティプロバイダ(IAutomationPropertyProvider)インタフェース449を含み得る。このインタフェース449はインタフェース447に類似しているが、デフォルトでアクセシビリティシステム200によって公開されるプロパティ以外のプロパティを公開するためにネイティブWindows Client Platformプロバイダによって実装されることが可能である。
プロバイダraw要素インタフェース450は、raw要素プロバイダ(IRawElementProvider)インタフェース456を含み得る。IRawElementProviderインタフェース456は、ネイティブWindows Client Platform、Win32またはサードパーティのプロバイダによって実装され、最初の子、最後の子、次の兄弟および親のような関係要素を返すため、ならびに特定のまたはすべてのネイティブおよびUIオートメーションプロパティを返すためにアクセシビリティシステム200によって呼び出されるメソッドを定義する。IRawElementProviderインタフェース456は、さらに、コントロールパターンに対するプロバイダオブジェクトを返す。IRawElementProviderインタフェース456は、アクセシビリティシステム200によって実装され、特定の要素に関連する機能についてプロバイダと相互作用する。IRawElementProviderインタフェース456の一実施形態の一例を下記の表に与える。
Figure 2006526183
もう1つのプロバイダraw要素インタフェース450として、raw要素コンテクストインターオペラビリティプロバイダ(IRawElementContextInteropProvider)インタフェース452があり得る。インタフェース452は、Win32またはサードパーティのプロバイダによって実装され得る。インタフェース452は、特定の要素に関連しないイベントおよび他の機能を管理するために使用され得る。さらにもう1つのraw要素インタフェース450として、raw要素コンテクストプロバイダ(IRawElementContextProvider)インタフェース458があり得る。これは、ネイティブWindows Client Platformプロバイダによって実装され、特定の要素に関連しないイベントおよび他の機能を管理するために使用され得る。IRawElementContextProviderインタフェース458の一実施形態を下記の表に示す。
Figure 2006526183
また、プロバイダ側API440は、コントロールパターンプロバイダインタフェース460も含み得る。各コントロールパターンは、アクセシビリティシステム200にコントロールパターンを公開するオブジェクトによって実装されるプロバイダインタフェース460を有する。例えば、アプリケーションウィンドウプロバイダ(IApplicationWindowProvider)インタフェースは、アプリケーションのトップレベルウィンドウに関連する動作および情報を公開する。下記のコントロールパターンプロバイダインタフェース460は、HWNDに基づくプロバイダおよびサードパーティのプロバイダによって実装可能なインターオペラビリティプロバイダ(InteropProvider)インタフェースを含む。また、コントロールパターンプロバイダインタフェース460は、Windows Client Platformプロバイダによってネイティブに実装可能なプロバイダインタフェースも含み得る。
コントロールパターンプロバイダインタフェース460は、さらに、アプリケーションウィンドウプロバイダ(IApplicationWindowProvider)インタフェースを含み得る。IApplicationWindowProviderまたはIApplicationWindowInteropProviderインタフェースは、トップレベルアプリケーションウィンドウに通常関連する動作および情報を公開し得る。このインタフェースは通常、アプリケーションのメインウィンドウを操作するための機能を公開するためにプロバイダによって実装される。
また、コントロールパターンプロバイダインタフェース460は、展開・折りたたみプロバイダ(IExpandCollapseProvider)インタフェースまたはIExpandCollapseInteropProviderインタフェースも含み得る。このインタフェースは、コントロールがより多くのコンテンツを表示するための展開またはコンテンツを非表示にするための折りたたみを行う能力を公開し得る。IExpandCollapseProviderインタフェースは、ツリー型動作を提供するためのHierarchyItemパターン(後述)とともにサポートされてもよいが、開く、および閉じる個々のコントロールにも関連がある。ツールバー、コンボボックス、およびメニューのようなUI要素が、関連する実装を含み得る。
コントロールパターンプロバイダインタフェース460は、さらに、グリッドプロバイダ(IGridProvider)インタフェースまたはIGridInteropProviderインタフェースを含み得る。IGridProviderインタフェースは、グリッドサイズおよび指定されたセルへの情報の移動を含む基本グリッド機能を公開する。
グリッド項目プロバイダ(IGridItemProvider)またはIGridItemInteropProviderが、もう1つのコントロールパターンプロバイダインタフェース460を提供し得る。IgridItemProviderインタフェースは、グリッド内にある項目を表現する。このインタフェースは、メソッドなしで、プロパティのみを含んでもよい。IGridItemProviderまたはIGridItemInteropProviderインタフェースは、グリッド内のセルの機能を公開するコントロールを操作するための機能を公開するためにプロバイダによって実装される。
コントロールパターンプロバイダインタフェース460は、さらに、階層項目プロバイダ(IHierarchyItemProvider)またはIHierarchyItemInteropProviderインタフェースを含み得る。IHierarchyItemProviderまたはIHierarchyItemInteropProviderインタフェースは、論理ツリー222内でのUI要素の関係とは独立に、UI要素間の階層関係を公開し、クライアント300がその関係内を移動することを可能にする。階層関係は、定義により非巡回的である。このインタフェースを実装し得るUI要素としては、メニューおよびリストビューコントロールがある。
もう1つのコントロールパターンプロバイダインタフェース460として、呼出しプロバイダ(IInvokeProvider)またはIInvokeInteropProviderインタフェースがあり得る。呼出しプロバイダインタフェースは、関連する単一の明瞭なアクションを有するオブジェクトによって実装され得る。これらのオブジェクトは通常ステートレスであり、それらを呼び出すことはそれら自身の状態を変更しないが、アプリケーションの、より大きいコンテクストの変化を引き起こす。IInvokeProviderインタフェースを実装し得るUI要素としては、プッシュボタンおよびハイパーリンクメニュー項目がある。
マルチビュープロバイダ(IMultipleViewProviderまたはIMultipleViewInteropProvider)インタフェースが、もう1つのコントロールパターンインタフェース460を提供する。マルチビュープロバイダインタフェースは、情報、データ、または子の同じセットの複数の表現の間の切替を行う要素の能力を公開し得る。このパターンは、コンテンツのカレントビューを制御するコンテナに対して実装されるべきである。
また、コントロールパターンプロバイダインタフェース460は、レンジバリュープロバイダ(IRangeValueProvider)または(IRangeValueInteropProvider)インタフェースも含み得る。レンジバリュープロバイダインタフェースは、有限範囲内の値を管理するコントロールの能力を反映する、関連するプロパティのセットを公開し得る。このインタフェースは、コントロールの有効な最小値および最大値ならびにその現在値を伝え得る。このインタフェースを実装し得るUI要素としては、プログレスバー(progress bar)およびスクロールバー上の数値スピナ(spinner)がある。
もう1つのコントロールパターンプロバイダインタフェース460として、スクロールプロバイダ(IScrollProviderまたはIScrollInteropProvider)インタフェースが提供され得る。このインタフェースは、コントロールがそのコンテンツをスクロールすることによってユーザに可視となる可視領域の部分を変更する能力を公開する。このインタフェースは、コントロールの可視領域より大きいコンテンツエリアを保持するリストボックス、ツリービュー等のコンテナのように、コンテンツをスクロールするUI要素を表現する。IscrollInteropProviderインタフェースの一実施形態を下記の表に与える。
Figure 2006526183
もう1つのコントロールパターンプロバイダインタフェース460として、識別による選択プロバイダ(ISelectionByIDProviderまたはISelectionByIDInteropProvider)インタフェースがある。このインタフェースは、それが含む項目間の選択を提供するコンテナ要素を表す。識別による選択プロバイダインタフェースは、論理要素の子を持たないコントロールのためのプロバイダ側インタフェースである。クライアントにとっては、同じメソッドが、このコントロールが論理要素を子として有するかのように見えるであろう。このインタフェースは、プロバイダが、選択または選択解除可能なコンテナ内の要素を操作するための機能を公開することを支援するように実装される。このインタフェースの一実施形態を下記の表に与える。
Figure 2006526183
また、コントロールパターンプロバイダインタフェース460は、セレクションプロバイダ(ISelectionProviderまたはISelectionInteropProvider)インタフェースも含み得る。セレクションプロバイダインタフェースは、セレクションを管理するコンテナを表すことができ、選択可能な要素を含む要素を操作するための機能を公開するためにプロバイダによって実装される。このインタフェースの一実施形態を次の表に示す。
Figure 2006526183
コントロールパターンプロバイダインタフェース460は、さらに、セレクション項目プロバイダ(ISelectionItemProviderまたはISelectionItemInteropProvider)インタフェースを含み得る。このインタフェースは、選択可能項目を定義し、それを選択または選択解除することができるようにその機能を公開し得る。
また、コントロールパターンプロバイダインタフェース460は、ソートプロバイダ(ISortProviderまたはISortInteropProvider)インタフェースも含み得る。このインタフェースは、コンテナの現在のソート順序を公開し、クライアントがプログラムでその要素を再ソートすることを可能にする。
コントロールパターンプロバイダインタフェース460によれば、値プロバイダ(IValueProviderまたはIValueInteropProvider)インタフェースが、関連する値を有する要素を表現し操作するために実装され得る。
コントロールパターンプロバイダインタフェース460には、ユーザに情報を伝えているイメージまたはアニメーションに関する情報を表すために、ビジュアル情報プロバイダ(IVisualInformationProviderまたはIVisualInformationInteropProvider)インタフェースが含まれ得る。
また、コントロールパターンプロバイダインタフェース460には、ウィンドウプロバイダ(IWindowProviderまたはIWindowInteropProvider)インタフェースも含まれ得る。このインタフェースは、要素がそのスクリーン上の位置またはサイズを変更する能力、ならびにビジュアル状態を変更する能力およびそれを閉じる能力を公開することができる。このインタフェースの一例を下記の表に与える。
Figure 2006526183
また、プロバイダ側API440は、補助クラス480も含み得る。補助クラス480は、クライアント側API305内で利用されるものと実質的に同一であってもよい。上記のように、クライアントおよびプロバイダが補助クラスを共有してもよい。この特徴について、図10に関連してさらに説明する。
図10は、クライアント側API305、アクセシビリティシステムコア201
、およびサーバ側API440の間のインタラクションを示している。クライアントアプリケーション300は、アクセシビリティシステムコア201を通じて情報を取得するために、オートメーションクラス312、論理要素クラス314、raw要素クラス316またはコントロールパターンクラス320を実装する。また、クライアントアプリケーション300は、クライアント補助クラス350および入力クラス340も実装し得る。
図10は、Win32 Run12を用いた実装A(10)およびWCP runを用いた実装B(20)とともにプロバイダ側API440を示している。実装Aは、オートメーションインターオペラビリティプロバイダインタフェース502、raw要素プロバイダインタフェース456、raw要素コンテクストインターオペラビリティプロバイダインタフェース452、およびコントロールパターンインタフェース460を必要に応じて使用する。実装Bは、オートメーションプロバイダ500、raw要素プロバイダインタフェース456、オートメーションプロパティプロバイダインタフェース448、raw要素コンテクストプロバイダインタフェース458、およびコントロールパターンインタフェース460を必要に応じて使用する。実装10および20は両方とも、プロバイダ補助クラス480を利用してもよい。上記のように、プロバイダ補助クラスは、クライアント補助クラス350と実質的に同一であってもよく、または、共有補助クラス510によって示されているようにクライアント補助クラス350とタイプを共有してもよい。上記のように、共有補助クラス510は、クライアントとプロバイダがプロパティ識別子、パターン識別子、およびイベント識別子のような情報を通信するために共有するタイプを含み得る。
動作において、クライアント側API305は、クライアント300が論理ツリーを取得することを可能にする。機能としては、(1)ポイントからポイントへの論理要素、(2)イベントからの論理要素、および(3)現在フォーカスのある論理要素がある。上記のように、論理要素はUIコンポーネントを表し、場合により、コントロール、コントロールの一部、またはコンテナあるいは論理グルーピング(すなわち、ダイアログ、ペイン、またはフレーム)を表す。コントロールは、その機能に関して多様であり得る。したがって、特定のタイプのコントロールに関連する機能を表すために異なるインタフェースが使用される。しかし、これらのコントロール固有のインタフェースは、すべてのコントロールに共通の機能を表す共通基本インタフェースから派生する。共通基本インタフェースはコアクラス310を含む。コアクラス310は、(1)論理ツリー222内をナビゲートするメソッド、(2)プロパティ値を取得する一般的メソッド、および(3)サポートされているコントロール固有のインタフェースにアクセスするメソッドを含む。論理ツリー222内をナビゲートする場合、それぞれの基盤アプリケーションのUIテクノロジがそれ自身のナビゲーション技法を提供する。
アプリケーションにおいてアクセシビリティシステムイベントの使用を開始するには、クライアント300は、次のいずれかを行えばよい:(1)オートメーションクラス312からの「AddTopLevelWindowEventHandler」メソッドを用いて、デスクトップ上に現れる新しいUIを発見し、そのイベントに対するハンドラにおいて、他のイベントに対する登録を行い、これにより、任意のプロセスからのイベントを受け取る;(2)オートメーションクラス312からの「Find」メソッドのうちの1つを用いて、関心のあるUIを位置判定し、特定のUIをターゲットとする;(3)ウィンドウハンドルやスクリーン上のポイントを見つける等、オートメーションクラス312からの他の何らかのメソッドを用いて関心のあるUIを発見し、そのハンドルまたはポイントを用いて、イベントをリスンするための基準として使用する論理要素を獲得する;または(4)オートメーションクラス312からの「AddFocusChangedEventHandler」メソッドを用いて入力フォーカスを追跡し、現在フォーカスを有しているUI上のイベントに対して登録を行う。
クライアント側API305およびサーバ側API440は、クライアント300のニーズを満たすように動作する。以下の例は、クライアントがどのようにクライアント側API305を使用し、その後、サーバ側API440がユーザインタフェース情報をクライアント300に提供するためにどのように呼び出されるかを示すために提供される。
トップレベルウィンドウイベントとしては、メニューおよびコンボボックスのドロップダウンに関連するイベントや、デスクトップを親とする任意のフィーチャ(feature:機能)がある。本発明の一実施形態では、トップレベルウィンドウが開くことおよび閉じることの通知を受け取るために、AddTopLevelWindowEventHandlerメソッドが使用される。AddTopLevelWindowEventHandlerを呼び出すと、カレントデスクトップ上で新しいトップレベルウィンドウが開くこと、またはトップレベルウィンドウが閉じることの通知が得られる。RemoveTopLevelWindowEventHandlerメソッドは、デスクトップ上でトップレベルウィンドウが開くこと、または閉じることの通知を受け取ることを停止するためのメカニズムを提供する。このメソッドは、このリスナを識別するためにコールバックオブジェクト(callback object)を使用する。したがって、RemoveTopLevelWindowEventHandlerメソッドに渡されるオブジェクトは、AddTopLevelWindowEventHandlerに渡されたものと同一である。開かれるそれぞれの新しいトップレベルウィンドウごとに、メソッドがプロバイダ側API440から呼び出される。同様に、トップレベルウィンドウが閉じた時に一度、メソッドがアクセシビリティシステム200によって呼び出され得る。これらの通知を受け取るには、クライアント300は、AddTopLevelWindowEventHandlerメソッドを呼び出す。
もう1つのタイプのイベントとして、フォーカスイベントがある。クライアント300は、フォーカスを追跡するメソッドをしばしば必要とする。これをMicrosoft Windows OSで行うことは困難である。例えば、メニュー(例えばMicrosoft WordにおけるFile(ファイル)メニュー)がドロップダウンされる時、メニュー内の項目は、ユーザが各項目にカーソルを移動して下って行くにつれてフォーカスを得る。メニューが閉じる時(例えばユーザがESCキーを押す)、現在では、送られるフォーカスイベントはない。代わりに、フォーカス変更に関心のあるクライアントは、いくつかのイベントをリスンして、それらのうちのいずれがフォーカス変更を論理的に表現しているかを見出さなければならない。本発明の一実施形態では、フォーカス変更イベントをリスナに通知するために、オートメーションクラス312からのAddFocusChangedEventHandlerメソッドを使用することができる。クライアント300は、このメソッドおよび他のイベント登録メソッドを用いて返されるプロパティのセットを指定することができる。クライアント300は、フォーカス変更の通知を受け取ることを停止するためにRemoveFocusChangedEventHandlerメソッドを呼び出すことができる。このメソッドは、このリスナを識別するためにコールバックオブジェクトを使用し得る。この場合、RemoveFocusChangedEventHandlerメソッドに渡されるオブジェクトは、AddFocusChangedEventHandlerプロシージャ(procedure)に渡されたものと同一となる。アクセシビリティシステム200は、クライアント300に通知するために、フォーカスが変化した時にプロバイダ側オートメーションクラス442からのRaiseFocusChangedEventのようなメソッドを呼び出すことができる。
プロパティ変更イベントは、論理要素のプロパティが変化する時に発火する。本発明の一実施形態では、クライアント300は、プロパティ変更の通知を受け取るために、オートメーションクラス312からのAddPropertyChangedEventHandlerメソッドを呼び出す。アクセシビリティシステム200は、AddPropertyChangedEventHandlerで指定された論理要素ツリー内の論理要素でプロパティの値が変化した時にプロバイダ側API440からのプロバイダ側メソッドを呼び出す。スコープパラメータが、どの要素についてイベントが発火すべきかを示す。例えば、ウィンドウのルート論理要素および子孫に対する要求を渡すことは、プロパティ変更コールバックをそのウィンドウに限定する。スコープパラメータがツリー内の全要素に設定されている場合、スコープは無視され、デスクトップ上で発生する指定されたプロパティに対する任意の変更が送られる。クライアント300は、異なるプロパティのセットおよび/または異なるコールバックオブジェクトを用いてAddPropertyChangedEventHandlerを複数回呼び出してもよい。アクセシビリティシステム200によって提供される通知は、変化したプロパティ、新しいプロパティ値、および利用可能であれば古いプロパティ値を示す。クライアント300は、プロパティ変更の通知を受け取ることを停止するためにRemovePropertyChangedEventHandlerメソッドを呼び出すことができる。このメソッドは、スコープ要素およびコールバックオブジェクトを用いてこのリスナを識別することができる。この場合、渡されるオブジェクトはAddPropertyChangedEventHandlerに渡されたものと同一でなければならない。プロバイダオートメーションクラス442は、オートメーションプロパティ変更をクライアント300に通知するためのRaiseAutomationPropertyChangedEventメソッドを含む。
クライアントオートメーションクラス312からのAddAutomationEventHandlerメソッドは、クライアント300がコントロールに対するイベントを受け取ることを可能にする。スコープパラメータは、どの要素に対してイベントを発火させるべきかを示すために使用可能である。例えば、ウィンドウのルート論理要素および要求側の子孫を渡すことは、イベントをそのウィンドウに限定する。ツリー内の全要素が要求される場合、デスクトップ上の全イベントが送られる。RemoveAutomationEventHandlerメソッドを用いて、コントロールに対するイベントを受け取ることを停止することができる。このメソッドは、リスナを識別するためにスコープ要素、コールバックオブジェクトおよびイベント識別子を使用することができる。この場合、渡されるオブジェクトは、AddAutomationEventHandlerメソッドに渡されたものと同一でなければならない。プロバイダオートメーションクラス442は、イベントをクライアント300に通知するためのRaiseAutomationEventメソッドを含む。
クライアントアプリケーション300がAddAutomationEventHandlerメソッドを呼び出すと、アクセシビリティシステム200は、コントロール固有のイベントが発火しイベントのソースがAddAutomationEventHandlerで指定された論理要素ツリー内の論理要素である場合に、プロバイダ側API440からのメソッドを呼び出す。コントロールに対するイベントが発火する時、イベント固有の情報が利用可能なことが多い。イベントを受け取ることを停止するために、RemoveAllEventHandlersメソッドを呼び出すことができる。これは、クライアントアプリケーションがシャットダウンする前にクリーンアップを行う迅速な方法である。この削除メソッドは、アプリケーション終了時に使用するのが最適であろう。
論理要素ツリーストラクチャが変化する時、論理ストラクチャ変更イベントが発火する。AddLogicalStructureChangedEventHandlerメソッドが、論理要素ツリーにおけるストラクチャ変更の通知を受け取るために実装され得る。論理要素が追加、削除または無効化される時、指定されたコールバックオブジェクトに対するメソッドが呼び出される。論理要素ツリー変更のイベントを受け取ることを停止するために、RemoveLogicalStructureChangedEventHandlerメソッドを呼び出すことができる。このメソッドは、このリスナを識別するためにコールバックオブジェクトおよびスコープ要素を使用することができる。この場合、渡されるオブジェクトはAddAutomationEventHandlerに渡されたものと同一でなければならない。プロバイダオートメーションクラス442は、論理ストラクチャ変更をクライアント300に通知するためのRaiseLogicalStructureChangedEventメソッドを含む。
UIオートメーションサーバまたはプロバイダ側API440は、サーバまたは基盤UIエンジンがプロパティ変更通知を遂行するために呼出し得るメソッドを含む。サーバ400は、UIが変化した時に適切なパラメータを生成するためにこれらの通知メソッドを呼び出すことができる。
以上、本発明を特定実施形態に関連して説明したが、これらの実施形態はすべての点において限定的ではなく例示的であることを意図している。本発明の範囲から逸脱することなく、本発明が関係する技術分野の当業者には、代替実施形態は明らかとなるであろう。
以上の記載から理解されるように、本発明は、上記のすべての目標および目的を、本システムおよび方法に固有の明らかな他の利点とともに、達成するのに適している。いうまでもなく、いくつかの特徴およびサブコンビネーション(sub-combination:小結合、副結合)が有益であり、他の特徴およびサブコンビネーションとは無関係に使用され得る。これは特許請求の範囲で考慮されている。
本発明の実施において使用するのに好適なコンピューティングシステム環境のブロック図である。 アクセシビリティシステム、クライアント環境、およびサーバ環境の間のインタラクションのブロック図である。 アクセシビリティシステムコアのコンポーネントを示すブロック図である。 ネイティブ要素からの論理ツリーの作成を示す図である。 ネイティブ要素からの論理ツリーの作成を示す図である。 ネイティブ要素からの論理ツリーの作成を示す図である。 ネイティブ要素からの論理ツリーの作成を示す図である。 論理ツリーを構築する手続きのシーケンスを示すフローチャートである。 論理要素を形成するダイアログボックスおよびそのコンポーネントを示す図である。 本発明のイベントメカニズムをアクティベートすることに関与する手続きを示すフローチャートである。 本発明の一実施形態におけるクライアント側APIを示すブロック図である。 本発明の一実施形態におけるサーバ側APIを示すブロック図である。 本発明のアクセシビリティシステムの一実施形態を用いたクライアントとサーバの間のインタラクションを示す図である。 イベント通知のための周知のシステムを示す図である。

Claims (64)

  1. ユーザインタフェース情報をクライアントに提供するアクセシビリティシステムにおいて使用するためのツールのシステムにおいて、該アクセシビリティシステムがクライアント側およびプロバイダ側を含み、
    ユーザインタフェース情報を求めるためのクライアントオートメーションクラスを含むクライアント側オートメーションツールであって、該クライアントオートメーションクラスがイベント登録ツールおよび論理要素発見ツールを含む、クライアント側オートメーションツールと、
    ユーザインタフェース情報を前記クライアントに提供するプロバイダ側オートメーションツールであって、イベント情報を前記クライアントに提供するツールを有するオートメーションプロバイダクラスを含む、プロバイダ側オートメーションツールと
    を備えたことを特徴とするツールのシステム。
  2. ユーザインタフェース要素を表現するクライアント側論理要素ツールをさらに備えたことを特徴とする請求項1に記載のシステム。
  3. raw要素ツリー内の要素を表現するクライアント側raw要素ツールをさらに備えたことを特徴とする請求項2に記載のシステム。
  4. 入力をシミュレートするメソッドを提供するクライアント側入力クラスをさらに備えたことを特徴とする請求項1に記載のシステム。
  5. マウス入力およびキーボード入力をシミュレートするツールをさらに備えたことを特徴とする請求項4に記載のシステム。
  6. 前記クライアントがアクセシビリティシステムコントロールパターンと相互作用(interact)することを可能にするクライアント側コントロールパターンクラスをさらに備えたことを特徴とする請求項2に記載のシステム。
  7. 前記クライアント側コントロールパターンクラスが、アプリケーションのメインウィンドウに関連する情報を公開(expose)するアプリケーションウィンドウパターンクラスを含むことを特徴とする請求項6に記載のシステム。
  8. 前記クライアント側コントロールパターンクラスが、表示することおよび非表示にすることが可能なコンテンツを操作するための展開・折りたたみパターンクラスを含むことを特徴とする請求項6に記載のシステム。
  9. 前記クライアント側コントロールパターンクラスが、項目(item)がグリッドの一部であるかどうかを発見するためのグリッド項目クラスを含むことを特徴とする請求項6に記載のシステム。
  10. 前記クライアント側コントロールパターンクラスが、論理ツリー内でのUI要素の関係とは独立なUI要素間の階層関係を公開するUI要素を表現するための階層項目パターンクラスを含むことを特徴とする請求項6に記載のシステム。
  11. 前記クライアント側コントロールパターンクラスが、単一の関連するアクションを有するオブジェクトを表現する呼出し(invoke)パターンクラスを含むことを特徴とする請求項6に記載のシステム。
  12. 前記クライアント側コントロールパターンクラスが、複数の表現の間の切替が可能な要素を操作するためのマルチビューパターンクラスを含むことを特徴とする請求項6に記載のシステム。
  13. 前記クライアント側コントロールパターンクラスが、コントロールの最小値および最大値を公開するためのレンジバリューパターンクラスを備えたことを特徴とする請求項6に記載のシステム。
  14. 前記クライアント側コントロールパターンクラスが、スクロールにより可視性の変更が可能な要素を操作するためのスクロールパターンクラスを備えたことを特徴とする請求項6に記載のシステム。
  15. 前記クライアント側コントロールパターンクラスが、選択および選択解除が可能なコンテナ内の要素を操作するためのセレクションパターンクラスを備えたことを特徴とする請求項6に記載のシステム。
  16. 前記クライアント側コントロールパターンクラスが、サブ要素をソートすることが可能なコンテナ要素を操作するためのソートパターンクラスを備えたことを特徴とする請求項6に記載のシステム。
  17. 前記クライアント側コントロールパターンクラスが、値を表すユーザインタフェース要素を表現するバリューパターンクラスを備えたことを特徴とする請求項6に記載のシステム。
  18. ユーザデスクトップ上のウィンドウを操作するためのウィンドウパターンクラスをさらに備えたことを特徴とする請求項6に記載のシステム。
  19. 追加機能を実行する補助ツールをさらに備えたことを特徴とする請求項1に記載のシステム。
  20. 追加プロパティを公開するためのプロバイダ側オートメーションインタフェースをさらに備えたことを特徴とする請求項1に記載のシステム。
  21. raw要素ツリーからの関係要素を返すプロバイダraw要素インタフェースをさらに備えたことを特徴とする請求項1に記載のシステム。
  22. 定義済みコントロールパターンに関連する動作および情報を公開するためのコントロールパターンプロバイダインタフェースをさらに備えたことを特徴とする請求項1に記載のシステム。
  23. ユーザインタフェース情報をクライアントに提供するアクセシビリティシステムに実装されるクライアント側ツールのシステムにおいて、該アクセシビリティシステムが、プロバイダ側から該クライアント側へユーザインタフェース情報を転送するメカニズムと、ユーザインタフェース情報を選択的に公開する論理ツリーを含み、該クライアント側ツールが、
    前記プロバイダ側からユーザインタフェースイベント情報を求めるクライアントオートメーションクラスを含むクライアント側オートメーションメカニズムと、
    前記論理ツリー内のユーザインタフェース要素を表現する論理要素クラスを含むクライアント側論理要素メカニズムと
    を備えたことを特徴とするクライアント側ツールのシステム。
  24. 前記クライアントオートメーションクラスが、オートメーションイベントハンドラを追加するツールおよび該オートメーションイベントハンドラを削除するツールを備えたことを特徴とする請求項23に記載のシステム。
  25. 前記クライアントオートメーションクラスが、オートメーションプロパティ変更イベントハンドラを追加するツールおよび該オートメーションプロパティ変更イベントハンドラを削除するツールを備えたことを特徴とする請求項23に記載のシステム。
  26. 前記クライアントオートメーションクラスが、フォーカス変更イベントハンドラを追加するツールおよびフォーカス変更イベントハンドラを削除するツールを備えたことを特徴とする請求項23に記載のシステム。
  27. 前記クライアントオートメーションクラスが、トップレベルウィンドウイベントハンドラを追加するツールおよびトップレベルウィンドウイベントハンドラを削除するツールを備えたことを特徴とする請求項23に記載のシステム。
  28. 前記クライアントオートメーションクラスが、論理ストラクチャ変更イベントハンドラを追加するツールおよび該論理ストラクチャ変更イベントハンドラを削除するツールを備えたことを特徴とする請求項23に記載のシステム。
  29. 前記クライアントオートメーションクラスが、論理要素を見つけるためのツールおよびraw要素を見つけるためのツールを備えたことを特徴とする請求項23に記載のシステム。
  30. raw要素ツリー内の要素を表現するクライアント側raw要素クラスをさらに備えたことを特徴とする請求項23に記載のシステム。
  31. 前記論理要素クラスが、要素によってサポートされるすべてのパターンを取得するためのツールをさらに備えたことを特徴とする請求項23に記載のシステム。
  32. 入力をシミュレートするメソッドを提供する入力クラスをさらに備えたことを特徴とする請求項23に記載のシステム。
  33. 前記入力がマウス入力およびキーボード入力を含むことを特徴とする請求項32に記載のシステム。
  34. ユーザインタフェース情報をクライアントに提供するアクセシビリティシステムに実装されるプロバイダ側ツールのシステムにおいて、該アクセシビリティシステムが、該プロバイダ側から該クライアントへユーザインタフェース情報を転送するメカニズムと、ユーザインタフェース情報を選択的に公開する論理ツリーを含み、該プロバイダ側ツールが、
    前記クライアントにイベント通知を提供するツールを含むプロバイダ側オートメーションクラスと、
    ユーザインタフェースプロパティを公開するプロバイダ側オートメーションインタフェースと、
    特定の関係要素に関連する情報を返すraw要素インタフェースと、
    特定の要素に関連しないイベントおよび機能を管理するraw要素コンテクストインタフェースと
    を備えたことを特徴とするプロバイダ側ツールのシステム。
  35. 前記プロバイダ側オートメーションクラスが、オートメーションイベントを発生するためのツールを含むことを特徴とする請求項34に記載のシステム。
  36. 前記プロバイダ側オートメーションクラスが、プロパティ変更イベントを発生するためのツールを含むことを特徴とする請求項34に記載のシステム。
  37. 前記プロバイダ側オートメーションクラスが、フォーカス変更イベントを発生するためのツールを含むことを特徴とする請求項34に記載のシステム。
  38. 前記プロバイダ側オートメーションクラスが、論理ストラクチャ変更イベントを発生するためのツールを含むことを特徴とする請求項34に記載のシステム。
  39. コントロールパターンプロバイダインタフェースをさらに備えたことを特徴とする請求項34に記載のシステム。
  40. 前記コントロールパターンプロバイダインタフェースが、トップレベルアプリケーションウィンドウに関連する動作および情報を公開するためのアプリケーションウィンドウプロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  41. 前記コントロールパターンプロバイダインタフェースが、コンテンツを非表示にし、および表示するための展開・折りたたみインタフェースを含むことを特徴とする請求項39に記載のシステム。
  42. 前記コントロールパターンプロバイダインタフェースが、基本グリッド機能を公開するためのグリッドプロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  43. 前記コントロールパターンプロバイダインタフェースが、前記クライアントがユーザインタフェース要素間の階層関係内を行き来する(traverse)ことを可能にする階層項目プロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  44. 前記コントロールパターンプロバイダインタフェースが、単一アクションを実行するオブジェクトによって使用される呼出しプロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  45. 前記コントロールパターンプロバイダインタフェースが、オブジェクトが複数の表現の間の切替を行う能力を公開するためのマルチビュープロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  46. 前記コントロールパターンプロバイダインタフェースが、有限範囲の値を管理する能力を可能にするプロパティのセットを公開するためのレンジバリュープロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  47. 前記コントロールパターンプロバイダインタフェースが、可視領域を変更する能力を公開するためのスクロールプロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  48. 前記コントロールパターンプロバイダインタフェースが、項目間の選択を提供する要素を公開するための識別による選択プロバイダを含むことを特徴とする請求項39に記載のシステム。
  49. 前記コントロールパターンプロバイダインタフェースが、セレクションを管理するコンテナを表現するためのセレクションプロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  50. 前記コントロールパターンプロバイダインタフェースが、サイズおよび位置を変更する能力を公開するためのウィンドウプロバイダインタフェースを含むことを特徴とする請求項39に記載のシステム。
  51. アクセシビリティシステムを通じてクライアントにユーザインタフェース情報を提供するアプリケーションプログラムインタフェースシステムにおいて、該アクセシビリティシステムが、プロバイダ側から該クライアント側へユーザインタフェース情報を転送するメカニズムと、ユーザインタフェース情報を選択的に公開する論理ツリーを含み、
    前記クライアントがユーザインタフェース情報を取得することを支援するクライアント側アプリケーションプログラムインタフェースであって、オートメーションクラス、論理要素クラス、raw要素クラス、コントロールパターンクラス、および入力クラスを含むクライアント側アプリケーションプログラムインタフェースと、
    クライアント要求に応答するプロバイダ側アプリケーションプログラムインタフェースであって、プロバイダオートメーションクラス、プロバイダオートメーションインタフェース、raw要素インタフェース、およびコントロールパターンプロバイダインタフェースを備えたプロバイダ側アプリケーションプログラムインタフェースと
    を備えたことを特徴とするアプリケーションプログラムインタフェースシステム。
  52. 前記プロバイダ側および前記クライアント側によって使用される補助クラスをさらに備えたことを特徴とする請求項51に記載のシステム。
  53. アクセシビリティシステムを通じてクライアントにユーザインタフェース情報を提供するコンピュータ実施方法において、該アクセシビリティシステムが、プロバイダ側から該クライアント側へユーザインタフェース情報を転送するメカニズムと、ユーザインタフェース情報を選択的に公開する論理ツリーを含み、
    前記クライアントがユーザインタフェース情報を取得することを支援するクライアント側アプリケーションプログラムインタフェースを提供することであって、該クライアント側アプリケーションプログラムインタフェースが、オートメーションクラス、論理要素クラス、raw要素クラス、コントロールパターンクラス、および入力クラスを含む、クライアント側アプリケーションプログラムインタフェースを提供すること、および
    クライアント要求に応答するプロバイダ側アプリケーションプログラムインタフェースを提供することであって、該プロバイダ側アプリケーションプログラムインタフェースが、プロバイダオートメーションクラス、プロバイダオートメーションインタフェース、raw要素インタフェース、およびコントロールパターンプロバイダインタフェースを備えた、プロバイダ側アプリケーションプログラムインタフェースを提供すること
    を含むことを特徴とするコンピュータ実施方法。
  54. 前記プロバイダ側および前記クライアント側によって使用される補助クラスを提供することをさらに含むことを特徴とする請求項53に記載の方法。
  55. アクセシビリティシステムを通じてクライアントにユーザインタフェース情報を提供するコンピュータ実施方法において、該アクセシビリティシステムが、プロバイダ側から該クライアント側へユーザインタフェース情報を転送するメカニズムと、ユーザインタフェース情報を選択的に公開する論理ツリーを含み、
    選択されたイベントハンドラを用いてクライアントオートメーションクラスに対してユーザインタフェース情報を要求すること、および
    対応するイベント発生メソッドを用いてユーザインタフェースイベント通知を提供するためのプロバイダオートメーションクラスを呼び出すこと
    を含むことを特徴とするコンピュータ実施方法。
  56. ユーザインタフェース要素情報を取得するために論理要素ツールを使用することをさらに含むことを特徴とする請求項55に記載の方法。
  57. raw要素ツリー内の要素に関するraw要素情報を取得するためにクライアント側raw要素ツールを使用することをさらに含むことを特徴とする請求項55に記載の方法。
  58. 入力をシミュレートするメソッドを提供するクライアント側入力クラスを利用することをさらに含むことを特徴とする請求項55に記載の方法。
  59. マウス入力およびキーボード入力をシミュレートすることをさらに含むことを特徴とする請求項58に記載の方法。
  60. 前記クライアントがアクセシビリティシステムコントロールパターンと相互作用することを可能にするクライアント側コントロールパターンクラスを使用することをさらに含むことを特徴とする請求項55に記載の方法。
  61. 追加機能を実行する補助ツールを実装することをさらに含むことを特徴とする請求項55に記載の方法。
  62. 追加プロパティを公開するためのプロバイダ側オートメーションインタフェースを利用することをさらに含むことを特徴とする請求項55に記載の方法。
  63. raw要素ツリーからの関係要素を返すプロバイダraw要素インタフェースを実装することを含むことを特徴とする請求項55に記載の方法。
  64. 定義済みコントロールパターンに関連する動作および情報を公開するためのコントロールパターンプロバイダインタフェースを実装することをさらに含むことを特徴とする請求項55に記載の方法。
JP2004570197A 2003-05-16 2003-05-17 ユーザインタフェースオートメーションフレームワークのクラスおよびインタフェース Pending JP2006526183A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/439,514 US7644367B2 (en) 2003-05-16 2003-05-16 User interface automation framework classes and interfaces
PCT/US2003/015272 WO2004107164A2 (en) 2003-05-16 2003-05-17 User interface automation framework classes and interfaces

Publications (1)

Publication Number Publication Date
JP2006526183A true JP2006526183A (ja) 2006-11-16

Family

ID=33417822

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004570197A Pending JP2006526183A (ja) 2003-05-16 2003-05-17 ユーザインタフェースオートメーションフレームワークのクラスおよびインタフェース

Country Status (12)

Country Link
US (1) US7644367B2 (ja)
EP (1) EP1625494A2 (ja)
JP (1) JP2006526183A (ja)
KR (1) KR20060015705A (ja)
CN (2) CN100538630C (ja)
AU (1) AU2003234590A1 (ja)
BR (1) BR0306624A (ja)
CA (1) CA2466184A1 (ja)
MX (1) MXPA04006404A (ja)
RU (1) RU2336557C2 (ja)
WO (1) WO2004107164A2 (ja)
ZA (1) ZA200404790B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542874A (ja) * 2005-05-27 2008-11-27 マイクロソフト コーポレーション リモート端末セッションにおけるアクセシビリティ・オプションを提供する技術

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040044892A1 (en) * 2002-09-03 2004-03-04 Elmar Dorner Content based messaging for e-learning
US20040043363A1 (en) * 2002-09-03 2004-03-04 Elmar Dorner Tutor interface with content based messaging
EP2256595B1 (en) * 2003-12-01 2019-12-25 BlackBerry Limited Method for providing notifications of new events on a small screen device
US7694232B2 (en) * 2004-08-03 2010-04-06 Research In Motion Limited Method and apparatus for providing minimal status display
US9122518B2 (en) * 2005-08-11 2015-09-01 Pantech Co., Ltd. Method for selecting and controlling second work process during first work process in multitasking mobile terminal
US20100180238A1 (en) * 2005-08-15 2010-07-15 Koninklijke Philips Electronics, N.V. User interface system for a personal healthcare environment
US7730495B2 (en) 2005-09-12 2010-06-01 Microsoft Corporation Declaratively defined control actions
KR100798916B1 (ko) * 2005-12-08 2008-01-29 한국전자통신연구원 웹 서비스 기반 개방형 api를 지원하는 애플리케이션서버에서 통신망 이벤트 통보 장치 및 그 방법
US7577909B2 (en) 2006-05-16 2009-08-18 Microsoft Corporation Flexible management user interface from management models
KR100843078B1 (ko) 2006-09-19 2008-07-03 삼성전자주식회사 유저인터페이스 흐름을 시뮬레이션 하는 장치 및 방법
US7979846B2 (en) * 2007-04-05 2011-07-12 Accenture Global Services Limited Automatic test generation for reference testing
US8615497B1 (en) * 2007-08-15 2013-12-24 Emc Corporation Assured federated records management
US20090106764A1 (en) * 2007-10-22 2009-04-23 Microsoft Corporation Support for globalization in test automation
US9659011B1 (en) * 2008-02-18 2017-05-23 United Services Automobile Association (Usaa) Method and system for interface presentation
KR101560183B1 (ko) * 2008-04-17 2015-10-15 삼성전자주식회사 사용자 인터페이스를 제공/수신하는 방법 및 장치
KR101545137B1 (ko) 2008-04-17 2015-08-19 삼성전자주식회사 사용자 인터페이스를 생성하는 방법 및 장치
KR20090110202A (ko) 2008-04-17 2009-10-21 삼성전자주식회사 개인화된 사용자 인터페이스를 디스플레이하는 방법 및 장치
EP2307962A1 (en) * 2008-06-06 2011-04-13 Sapient Corporation Systems and methods for visual test authoring and automation
US20100077304A1 (en) * 2008-09-19 2010-03-25 Microsoft Corporation Virtual Magnification with Interactive Panning
US8255875B2 (en) * 2008-09-30 2012-08-28 Rockwell Automation Technologies, Inc. Application builder for industrial automation
JP2010165337A (ja) 2008-12-15 2010-07-29 Sony Corp 情報処理装置、情報処理方法およびプログラム
US8312366B2 (en) * 2009-02-11 2012-11-13 Microsoft Corporation Displaying multiple row and column header areas in a summary table
US8433828B2 (en) * 2010-02-26 2013-04-30 Apple Inc. Accessory protocol for touch screen device accessibility
US9286246B2 (en) * 2010-09-10 2016-03-15 Hitachi, Ltd. System for managing task that is for processing to computer system and that is based on user operation and method for displaying information related to task of that type
US9524279B2 (en) 2010-10-28 2016-12-20 Microsoft Technology Licensing, Llc Help document animated visualization
WO2012174603A1 (en) * 2011-06-24 2012-12-27 Honeywell International Inc. Systems and methods for presenting dvm system information
US10362273B2 (en) 2011-08-05 2019-07-23 Honeywell International Inc. Systems and methods for managing video data
WO2013154448A1 (en) * 2012-04-10 2013-10-17 Cadence Design Systems, Inc. Method and system for automatically establishing a hierarchical parameterized cell (pcell) debugging environment
US9910833B2 (en) 2012-11-13 2018-03-06 International Business Machines Corporation Automatically rendering web and/or hybrid applications natively in parallel
RU2633149C2 (ru) * 2013-07-19 2017-10-11 Общество с ограниченной ответственностью "Мэйл.Ру" Способ и система автоматического генерирования графического пользовательского интерфейса и компьютерный носитель для выполнения способа с использованием системы
RU2583736C2 (ru) * 2014-02-13 2016-05-10 Общество С Ограниченной Ответственностью "Яндекс" Система и способ отображения результатов поиска
CN103984665B (zh) * 2014-06-05 2017-06-20 哈尔滨工业大学 基于LabVIEW的串口通信装置及方法
US10671235B2 (en) 2015-03-03 2020-06-02 Soroco Private Limited Software robots for programmatically controlling computer programs to perform tasks
CN109542644B (zh) * 2018-11-19 2022-12-09 北京小米移动软件有限公司 应用程序编程接口调用方法及装置
US11175809B2 (en) * 2019-08-19 2021-11-16 Capital One Services, Llc Detecting accessibility patterns to modify the user interface of an application
US11204789B2 (en) 2019-08-20 2021-12-21 Hyland Software Inc. Graphical user interface for macro generation, modification, and verification
US11144338B2 (en) * 2019-08-20 2021-10-12 Hyland Software, Inc. Computing system for macro generation, modification, verification, and execution
US11775321B2 (en) * 2020-08-03 2023-10-03 Automation Anywhere, Inc. Robotic process automation with resilient playback capabilities
US11520687B2 (en) 2020-11-20 2022-12-06 Bank Of America Corporation System and method for automated testing of an accessibility feature of a user device by emulating actions of users
CN113268236B (zh) * 2021-05-20 2024-03-08 湖南大学 一种rpa系统中基于功能增强技术的ui元素拾取方法和系统
CN113726610B (zh) * 2021-08-31 2023-08-08 中国平安人寿保险股份有限公司 基于路由协议的ui自动化测试方法、装置、设备及介质
CN113761524A (zh) * 2021-09-03 2021-12-07 奇安信科技集团股份有限公司 激活窗口审计方法及系统
US11550702B1 (en) * 2021-11-04 2023-01-10 T-Mobile Usa, Inc. Ensuring that computer programs are accessible to users with disabilities, such as for use with mobile phones
CN114327725B (zh) * 2021-12-28 2024-03-22 珠海豹趣科技有限公司 应用于Windows10系统的个性化任务栏显示方法及装置
CN114817078B (zh) * 2022-06-29 2022-11-29 荣耀终端有限公司 一种自动化测试的方法、装置及存储介质
CN116361011B (zh) * 2023-06-01 2023-08-11 深圳市莎科电子有限公司 操作手柄系统响应提速方法、装置和智能游戏手柄

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
US5898434A (en) 1991-05-15 1999-04-27 Apple Computer, Inc. User interface system having programmable user interface elements
JPH0546568A (ja) * 1991-08-08 1993-02-26 Internatl Business Mach Corp <Ibm> 分散アプリケーシヨン実行装置および方法
JP2525546B2 (ja) * 1992-09-08 1996-08-21 インターナショナル・ビジネス・マシーンズ・コーポレイション グラフィックリソ―ス・エディタ
US5432940A (en) 1992-11-02 1995-07-11 Borland International, Inc. System and methods for improved computer-based training
US5561444A (en) * 1992-12-21 1996-10-01 Apple Computer, Inc. Method and apparatus for providing visual feedback during manipulation of text on a computer screen
EP1174792A3 (en) * 1994-05-16 2007-07-25 Apple Computer, Inc. A graphical user interface and method
US6243102B1 (en) * 1994-05-16 2001-06-05 Apple Computer, Inc. Data-driven layout engine
DE69525249T2 (de) * 1994-05-16 2002-10-02 Apple Computer Umschaltung zwischen darstellungs-/verhaltensthemen in graphischen benutzeroberflächen
US5613122A (en) * 1994-11-14 1997-03-18 Object Technology Licensing Corp. Object-oriented operating system
US5642511A (en) 1994-12-16 1997-06-24 International Business Machines Corporation System and method for providing a visual application builder framework
US6307574B1 (en) * 1995-05-08 2001-10-23 Apple Computer, Inc. Graphical user interface with hierarchical structure for customizable menus and control objects
US5634002A (en) * 1995-05-31 1997-05-27 Sun Microsystems, Inc. Method and system for testing graphical user interface programs
JPH11514764A (ja) 1995-10-31 1999-12-14 エス.エム. ハーツ,フレデリック 所望のオブジェクトのカスタム化された電子識別のためのシステム
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
AU2759297A (en) 1996-05-20 1997-12-09 Cognos Incorporated Application services builder
CH690875A5 (de) 1996-05-21 2001-02-15 Hts High Technology Systems Ag Heim- und Gebäudeautomationssystem.
US6055515A (en) 1996-07-30 2000-04-25 International Business Machines Corporation Enhanced tree control system for navigating lattices data structures and displaying configurable lattice-node labels
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
US5893116A (en) 1996-09-30 1999-04-06 Novell, Inc. Accessing network resources using network resource replicator and captured login script for use when the computer is disconnected from the network
US5905492A (en) * 1996-12-06 1999-05-18 Microsoft Corporation Dynamically updating themes for an operating system shell
US5933824A (en) 1996-12-23 1999-08-03 Lsi Logic Corporation Methods and apparatus for locking files within a clustered storage environment
US6144377A (en) 1997-03-11 2000-11-07 Microsoft Corporation Providing access to user interface elements of legacy application programs
US6334157B1 (en) 1997-03-11 2001-12-25 Microsoft Corporation Programmatically providing direct access to user interface elements of an application program
US5953724A (en) 1997-11-24 1999-09-14 Lowry Software, Incorporated Global database library data structure for hierarchical graphical listing computer software
US6029170A (en) 1997-11-25 2000-02-22 International Business Machines Corporation Hybrid tree array data structure and method
US6363435B1 (en) 1998-02-03 2002-03-26 Microsoft Corporation Event sourcing and filtering for transient objects in a hierarchical object model
US6188399B1 (en) * 1998-05-08 2001-02-13 Apple Computer, Inc. Multiple theme engine graphical user interface architecture
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
US6348935B1 (en) 1998-11-30 2002-02-19 International Business Machines Corporation Programmable tree viewer graphical user interface with integrated control panel
US6262435B1 (en) 1998-12-01 2001-07-17 Marina V. Plat Etch bias distribution across semiconductor wafer
US7020847B1 (en) 1999-03-09 2006-03-28 Siemens Aktiengesellschaft Search and navigation device for hypertext documents
US6532023B1 (en) 1999-08-12 2003-03-11 International Business Machines Corporation Recording selected applet events of a user interaction sequence
US6559871B1 (en) 1999-09-29 2003-05-06 International Business Machines Corporation Asynchronous tree navigator graphical user interface and associated methods
US6622298B1 (en) * 2000-02-03 2003-09-16 Xilinx, Inc. Method and apparatus for testing software having a user interface
US7197546B1 (en) * 2000-03-07 2007-03-27 Lucent Technologies Inc. Inter-domain network management system for multi-layer networks
US6701514B1 (en) * 2000-03-27 2004-03-02 Accenture Llp System, method, and article of manufacture for test maintenance in an automated scripting framework
US20010028359A1 (en) * 2000-04-11 2001-10-11 Makoto Muraishi Test support apparatus and test support method for GUI system program
US7013340B1 (en) 2000-05-18 2006-03-14 Microsoft Corporation Postback input handling by server-side control objects
US7421645B2 (en) * 2000-06-06 2008-09-02 Microsoft Corporation Method and system for providing electronic commerce actions based on semantically labeled strings
US6662312B1 (en) * 2000-06-30 2003-12-09 Qwest Communications International Inc. Software-testing automation system
US7010793B1 (en) 2000-10-12 2006-03-07 Oracle International Corporation Providing an exclusive view of a shared resource
JP2004534978A (ja) 2000-11-16 2004-11-18 マイ ディーティービー ビデオ・プログラミング・イベントの望ましさを決定するシステムおよび方法
US6996800B2 (en) * 2000-12-04 2006-02-07 International Business Machines Corporation MVC (model-view-controller) based multi-modal authoring tool and development environment
US20030046316A1 (en) * 2001-04-18 2003-03-06 Jaroslav Gergic Systems and methods for providing conversational computing via javaserver pages and javabeans
RU22281U1 (ru) 2001-05-16 2002-03-10 Полянин Андрей Витальевич Система для предоставления доступа к платным ресурсам в сети связи и карточка пользователя платными ресурсами
US6948152B2 (en) * 2001-09-14 2005-09-20 Siemens Communications, Inc. Data structures for use with environment based data driven automated test engine for GUI applications
US6961873B2 (en) * 2001-09-14 2005-11-01 Siemens Communications, Inc. Environment based data driven automated test engine for GUI applications
US20030063120A1 (en) 2001-09-28 2003-04-03 Wong Hoi Lee Candy Scalable graphical user interface architecture
US7934162B2 (en) * 2001-09-28 2011-04-26 Ntt Docomo, Inc. Running state migration of platform specific graphical user interface widgets between heterogeneous device platforms
RU2192049C1 (ru) 2001-12-26 2002-10-27 Гаврилов Сергей Анатольевич Способ распространения рекламно-информационных сообщений (варианты)
US7177814B2 (en) * 2002-02-07 2007-02-13 Sap Aktiengesellschaft Dynamic grammar for voice-enabled applications
US7058890B2 (en) 2002-02-13 2006-06-06 Siebel Systems, Inc. Method and system for enabling connectivity to a data system
US7284204B2 (en) 2002-03-29 2007-10-16 International Business Machines Corporation System, method, and visual user interface for evaluating and selecting suppliers for enterprise procurement
CA2391733A1 (en) 2002-06-26 2003-12-26 Ibm Canada Limited-Ibm Canada Limitee Framework to access a remote system from an integrated development environment
CA2391719A1 (en) 2002-06-26 2003-12-26 Ibm Canada Limited-Ibm Canada Limitee Editing files of remote systems using an integrated development environment
CA2391756A1 (en) 2002-06-26 2003-12-26 Ibm Canada Limited-Ibm Canada Limitee Accessing a remote iseries or as/400 computer system from the eclipse integrated development environment
US20040003349A1 (en) 2002-06-28 2004-01-01 Microsoft Corporation Content segments
US7188340B2 (en) 2002-06-28 2007-03-06 Microsoft Corporation Hybrid tree for mixed user interface elements and sequential data
US7434167B2 (en) 2002-09-30 2008-10-07 Microsoft Corporation Accessibility system and method
EP1406183A3 (en) 2002-10-01 2004-04-14 Sap Ag Method and system for refreshing browser pages
US7792866B2 (en) 2003-08-25 2010-09-07 International Business Machines Corporation Method and system for querying structured documents stored in their native format in a database
US7571391B2 (en) 2003-10-17 2009-08-04 Sap Ag Selective rendering of user interface of computer program
US7356472B2 (en) * 2003-12-11 2008-04-08 International Business Machines Corporation Enabling speech within a multimodal program using markup
US7448041B2 (en) * 2004-04-28 2008-11-04 International Business Machines Corporation Interfacing an application server to remote resources using Enterprise Java Beans as interface components

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542874A (ja) * 2005-05-27 2008-11-27 マイクロソフト コーポレーション リモート端末セッションにおけるアクセシビリティ・オプションを提供する技術

Also Published As

Publication number Publication date
RU2336557C2 (ru) 2008-10-20
RU2004119831A (ru) 2005-04-10
AU2003234590A1 (en) 2005-01-21
US20040229200A1 (en) 2004-11-18
CN101615122B (zh) 2014-04-02
CA2466184A1 (en) 2004-11-16
MXPA04006404A (es) 2005-04-19
BR0306624A (pt) 2005-02-09
WO2004107164A3 (en) 2005-06-30
US7644367B2 (en) 2010-01-05
EP1625494A2 (en) 2006-02-15
CN100538630C (zh) 2009-09-09
ZA200404790B (en) 2006-06-28
CN101615122A (zh) 2009-12-30
KR20060015705A (ko) 2006-02-20
CN1688970A (zh) 2005-10-26
WO2004107164A2 (en) 2004-12-09

Similar Documents

Publication Publication Date Title
US7644367B2 (en) User interface automation framework classes and interfaces
JP4942932B2 (ja) ユーザインターフェース情報へのアクセスを提供するためのシステムおよび方法
US7191410B1 (en) Managing information display
KR100986415B1 (ko) 커맨드 바인딩을 수행하기 위한 데이터-바인딩 매카니즘의 애플리케이션
KR101292401B1 (ko) 풍부한 데이터 바인딩된 애플리케이션
KR20050039547A (ko) 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스
JP2008506185A (ja) 自動テキスト生成
JP2006506698A (ja) マルチメディア・ファイルのツールチップ
AU2003201954B2 (en) Accessibility system events mechanism and method
US20040061714A1 (en) Logical element tree and method
US20050015780A1 (en) Method and system for providing information related to elements of a user interface
JP2007538314A (ja) 汎用ユーザインターフェースコマンドアーキテクチャ
RU2316043C2 (ru) Механизм и способ предоставления информации событий в системе доступа
Millas Microsoft. Net Framework 4. 5 Quickstart Cookbook
NZ524858A (en) Receiving user interface information from server for keeping track of changes to user interface depending on client&#39;s registration
JPH09305366A (ja) 画面表示最適化方法
JP5251863B2 (ja) ツリ−構造を利用した、ユ−ザ・インタフェイスの構成要素情報の記録およびユ−ザ・インタ−フェイス操作を記録再生するためのプログラム
Cameron et al. Design-Time Support

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090218

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090327