(57)【特許請求の範囲】
【請求項１】
コンピュータに実行させると、ユーザインタフェース上に提供される要素を操作するユーティリティ機能を実現するプログラムが格納されたコンピュータ読取り可能記録媒体であって、前記プログラムは、
前記ユーザインタフェース上の前記要素に対して、前記要素がコントロールパターンをサポートするかどうかを照会するステップであって、前記要素は、特定の要素型であり、前記要素によってサポートされているコントロールパターンと、前記コントロールパターンに関連付けられ、前記要素によってサポートされている少なくとも１つのメソッドを含むインタフェースとを有し、前記コントロールパターンは、複数の要素型によって示される機能を記述する、ステップと、
前記照会の応答として前記要素から前記コントロールパターンを受信して、前記要素がサポートするコントロールパターンを識別するステップと、
前記要素が前記コントロールパターンをサポートする場合に、前記メソッドを含むインタフェースに含まれる少なくとも１つのメソッドを使用して、前記要素を操作することにより、前記要素は、前記要素型を参照せずに、前記コントロールパターンに関連付けられた前記メソッドを含むインタフェースを介して操作される、ステップと
を実行するコンピュータ実行可能な命令を備えたことを特徴とするコンピュータ読取り可能記録媒体。
【請求項２】
前記複数の要素型によって示される機能は、１または複数のあらかじめ定義されたメソッド、ストラクチャ、プロパティ、またはイベントを備えることを特徴とする請求項１に記載のコンピュータ読取り可能記録媒体。
【請求項３】
前記要素は、複数の異なるコントロールパターンをサポートすることを特徴とする請求項１に記載のコンピュータ読取り可能記録媒体。
【請求項４】
前記複数の要素型によって示される機能は、前記要素の振る舞い、および前記要素が前記ユーザインタフェース上でユーザに提供する機能を記述することを特徴とする請求項１に記載のコンピュータ読取り可能記録媒体。
【請求項５】
前記要素は、前記ユーザにとって重要と見なされる情報を収集するための複数のプロパティを有し、前記プログラムは、
前記要素に前記複数のプロパティを要求すること、および、
前記複数のプロパティによって前記要素に関する情報を前記ユーザインタフェースに提示すること
をさらに実行するコンピュータ実行可能な命令を備えたことを特徴とする請求項１に記載のコンピュータ読取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータソフトウェアに関し、より詳細には、コンピュータソフトウェアのユーザインタフェースアクセシビリティ機能に関する。
【背景技術】
【０００２】
通常使用される方法でコンピュータユーザインタフェースと対話することができない人々もいる。例えば、小さなアイコンおよび字体は、視覚障害者には困難をもたらす。音響アラートおよび音響フィードバックは、聴覚障害者にとっては役に立たない。コンピュータ業界は、このような必要性に敏感である。いくつかのオペレーティングシステムは、障害を持つ人々が自分の必要性により適合するようにユーザインタフェースを変更できるようにする追加のアクセシビリティ機能を搭載している。例えば、いくつかのオペレーティングシステムは、そうでなければ音響フィードバックが使用されるはずの場合に、ユーザが視覚的フィードバックを使用可能にできるようにする。さらに、追加の大画面フォントやハイコントラスト方式を、低視力のユーザ向けに使用することができる。盲目など極度の視覚障害を持つ人々向けに、いくつかのオペレーティングシステムは、ユーザインタフェースの要素を読み上げる「スクリーンリーダ（screen reader）」をユーザに提供し、あるいは他の会社がこのようなスクリーンリーダを提供できるようにするインフラストラクチャを提供している。
【０００３】
典型的なスクリーンリーダユーティリティを、ユーザが使用することがあるどのようなアプリケーションとも同時に実行することができる。ユーザが、例えば１つのボタンから他のボタンにタブで移動することにより、要素から要素に移動するとき、スクリーンリーダは、現在の要素に関する情報を、ユーザに伝えるためにテキスト音声変換エンジンおよび／またはリフレッシュ可能点字ディスプレイに送る。テキスト音声変換エンジンは、この情報をユーザに通知するために合成音声に変換する。リフレッシュ可能点字ディスプレイは、その情報を明確に定義された点（すなわちブライユ点字）に変換し、ブライユ点字におけるそれぞれの点に対応する物理的ハードウェア装置上のピンを立てる。ボタンの場合、スクリーンリーダは、しばしばボタンの名前、およびそのボタンの現在の状態（例えば、現在ボタンが使用不可であり、したがって押すことができない）を伝える。同様に、ユーザがワードプロセッシングアプリケーションを使用している場合、スクリーンリーダは、フォアグラウンドウィンドウ（すなわちアプリケーション名）、および現在の行、センテンス、単語、あるいは挿入ポイントに最も近い文字を識別するように構成することができる。スクリーンリーダはまた、フォントの名前、太さ、色、強調、および位置調整などテキストの属性を示すこともできる。しばしば、スクリーンリーダはまた、ユーザが現在どのような操作を行うことができるかを通知する。例えば、ユーザがあるボタンに移動した場合に、スクリーンリーダは、スペースキーを押すことによってそのボタンを押すことができるとユーザに通知することができる。
【０００４】
スクリーンリーダは、ある種の視覚障害を持つコンピュータユーザには不可欠なものである。一般に、多くのユーザは、技術によって高めることができる彼らの可動性、知覚、または他の機能の喪失を補償するための支援技術製品なしに、コンピュータを簡単には利用できないだろう。しかし、現在のソフトウェア設計の方法論では、スクリーンリーダなどの支援技術製品を設計するのは困難である。先に述べたように、支援技術製品は、一般的に、現在実行されているアプリケーション、またはオペレーティングシステム環境それ自体に対する変更の通知を受け取る。この通知はしばしば、ある要素（例えば、ボタンやリストボックス）から他の要素（例えば、編集フィールドやアイコンなど）にフォーカスが変更されたこと、または、新しい要素が作成もしくは破棄された（例えばウィンドウが開いたもしくは閉じた）ことを示すイベントの形をとる。アプリケーションに関連する選択マネージャは、このようなイベントを生成しオペレーティングシステムに変更を通知する。支援技術製品は、それに応答して、どの要素がイベントと関連するか（例えば、どの要素がフォーカスされているか）を判断するために選択マネージャに照会することができ、したがってユーザに伝える追加の情報を取得することができる。
【０００５】
この時点で、支援技術製品は、要素の型（例えば、ボタンやリストボックスなど）、画面上の位置、表題など１組の限られた情報をこの要素に要求することができるだけである。次いで、支援技術製品それ自体が、返された要素型からどの機能がユーザに利用可能であるかを推定しなければならない。言い換えれば、支援技術製品は、「ボタン」が何であるかを、またボタンが押される（呼び出される）可能性があることを理解しなければならない。したがって、優れた支援技術製品の設計者は、アプリケーションに含まれ得るすべての要素型をあらかじめ定義しその機能を識別しなければならない。ソフトウェア産業全体にわたり、ソフトウェア会社によって新しい型の画面要素またはコントロールが日常的に作り出されているため、このような作業は不可能である。さらに、これは、すべての要素が独自なものではないので、リソースの使用が非効率的である。多くの要素は、呼び出され得ることや、その中から１または複数の項目を選択することができる項目の集合を管理できることなど同様の機能を共有する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
アプリケーションのより一般的な分類にあるオートメーションユーティリティは、こうした支援技術製品とほぼ同じ１組の要件を有している。一般に、オートメーションユーティリティは、あるコントロールから他のコントロールにフォーカスが切り換わったときなどに、諸要素のオブジェクト階層をトラバースするか、イベント通知を受け取ることにより、動的に画面要素（例えばコントロール）を見つける能力を必要とする。これらのユーティリティは、ユーザに伝えるか、またはあとで参照するために記憶することができ、人間が理解可能な情報を求めて、このような要素に照会する一般的なメカニズムも必要とする。最後に、オートメーションユーティリティは、要素がオートメーションユーティリティに全く知られていないときでも、特定の画面要素によって提供される機能または振る舞いが何であるかを見つける能力が必要である。ユーザインタフェースの要素を見つけ、可能な諸要素のすべての範囲に対して適用できる方式でその関連する機能を照会し操作するための優れたメカニズムは、遺憾ながら当業者には実現できなかった。
【課題を解決するための手段】
【０００７】
本発明は、ユーザインタフェース要素（またはコントロール）の機能を、要素型を事前に知ることなくプログラムでアプリケーションに利用可能にすることを対象とする。さらに、本発明は、支援技術製品（例えば視覚障害者用のスクリーンリーダ）などのオートメーションユーティリティを使用してユーザに伝えることができる情報に対する制御を、ソフトウェア開発者に提供するためのメカニズムを対象とする。簡単に述べれば、コントロールパターンは、１または複数の要素型によって示され得る機能を記述するために使用される。２つ以上の要素型の間で共通の機能は、同じコントロールパターンによって記述される。特定のあらかじめ定義されたメソッド、ストラクチャ、プロパティ、および／またはイベントを、特定のコントロールパターンと関連付けることができる。コントロールパターンをサポートする要素は、照会されたとき、このメソッド、ストラクチャ、プロパティ、および／またはイベントを記述するインタフェースを返す。このようにして、オートメーションユーティリティは、要素が特定のコントロールパターンまたは１組のコントロールパターンをサポートしていることを要素が確認することができる限り、その要素によってサポートされる機能を事前に知ることなく、要素を操作することができる。
【０００８】
他の態様では、オートメーションユーティリティまたはそのユーティリティのユーザに有用であり得る１組の情報を人間が理解できる形で定義する複数のプロパティが、各要素に付属する。このようにして、ソフトウェア開発者は、要素が記述されるとき、まさにどんな情報を収集しユーザに提示することができるかに関してより強い制御を有し、それによってユーザエクスペリエンスを改善することができる。
【発明を実施するための最良の形態】
【０００９】
本発明は、支援技術製品、自動化テストスクリプト（automated testing script）、マクロレコーダ、コマンドアプリケーション（commanding application）などのオートメーションユーティリティが、ユーザインタフェース要素に関する記述情報を収集し、要素がどの型であるかを正確に知ることなく、要素が提供する機能が何であるかを判断できるようにするメカニズムを提供する。簡単に述べると、本発明では、各要素ないしコントロールが、オートメーションユーティリティにとって重要な２つの側面、すなわち（１）要素の外観、位置、および現在の状態を記述する情報、（２）要素が示す機能を含むと判断した。この判断に鑑みて、本発明では、その要素が何であるかについての記述を含む複数のプロパティを、それがユーザに伝達できる形で（例えば人間が理解できる形で）要素に割り当てる。本発明ではさらに、要素によって利用可能にすることができ、要素が何であるかを正確に知ることなく直接アクセスすることができる機能のグループを識別する。
【００１０】
まずここで、本発明の実施形態を実装できる例示的コンピューティング環境の一例に関して本発明を説明する。次に、本発明の特定の一実装形態の詳細な例を説明する。この特定の実装形態のいくつかの細部に関して、代替実装形態を含めることもできる。本発明の実施形態は、本明細書に記載されるものに限定されないことを認識されたい。
【００１１】
（本発明の例示的コンピューティング環境）
図１は、本発明の例示的実装形態に使用することができるコンピューティング装置を示す。図１を参照すると、本発明を実装するためのある例示的システムは、コンピューティング装置１００などのコンピューティング装置を含む。非常に基本的な構成では、コンピューティング装置１００は、典型的には、少なくとも１つの処理装置１０２およびシステムメモリ１０４を含む。コンピューティング装置の厳密な構成およびタイプに応じて、システムメモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭやフラッシュメモリなど）、またはこの２つのある組合せであり得る。システムメモリ１０４は、一般にオペレーティングシステム１０５、１または複数のプログラムモジュール１０６を含み、プログラムデータ１０７を含むこともできる。コンピューティング装置１００のこの基本的な構成は、図１では破線１０８の範囲内のコンポーネントによって示されている。
【００１２】
コンピューティング装置１００は、追加の特徴または機能を有することができる。例えば、コンピューティング装置１００はまた、例えば磁気ディスク、光ディスク、テープなど追加の（リムーバルおよび／または非リムーバル）データ記憶装置を含むことができる。このような追加の記憶装置が、図１ではリムーバル記憶装置１０９、および非リムーバル記憶装置１１０によって示されている。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するために任意の方法または技術で実装される揮発性および不揮発性、ならびに、リムーバルおよび非リムーバルの媒体を含むことができる。システムメモリ１０４、リムーバル記憶装置１０９、非リムーバル記憶装置１１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、あるいは、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多目的ディスク）、または他の光記憶装置、あるいは、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは、他の任意の媒体が含まれる。これらの媒体は、望ましい情報を記憶することができ、コンピューティング装置１００によってアクセスすることができる、このようなコンピュータ記憶媒体は、デバイス１００の一部分とすることもできる。コンピューティング装置１００はまた、キーボード１２２、マウス１２３、ペン、音声入力装置、タッチ入力装置、スキャナなどの入力装置１１２を含むこともできる。ディスプレイ、スピーカ、プリンタなどの出力装置１１４も含むことができる。これらの装置は、当技術分野で周知でありここで詳細に論じる必要はない。
【００１３】
コンピューティング装置１００はまた、その装置を、例えばネットワークを介して、他のコンピューティング装置１１８と通信できるようにする通信接続１１６を含むことができる。通信接続１１６は、通信媒体の一例である。通信媒体は、通常は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、搬送波など変調されたデータ信号の形の他のデータ、または他の移送メカニズムによって実施することができ、任意の情報送達媒体を含むことができる。「変調されたデータ信号」の用語は、その１組の特徴の１または複数を有する信号、すなわち情報を信号として符号化するように変更された信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワーク、直接有線接続などの有線媒体、ならびに、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。本明細書で使用される用語であるコンピュータ読取り可能媒体には、記憶媒体と通信媒体の両方が含まれる。
【００１４】
（本発明の例示的実施形態）
図２は、本発明を実装した１つのシステムのコンポーネントを概略的に示す機能ブロック図である。図２には、オートメーションユーティリティ（例えば支援技術製品）２０１およびアプリケーション２０２が示されている。アプリケーション２０２は、複数の要素を含む。この議論では、用語「要素」は、ユーザがそれと対話することができ、ユーザにある意味のある情報を提供し、また、アプリケーション２０２に機能を提供する、ユーザインタフェースの任意のコンポーネントを意味するものとする。用語「コントロール」もまた、時々このような要素を示すために使用される。ユーザは、アプリケーション２０２に図示されている要素のうちの多くと対話することができる。例えば、アプリケーション２０２は、複数のメニューを備えたメニューバー２１２を含み、各メニューは関連する一連のメニュー項目を有している。編集メニュー２１４は、複数のメニュー項目２１５を有するドロップダウンメニューリストを含む。
【００１５】
一部の要素は、他の要素内に含まれる。例えば、リストビュー（list view）２２０は、アイコン２２２などのいくつかのアイコンを含む。フレーム２２５は、コンボボックス（combo box）２３０と、２つのボタン、すなわちボタン２３１およびボタン２３２を含む。さらに、フレーム２２５およびリストビュー２２０は、タブ付きダイアログ（tabbed dialog）要素２２１に含まれている。通常のコンピュータの用語では、別の要素内に含まれている各要素は、その要素を含む要素の子と見なされる。したがって、コンボボックス２３０は、フレーム２２５の子である。フレーム２２５およびリストボックス２２０は、タブ付きダイアログ要素２２１の子である。
【００１６】
ユーザは、ある要素から他の要素にいくつかの方法で移動することができる。１つは、マウスポインタをある要素から他の要素に移動させる方法である。別の方法は、タブキーや方向矢印キーを押すことであろう。ユーザの移動した先の要素、すなわち「現在アクティブ」な要素は、「フォーカス」を有すると見なされる。例えば、図２に示されるように、メニュー項目２１６が選択され現在フォーカスを有している。ユーザがある要素から別の要素に移動すると、オートメーションユーティリティ２０１は、フォーカスを得た要素について自動的に通知を受けることができる。オートメーションユーティリティ２０１がスクリーンリーダである場合、スクリーンリーダは、新しくフォーカスされた要素の名前またはラベルを取り出しその情報をユーザに「話す」。スクリーンリーダは、アクティブウィンドウのタイトル、メニューオプション、入力されたテキストなどを読み上げることができる。実際、スクリーンリーダは、テキスト情報を収集し、次いでそれを音声変換エンジンに渡して、そこでそのテキストを合成音声出力に変換する。ここではスクリーンリーダであるとして説明しているが、オートメーションユーティリティは、音声およびディクテーションソフトウェア、コマンドおよびコントロールユーティリティ、マクロレコーダ、自動化テストスクリプト、コマンドユーティリティなど多数の異なるタイプのどのユーティリティとすることもできることを認識されたい。
【００１７】
上に述べたように、従来は、オートメーションユーティリティ２０１は、現在フォーカスを有する要素の型を単に判断し、そのコントロールの型（例えば、ボタン、メニュー項目、編集可能テキストフィールドなど）を使用して、ユーザに伝えるべきコントロール特有の情報を抽出していた。さらに詳細はすぐ後で述べるが、本発明によれば、要素は、その要素をまとめて記述する複数の共通のプロパティおよび特有のプロパティを含むように構成され、ユーザエクスペリエンスを補足するためにオートメーションユーティリティ２０１によって使用することができる。これらのプロパティによってある要素に関する情報を示すことによって、開発者は、本発明を利用するオートメーションユーティリティ２０１を使用したとき、どのような情報をユーザに伝えるかを定義することに関してより強い制御ができるようになる。言い換えれば、画面上の要素に関連する型をベースとする情報に限らず、オートメーションユーティリティ２０１は、ユーザに対し、特定の要素に関する人間が理解できる任意の情報の文字列を伝え、その要素の振る舞いまたは目的を述べることができるようになる。
【００１８】
要素のほとんどは、対話的であり、アプリケーション２０２がその意図された方式で実行されるようにする機能を提示する。例えば、ボタン２３１をクリックすることにより、おそらくアプリケーション２０２によってある反応がもたらされる。ボタン２３２をクリックすることにより、おそらくアプリケーション２０２によって別のある反応がもたらされる。メニュー項目２１６を選択することにより、おそらくさらに別の反応がもたらされる。
【００１９】
各要素は、やや異なることがあるが、その多くが同様の基本的な機能の特性を示す。これらの基本的な機能の特性は、アプリケーション２０２によって行われ得る特定の反応ではなく要素それ自体の振る舞いに関係するものである。すなわち、アプリケーション２０２は、どちらのボタンがクリックされるかによって異なるように反応し得るが、ボタン２３１およびボタン２３２は、両方ともクリック可能である。同様に、メニュー項目２１５およびコンボボックス２３０内の項目は、選択可能である。それとは対照的に、異なる要素型のほとんどは、いくつかの異なる基本的な機能も有する。例えば、コンボボックス２３０は、編集ボックス部分２３３内でテキストが編集できるようにされているのに対し、メニュー項目２１５は、その内容を編集できる機能を提供していない。
【００２０】
本発明者は、多くの異なる要素型に存在する基本的機能のあるパターンを決定する。この決定によって、要素によって示すことができる基本的な機能を記述するための「コントロールパターン」の確立が可能になる。コントロールパターンは、要素の振る舞いを記述するためのメカニズムである。より詳細には、特定のコントロールパターンは、要素によってサポートされる特定のストラクチャ、プロパティ、イベント、およびメソッドを定義することができる。要素は、複数のコントロールパターンをサポートすることができる（また、たいていはサポートする）。要素によってサポートされるコントロールパターンの集合体が、要素の振る舞いの全体を定義する。
【００２１】
アプリケーションは、要素の振る舞いを判断するために、要素が特定のコントロールパターンをサポートするかどうかを照会することができる。したがって、特定の要素の型を事前に知らずに、クライアントアプリケーションは、要素が特定のコントロールパターンをサポートするかどうかを照会することにより、その要素に利用可能な機能を見つけることができる。アプリケーションは、次いで、そのコントロールパターンに関連する共通のインタフェースを介して要素をプログラムで操作することができる。わずかにもしくは全く異なる振る舞いを有する新しい要素を作成することができるが、それでもアプリケーションは、新しい要素がサポートするコントロールパターンを照会することによって新しい要素と対話することもできる。次の表に、いくつかの例示的コントロールパターンと、そのコントロールパターンに関連する１組の振る舞いを示す。
【００２２】
【表１−１】
0004503438.tif 000002
【００２３】
【表１−２】
0004503438.tif 000003
【００２４】
したがって、図２に示す要素は、特定の要素型に予想される振る舞いの型を表すための適切なコントロールパターンで構成することができる。次の表に、それらの一般的な要素の振る舞いを定義するのに使用することができる、いくつかの一般的な要素およびコントロールパターンを記述する。
【００２５】
【表２】
0004503438.tif 000004
【００２６】
図３は、図２に示したアプリケーション２０２の要素を表すオブジェクトツリー３０１を図示したものである。オブジェクトツリー３０１内の１または複数のオブジェクトが、アプリケーション２０２の対応する要素を表す代理（proxy）またはラッパー（wrapper）のオブジェクトであり得ることを認識されたい。しかし、この議論では、単に話を簡単にするために、オブジェクトツリー３０１内の各オブジェクトを実際の要素として扱うことにする。メインアプリケーションウィンドウは、フォームオブジェクト３０５として表され、アプリケーション２０２の各要素は、オブジェクトツリー３０１内の対応するオブジェクトを含む。例えば、図２のタブ付ダイアログ２２１の各部分は、オブジェクトツリー３０１内に対応するタブ項目（タブ３０６、タブ３０７、タブ３０８）を有する。同様に、リストビュー２２０およびフレーム２２５は、オブジェクトツリー３０１内の対応するオブジェクト（リストビュー３１１、およびフレーム３１２）を有する。親／子関係もまた、オブジェクトツリー３０１内で表されている。例えば、フレームオブジェクト３１２は、フレーム２２５内に含まれている要素に対応する子オブジェクト（コンボボックス２３０、ボタン３２１、ボタン３２２）を有する。
【００２７】
動作に際しては、ユーザがこのアプリケーションにおけるある要素から別の要素に移動するとき、アプリケーション２０２に関連する選択マネージャが、フォーカスが変更されたことを、（図３にオブジェクトとして示されている）オートメーションユーティリティ２０１に通知する。スクリーンリーダの場合、このフォーカスの変更により、複数のプロパティ、およびこの要素にサポートされるコントロールパターンを得るために、フォーカスを有する現在の要素を表す特定のオブジェクトへの照会をオートメーションユーティリティ２０１に行わせることができる。フォーカスの変更は、オートメーションユーティリティが、要素にこのような情報を照会することを選択することのある多数の可能な理由の１つにすぎない。
【００２８】
オブジェクトツリー３０１のサブツリー４０１を図４に示す。動作をより詳しく説明するために、オートメーションユーティリティ２０１はスクリーンリーダであると仮定する。ユーザが、ボタン２３１に移動したとき、スクリーンリーダは、その対応するオブジェクト（ボタン３２１）に照会し、ユーザに読み上げるために、人間が理解可能な文字列であるそのＮａｍｅ（名前）プロパティ４１０を取り出す。Ｎａｍｅプロパティ４１０は、コンピュータディスプレイを眺める目の見えるユーザによってこのコントロールに関連付けられるはずの文字列を含む。この場合、スクリーンリーダは、文字列「Ｈｅｌｐ  Ｂｕｔｔｏｎ（ヘルプボタン）」を音声変換エンジンに送り、音声変換エンジンは次いでユーザにその情報を読み上げる。
【００２９】
さらに、オートメーションユーティリティ２０１は、ボタン３２１に照会して、その対応する要素がサポートするコントロールパターン４１２を識別することができる。この場合、ボタン３２１に対し識別される１つのコントロールパターンは、「Ｉｎｖｏｋｅ」コントロールパターンである。このコントロールパターンは、クライアントアプリケーションが、要素の振る舞いを照会することを可能にするだけでなく、その特定のコントロールパターン用に設計されたインタフェースを介して要素をプログラムで操作することも可能にする。この例では、オートメーションユーティリティ２０１は、ボタン３２１に直接照会して、それがＩｎｖｏｋｅコントロールパターンをサポートするかどうかを判断する。ボタン３２１は、Ｉｎｖｏｋｅの振る舞いを利用するための１組のメソッドを含むインタフェース（Ｉｎｔｅｒｆａｃｅ  Ｘ４１４）を返すことによって、肯定応答を示すことができる。他の例では、（コンボボックス３２０に関連した）選択コントロールパターンは、選択された項目を照会し、特定の項目を選択または選択解除し、その要素が単一または複数の選択モードかどうかを判断しなどするためのメソッドを提供する。
【００３０】
本発明によって可能になるメカニズムを用いて、各ユーザインタフェース要素またはコントロールではなく各コントロールパターンとどのように連動するかを理解するオートメーションユーティリティを作成することができる。要素が示す別々の振る舞いの型は比較的少ないので、コントロールパターンは、要素またはコントロールの型よりもはるかに少なくなる。この結果、オートメーションユーティリティに書くコードが少なくなり、それにより、既知のコントロールパターンをサポートする新しい要素に対して問い合わせおよび操作を効率的に行うことができる、オートメーションユーティリティ用のより柔軟なアーキテクチャが促されることになる。
【００３１】
図５は、コントロールパターンを使用して、プロパティ情報を問い合わせて操作すべき画面要素を見つけるために、ユーザインタフェースの自動イベントを利用するイベント駆動のオートメーションユーティリティで利用することのできるプロセスを概略的に示す論理フロー図である。プロセスは、当該の特定の要素を探すためにオブジェクト階層をトラバースする（ブロック５１０）か、あるいは、あらかじめ受け取るように登録されているイベント通知を受け取るまでループを空回りする（ブロック５１１）ことから開始する。イベント通知を受け取ると、プロセスは、ブロック５１３に進む。
【００３２】
ブロック５１３で、ユーザまたはオートメーションユーティリティに必要な複数のプロパティ情報を得るために現在の当該の要素が照会される。一実装形態では、オートメーションユーティリティは、ユーザに使用されることを目的とする人間が理解可能な文字列を含む現在の要素のプロパティから、情報を取り出すことができる。プロセスはブロック５１５に進む。
【００３３】
ブロック５１５で、コントロールパターンのサポートについて当該の要素に照会する。これを行うための一方法は、後で図６に関して述べる。簡単に述べると、要素をプログラムでどのように操作するかを判断するために、オートメーションユーティリティは、要素がコントロールパターンの特定の型をサポートするかどうかを照会することができ、または、要素にそれがサポートするコントロールパターンの型を照会することができる。サポートされるコントロールパターンがわかると、プロセスは、ブロック５１７に進む。
【００３４】
ブロック５１７で、フォーカスを有する要素が、それがサポートするコントロールパターンに従って操作される。例えば、特定のコントロールパターンがサポートされているかどうかについての照会（例えばブロック５１５）に応答して、要素が、コントロールパターンに対応する振る舞いを実施するメソッドを含むインタフェースを返すことができる。このインタフェースの使用により、オートメーションユーティリティ（すなわち、ユーザインタフェース自動フレームワーク（UI Automation Framework）上で構築され、適切なセキュリティ権限を有する他の任意のクライアント）が、その要素を操作することができる。
【００３５】
図６は、オブジェクトがどんな振る舞いを示すのかを判断するためにオブジェクトに照会するプロセスを概略的に示す論理フロー図である。プロセスは、判断ブロック６０１から始まり、その際、（オブジェクトにより表される）要素は、イベント通知、またはユーザインタフェース自動オブジェクト階層をトラバースするなど他のあるメカニズムによって見つけられている。
【００３６】
判断ブロック６０１で、フォーカスを有する要素についてサポートされているすべてのコントロールパターンに関する知識が所望されるかどうか判断する。例えば、状況によっては、単に要素が特定の所望の方式で振る舞うかどうかではなく、そのすべての機能について判断すべく要素に照会することが妥当になることもあり得る。このような事例の一例は、デバッグまたはテスティング環境におけるものであろう。このような場合、プロセスはブロック６０３に進む。しかし、オートメーションユーティリティは、たいていは、特定の振る舞いを要素がサポートするかどうかを知る必要がある。このような場合、プロセスは、ブロック６０５に進む。
【００３７】
ブロック６０３で、サポートされているコントロールパターンを求める照会が当該の要素に出される。この照会で、要素がサポートするコントロールパターンの完全なリストを要求することができる。この照会で、単にリストを要求することも、サポートされている各コントロールパターンに対するインタフェースを要求することもできる。ブロック６０７で、これに応答して、リストが受け取られ、要求をしたユーティリティまたはアプリケーションは、適切な任意の方法でそれを取り扱う。ただし通常の使用法では、次いで、返されたコントロールパターン用のメソッドを使って、要素をプログラムで操作する（例えば、ＩｎｖｏｋｅＰａｔｔｅｒｎ．Ｉｎｖｏｋｅ（）メソッドを使用して、ボタン３２１を押し、それによってヘルプウィンドウを表示する）。
【００３８】
ブロック６０５で、要素が特定のコントロールパターンをサポートするかどうかを判断するための照会が要素に出される。多くの場合、アプリケーションのナビゲーションが進行していくとき、オートメーションユーティリティは、特定の時点でアプリケーションにおいてどのような機能または振る舞いが期待されるかを知ることができる。したがって、オートメーションユーティリティは、サポートされるすべてのコントロールパターンのリストを要求するのではなく、要素が特定のコントロールパターンをサポートするかどうかを照会することもできる。したがって、ブロック６０５では、オートメーションユーティリティは、要素が特定のコントロールパターンをサポートするかどうかを要素に照会することができる。
【００３９】
判断ブロック６０９で、特定のコントロールパターンがサポートされているかどうかを判断する。例えば、照会される要素は、要求されたコントロールパターンがサポートされていない場合、単に失敗であると返すだけでよい。この場合、ブロック６０５で、オートメーションユーティリティは、別の所望のコントロールパターンについて照会を繰り返すことができ、所望のコントロールパターンがサポートされていない場合は終了することもできる。現在のコントロールパターンがサポートされている場合は、プロセスは、ブロック６１１に進む。オートメーションユーティリティは、当該のすべてのコントロールパターンについて試行を終えるまで、特定のコントロールパターンがサポートされているか照会することができる。呼び出しを行うオートメーションユーティリティに、サポートされているコントロールパターンに対応するメソッドを有するインタフェースを単に返すことによって、特定のコントロールパターンがサポートされているとの通知を提供することができることをここで繰り返しておきたい。
【００４０】
ブロック６１１で、コントロールパターンに関連する振る舞いを可能にするメソッドを含むインタフェースが受け取られる。この時点で、オートメーションユーティリティが、関連するコントロールパターンのメソッドを用いて、コントロールパターンの振る舞いに従って任意の適切な方式で要素を操作する。開示のシステム、コンポーネント、およびプロセスにより、プログラムによる操作のために、ユーザおよびオートメーションユーティリティなどのアプリケーションに、動的にユーザインタフェース要素について知らせるメカニズムが可能になったことを認識されたい。
【００４１】
上記の明細書、例、およびデータは、本発明の構成物の製造および使用に関する完全な説明を提供する。本発明の多くの実施形態が、本発明の趣旨および範囲から逸脱することなく実施することができるので、本発明は添付の特許請求の範囲に含まれる。
【図面の簡単な説明】
【００４２】
【図１】本発明の実装形態に使用することができるコンピューティング装置を示す機能ブロック図である。
【図２】本発明を実装したシステムの画面表示を概略的に示す機能ブロック図である。
【図３】図２の画面表示に示される要素を表すオブジェクトツリーを示す図である。
【図４】図３に示されるオブジェクトツリーのサブツリーを示す図である。
【図５】本発明による、ユーザのために画面要素を記述し操作するために支援技術製品によって用いられるプロセスを概略的に示す論理フロー図である。
【図６】本発明による、オブジェクトが提示する振る舞いが何であるかを判断するためにそのオブジェクトに照会するプロセスを概略的に示す論理フロー図である。
【図１】
0004503438.tif 000005
【図２】
0004503438.tif 000006
【図３】
0004503438.tif 000007
【図４】
0004503438.tif 000008
【図５】
0004503438.tif 000009
【図６】
0004503438.tif 000010