説明

リモート端末セッションにおけるアクセシビリティ・オプションを提供する技術

リモート端末セッションのシナリオにおいて、アクセシビリティ機能を使用可能にすることに関連する技術を説明する。1つの事例において、プロセスは、リモート端末セッション内の表示要素に関するアクセシビリティ機能から要求を検出する。このプロセスは、この要求に関連するクエリを、その表示要素を生成したコンピューティング・デバイス上にあるコンポーネントに送信する。このプロセスは、さらにこのクエリに対する応答を受信する。

【発明の詳細な説明】
【技術分野】
【0001】
アクセシビリティ支援(Accessibility aids)は、標準的なユーザ・インターフェース構成の利用が困難な人に対してコンピュータ利用の容易化を図るものである。例えば、弱視の人は、これらの機能をより容易に見つけ出し、利用することができるように、サイズを増大させたユーザ・インターフェース機能および/または言葉による説明が付随することによって強化されたユーザ・インターフェース機能を希望するであろう。
【発明の開示】
【発明が解決しようとする課題】
【0002】
Microsoft(商標)社が提供するターミナル・サービスなどのリモート端末セッション・サポート製品は、クライアント・コンピュータとサーバ・コンピュータとの間のリモート端末セッションを使用可能にする。このリモート端末セッション(RTS)は、クライアント・コンピュータがネットワーク上でサーバ・コンピュータと接続し、クライアント・コンピュータを介してリモート・デスクトップを生成することを可能にする。従来のリモート・デスクトップのシナリオでは、オペレーティング・システムおよび/あるいは1つまたは複数のアプリケーションをサーバ・コンピュータ上で実行してユーザインターフェース(UI)を生成し、次いで、ビットマップ・イメージなどのUI表現がネットワークを介してクライアントに送信される。このビットマップ・イメージ・データは、アクセシビリティの観点から効果が限られる。そこで、リモート端末サービス・セッションのシナリオに対するアクセシビリティ・オプションを提供するソリューションが望まれる。
【課題を解決するための手段】
【0003】
リモート端末セッションのシナリオにおけるアクセシビリティ機能を使用可能にすることに関する技術が説明される。1つの事例において、あるプロセスは、リモート端末セッション内の表示要素に関するアクセシビリティ機能から要求を検出する。そのプロセスは前記要求に関連するクエリを、前記表示要素を生成したコンピューティング・デバイス上にあるコンポーネントに送信する。そのプロセスは、さらに前記クエリに対する応答を受信する。
【発明を実施するための最良の形態】
【0004】
(概要)
以下で説明する技術は、リモート端末セッションのシナリオと、リモート端末セッションにおけるアクセシビリティ支援(accessibility aids;AA)を使用可能にすることに関する。本明細書では、AAは、ユーザに対して表示可能な表示要素またはオブジェクトに関わる情報へのアクセス機能に関連する。AAは複数のユーザ・シナリオで利用する。例えば、AAは、様々な音声指揮統制(speech command-and- control scenarios)のシナリオ、様々なテスト・シナリオ(testing scenarios)、ならびに視覚および/または聴覚障害を有するユーザを支援する様々なシナリオで利用する。
【0005】
スタンドアローンのコンピュータ構成では、コンピュータは、アイコン、ツールバー等の1つまたは複数の表示要素を備えるユーザ・インターフェース(UI)を生成する。表示要素は、オブジェクト・データまたは情報と関連付けられたUIの任意の部分とすることができる。スタンドアローン構成で動作するAAは、UIの特定表示要素に関する情報の一部または全てを取得することができる。このAAは、要求した表示要素情報の取得を容易にするアクセシビリティ支援ユーザ・インターフェースのインターフェース(AA−UI−インターフェース)などの、UIと対話する手段を含み、またはその手段と通信する。次いで、表示要素に関連する情報は、何らかの方法で利用されてユーザを支援する。例えば、ユーザがカーソルをごみ箱用(recycle bin)のアイコンを表す表示要素上に置くと、AAはその表示要素に関わる情報を要求する。AAは、特定した表示要素に関わる情報を受信して理解する。受信した情報の種類の例にはとりわけ、ボタン、リスト、メニュー等の説明等、およびそれらの相対的関係が含まれる。次いでAAは、例えば視覚障害の場合などに、ほんの1例としてだが、ユーザに単語「ごみ箱」がユーザに聞こえるように生成させることで、ユーザを支援することができる。
【0006】
リモート端末セッション(Remote terminal sessions;RTS)は、サーバ上で動作するオペレーティング・システム(OS)および/またはアプリケーションが、1つまたは複数の表示要素を含むUIを生成することを可能にする。リモート端末セッションはさらに、UIの出力またはグラフィックがクライアント・コンピュータに転送されることを可能にする。説明されている別の方法では、UI表現のみがクライアント・コンピュータに送信され、クライアント・コンピュータ上で表示される。このUI表現はクライアント・コンピュータ上でユーザに対して目に見えるように表示され、クライアント・コンピュータ側のユーザは、このUI表現を見て、このUI表現と対話することができる。このクライアントがサーバから受信した表現を表示すること、およびユーザ入力を中継することのみを担当するという点で、クライアント・コンピュータは、サーバと比較して低減された担当レベルを有している。このサーバ・コンピュータは、ユーザ入力を処理して、UIを更新してユーザ入力を反映し、更新したUI表現をクライアント・コンピュータに送信する。ユーザの視覚的な観点からは、このUI表現は実際のUIと見分けがつかないかもしれない。しかしながら、アクセシビリティの観点からは、このUI表現は、実際の対応UIと比較するとオブジェクト・データの低減されたレベルに関連付けられる。
【0007】
本発明の技術はさらに、リモート端末セッション環境におけるAAが、上述のスタンドアローン構成と同様な機能を実現することを可能にする。例えば、このAAは、サーバのUIのクライアント表現のうち特定の部分に関わる情報を要求し、受信することができる。その要求は、検出され、情報が収集され、このAAに提供される。一部の実施態様では、このAAの要求を検出して、対応する情報を取得し、その情報をこのAAに対して透過的な形式で提示する。その結果、このAAは、自身がスタンドアローン構成以外で機能していることを意識する必要がない。
【0008】
例として、図1を考える。この図1は、ネットワーク106上のサーバ102とクライアント104との間のリモート端末セッションをサポートするように構成され、そのリモート端末セッションに対してアクセシビリティ機能を使用可能にするように構成されたシステム100を示す。サーバ102は。UIをサーバ・デスクトップ110の形で生成する。このサーバ・デスクトップは、本図で示した表示要素111などの1つまたは複数の表示要素から構成されることができる。表示要素の例には、アイコン、ツールバー、メニュー等が含まれる。このリモート端末セッションは、UI表現をリモート・デスクトップ112の形でクライアント104上に生成する。このリモート・デスクトップは、1つまたは複数の表示要素を含むと言うよりも、単に、サーバUIの表示要素に関連する潜在情報の大部分、または全てを欠いた複数の表示要素からなる表現である。例えば、表示要素111は表現113が示すように表される。ユーザに対しては、表示要素の表現113は基本的に表示要素111と同一に見えるかも知れないが、アクセシビリティの観点からは、表示要素の表現113は、関連付けられた情報のうちの低減された量に関連付けられる。
【0009】
クライアントのリモート・デスクトップ112と関連して機能するアクセシビリティ支援は、リモート・デスクトップの一部に関する情報を要求することができる。AAの要求を満たすために、少なくとも幾つかの実施態様では、サーバUIの対応部分に関わるサーバ側の情報を収集する。例えば、クライアントUI表現の要求部分に関わるオブジェクト・データは、サーバ側で実際のサーバUIから効率的に抽出され、このAAに送られる。例えば、このAAがリモート・デスクトップの表示要素に関わる情報を要求すると仮定する。この要求が検出され、このリモート・デスクトップの要求部分に関わる情報が取得され、AAに提示される。例えば、前記情報はサーバ・デスクトップの対応部分に関して取得することができる。この情報は、AAに提示されることができ、その結果、このリモート・デスクトップがクライアント104上でローカルに生成したUIであった場合に利用するであろう機能を超えたどのような機能もこのAAは所有する必要がない。
【0010】
説明のために、別の例においてAAがカーソル114近傍のリモート・デスクトップ112の一部に関する情報を要求すると仮定する。このAAの要求は、検出され、カーソル114近傍のサーバ・デスクトップ110の一部に関する情報がサーバ102から取得される。その取得された情報、またはそれに関するある派生情報がこのAAに提供される。
【0011】
提供した情報に応答して、このAAは、アクセシビリティ関連ユーザ知覚可能出力116がクライアント104側でユーザに対して生成されることを可能にすることができる。アクセシビリティ関連ユーザ知覚可能出力116は、リモート・デスクトップを補完するオーディオおよび/またはビデオ信号を含むことができ、これは当業界の技術者は理解するはずである。例えば、説明のために、インターネット・ブラウザ・アイコンの形で表示要素上にカーソル114が置かれると仮定する。当該事例などでは、アクセシビリティ関連ユーザ知覚可能出力116は、ユーザが聞き取れるように生成した単語「インターネットブラウザ」として明示することができる。
【0012】
上述した実施態様などの、少なくとも幾つかの実施態様において、AAは、ユーザ・インターフェースの表現のみがクライアント104上に存在すること、またはAAがリモート端末セッションに関連して動作していることを意識する必要はない。記載された別の方法では、一部の実施態様では、リモート・デスクトップに関する情報の重要なサブセットが、AAに対してクライアント側でローカルに利用される。これら実施態様の一部においては、AAに対して透過的な形式で情報を利用可能とする技術がサポートされる。例えば、AAがサポートされた技術を利用して情報にアクセスするとき、この情報は透過的にローカルに利用される。この構成では、AAは、リモート端末セッションの存在を意識せず、予定通りのアクセシビリティ機能パラメータ内で一貫して機能することができる。
【0013】
上述および後述の実施態様は、一般的に時間内の現在時点で遭遇するように、コンピューティング環境のコンテキスト内で説明される。様々な例は、パーソナル・コンピュータまたはPCなどのコンピュータが実行するプログラム・モジュール等のコンピュータ実行可能命令、またはコード手段で実施することができる。一般に、プログラム・モジュールには、特定のタスクを実行または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。
【0014】
様々な例は、PC以外のコンピュータ・システム構成で実施されることができる。例えば、様々な実施態様が、ハンドヘルド・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラム可能家電機器、ネットワークPC、ミニコンピュータ、メイン・フレーム・コンピュータ、携帯電話、等で実現できる。さらに、技術が進歩し続けると、様々な実施を、まだ確認されていない部類の装置で実現することができる。例えば、処理能力の単位コストが下落し続けて、無線技術が拡大すると、今日の携帯電話に類似したコンピューティング・デバイスが、今日のPC、ビデオカメラ、携帯電話、およびそれ以上の機能を単一の携帯装置で実行する可能性がある。この単一装置は、あるシナリオではサーバとして動作し、別のシナリオではクライアントとして動作する可能性がある。これは、説明した実施態様に対する多数の既存および発展過程の例の1つでしかない。
【0015】
本明細書で用いるサーバおよびクライアントという用語は、2つの装置間の相対的な性能を意味しない。クライアントは、サーバを上回る処理能力、サーバを下回る処理能力、またはサーバと等しい処理能力を有することができる。むしろ本明細書では、サーバおよびクライアントという名前は2つのコンポーネントの相対的な関係を表す。例えば、第1すなわちサーバ・デバイスのコンピューティング・エクスペリエンスは第2すなわちクライアント・デバイスと切り離される。
【0016】
様々な実施態様が上述で示唆したような多種類の動作環境に組み込むことができるが、ほんの1つの環境例が、一つの例示的な汎用コンピューティング・デバイスの例のコンテキストで、図4に示され、この汎用コンピューティング・デバイスは、本明細書の見出し「動作環境の例」以下でより詳細に後述される。
【0017】
(実施態様およびプロセスの例)
アクセシビリティ機能がリモート端末セッションで達成されることを可能にするように構成されたシステム100Aを説明する図2を考察する。システム100Aは、ネットワーク106A上でサーバ102Aとクライアント104Aとの間のリモート端末セッションをサポートするように構成されている。システム100Aは、さらに、アクセシビリティ機能が、クライアント104Aに対してリモート端末セッション中に達成されることを可能にするように構成されている。本システムの実施態様において、サーバ102Aは、RTS−サーバ・コンポーネント202、AA−RTS−サポート−サーバ・コンポーネント204、AA−UI−インターフェース−サーバ・コンポーネント206、およびサーバ・オペレーティング・システム(OS)208を含む。クライアント104Aは、RTS−クライアント・コンポーネント212、AA−UI−インターフェース−クライアント・コンポーネント214、AA−クライアント・コンポーネント216、およびクライアントOS218を含む。
【0018】
本構成では、サーバ102Aは、説明の目的のために、サーバ・デスクトップ110Aの形式で実装したUIを生成するよう構成される。サーバ・デスクトップは、ここでは説明の目的のために示されているが、多くのシナリオでは、サーバ・デスクトップの視覚的イメージは、実際には、サーバ上では生成されない。RTS−サーバ・コンポーネント202およびRTS−クライアント・コンポーネント212は、リモート端末セッションに対してネットワーク106A上でサーバ102Aとクライアント104Aとの間で1つまたは複数の通信チャネル220を確立するように構成される。RTS−サーバ・コンポーネント202は、クライアント104A上に表示させるサーバ・デスクトップ表現を生成するように構成される。この表現は、通信チャネル220上で送信され、本例ではリモート・デスクトップ112Aとしてクライアント104A上に表示される。本事例では、リモート・デスクトップ112Aは、枠線またはウィンドウ内に置かれ、これらに取り囲まれる。枠線はリモート・デスクトップ112Aを、クライアント・ディスプレイ224上にローカルに生成したクライアント・デスクトップ222から区別する役割を果たす。他の構成では、どのコンポーネントがローカルに生成されるか、およびどのコンポーネントがリモートに生成されるかを、ユーザが容易に理解できない可能性がある。
【0019】
このリモート端末セッションは、RTS−クライアント・コンポーネント212およびRTS−サーバ・コンポーネント202を介して、リモート端末セッションに関連するアクセシビリティ機能を使用可能にするようにさらに構成される。例えば、このリモート端末セッションは、クライアントおよび/またはサーバ側でアクセシビリティ・コンポーネントをホストすることができる。代りにまたは追加として、リモート端末セッションは、サーバ102Aおよびクライアント104に置かれたAAコンポーネントがアクセシビリティの目的として望ましいUI情報について通信するための通信手段を、提供することができる。
【0020】
AA−クライアント・コンポーネント216は、AA−UI−インターフェース−クライアント・コンポーネント214を通してクライアント・ディスプレイ224を占有するUIから情報を要求したり、あるいはそのUIと対話するように構成される。AA−UI−インターフェース−クライアント・コンポーネント214は、UIと相互交信してAAに対する情報を取得するように構成されたアプリケーション・プログラム・インターフェース(API)などのインターフェースである。幾つかの構成では、AA−UI−インターフェースは、UI表示要素に関わる情報をクライアント・アプリケーションに提示するよう構成したアプリケーション・プログラム・インターフェース(API)およびシステム・ライブラリである。この構成の1つにおいては、AA−UI−インターフェースは各ノードがUI表示要素を表現する、複数のノードからなるツリーとしてUI情報をとして提示する。少なくとも幾つかの構成においては、AA−UI−インターフェースは、ノードに関する構造、特性、双方向性、およびイベントへのアクセスを提供するように構成される。AA−UI−インターフェースとして見込まれる非制限的な例には、UI AutomationおよびMicrosoft Active Accessibility (MSAA)が含まれ、そのいずれもMicrosoft(商標)社が提供する商標登録されている。当業界の技術者は他の適切なAA−UI−インターフェースを認識するはずである。それらの幾つかは、上述または後述の概念に関わる他のものより優れている可能性がある。
【0021】
本事例では、クライアント・ディスプレイ224は、ローカルに生成されたUIであるクライアント・デスクトップ部と、リモートに生成されたUI表現であるリモート・デスクトップ部112Aとを含む。本事例では、リモート・デスクトップ112Aは、サーバのUIまたはサーバ・デスクトップ110Aのビットマップ表現である。リモート・デスクトップ112Aは、クライアント・デスクトップ222などのローカルに生成したUIと比べて、アクセシビリティの目的の情報のうちの低減された量の情報を収容する。
【0022】
システム100Aに整合性を取って、AA−クライアント・コンポーネント216は、クライアント・ディスプレイ224の特定部分に関する情報を要求し、および受信することができる。この要求された情報がクライアント上でローカルに利用可能である場合、その情報はクライアント側で取得されて、AA−クライアント・コンポーネント216に提供される。この事例は、AAの要求がクライアント・デスクトップ222に関わる場合に発生する可能性がある。リモート・デスクトップ112Aの一部に向けた要求などの、この要求された情報がクライアント上で利用可能でない場合、その情報はリモートで取得される。例えば、この特別な構成においてAA−クライアント216がリモート・デスクトップ112Aに関する情報を要求する場合、その要求は、RTS−クライアント212などのクライアント側コンポーネントによって検出されおよび理解されて、サーバ102Aに方向付けされる。この特別な構成において、この要求はネットワーク106Aを介してAA−RTS−サポート−サーバ・コンポーネント204に向けられる。この要求は、リモート端末セッションに関連付けられたチャネル220を介して送信されるか、または「帯域外」のチャネルに分離することができる。
【0023】
AA−RTS−サポート−サーバ・コンポーネント204は、AA−クライアント・コンポーネント216の代わりに動作し、サーバ・デスクトップ110Aに関連する要求された情報を取得するように構成される。AA−RTS−サポート−サーバ・コンポーネント204は、AA−UI−インターフェース−サーバ・コンポーネント206と協力し、サーバ102Aで情報を取得するように動作する。AA−RTS−サポート−サーバ・コンポーネント204は、クライアントに、最終的にはクライアントのAA−クライアント・コンポーネント216に戻すように、情報を中継する。図2のシステム構成は、UI情報がクライアント104A上に存在するかまたはサーバ102A上に存在するかに関わらず、RTSセッションにおいてAA−クライアント・コンポーネント216にUI情報を取得することを可能とさせる構成の1つに過ぎない。
【0024】
幾つかの構成において、AA−クライアント・コンポーネント216は、要求がローカルに生成したUIに関わるか、あるいはリモートまたはサーバで生成したUIの単なる表現に関わるかを意識する必要がない。この構成では、要求がクライアントUIに関わるかまたはリモートUIの表現に関わるかを決定する手段は、RTS−クライアント・コンポーネント212内などのクライアント104A上に存在してもよい。次いで、RTS−クライアント・コンポーネントは情報を必要に応じてローカルまたはリモートに取得する。
【0025】
図3は、上述および後述の概念と首尾一貫する、非制限的な実施態様を示す。図3は、クライアント104Bおよびサーバ102Bを含むシステム100Bを表す。システム100Bの内部において、UIが、アクセシビリティ機能が動作中のマシンまたはリモートマシンのどちらで生成されるかどうかの、UIに関する要求された情報を、クライアント104B上で動作するアクセシビリティ機能に提供できる。この特定のシステム構成は、1つの例を提供するものであり、その例は、RTSコンポーネントが、リモート端末セッションに関連して、UIに関するアクセシビリティ関連情報を取得可能な、AAが提供されたコンポーネントをホストするインフラストラクチャを、クライアント側およびサーバ側の両方に与えるかの一つの例を提供する。
【0026】
本実施形態では、RTSコンポーネントは、AAコンポーネントに、クライアント側からの所望のUI情報を求める要求をサーバ側に渡す手段を提供することができ、取得した情報をサーバ側からクライアント側に戻す手段を提供することができる。説明のために、図3は、クライアント104B上で発生するプロセスを2つのプロセス・タイプ、すなわちAAプロセス・タイプ302およびRTSプロセス・タイプ304に分割している。また、サーバ102B上で発生するプロセスをサーバ・プロセスタイプ306として示す。説明の簡潔さ、および印刷ページ数の制限のため、複数のサーバ・プロセスは、単一プロセスにグループ化される。他の構成では、サーバUI326を、他のサーバ側コンポーネントおよび/またはプロセスと異なる分離したサーバ・プロセスに含めることができる。さらに、サーバUIの複数の事例が、サーバ・プロセス306上に列挙した他のコンポーネントと関連して存在できる。
【0027】
システム100Bには、AAプロセス302に関連付けられ、AA−クライアント・コンポーネント216B、およびAA−UI−インターフェース・コンポーネント214Bが含まれる。また、AAプロセス302にさらに含まれるものとして、本事例ではAA−UI−インターフェース・コンポーネント214BのサブコンポーネントであるAA−UI−RTSローカル・コンポーネント308がある。AA−UI−RTSローカル・コンポーネント308は、AA−UI機能をローカルまたはスタンドアローンのシナリオを超えて拡張するように動作する。
【0028】
この特別な実施形態において、またRTSクライアント・プロセス304と関連して、システム100Bには、サーバUIおよびクライアント生成UI312のビットマップ表現310が表示されるクライアント・ディスプレイ224Bが含まれる。RTSクライアント・プロセス304には、RTS−クライアント・コンポーネント212B、AA−UI−RTS−インプロセス・コンポーネント314、RTS−アクセシビリティ・サポート・コンポーネント316、およびVC−ホスト−クライアント・コンポーネント318も含まれる。RTS−アクセシビリティ・サポート・コンポーネント316はRTSクライアント・コンポーネントとAAクライアント・コンポーネント間の通信を容易にするアクセシビリティ支援に関する情報を含んでいる。
【0029】
サーバ・プロセス306に関連して、図3には、RTS−サーバ・コンポーネント202B、AA−UI−RTSリモート・コンポーネント320、VC−ホスト−サーバ・コンポーネント322、AA−UI−インターフェース−サーバ・コンポーネント206B、およびサーバUI326が含まれる。集合的には、RTS−クライアント・コンポーネント212B、RTS−アクセシビリティ・サポート・コンポーネント316、VC−ホスト−クライアント・コンポーネント318、RTS−サーバ・コンポーネント202B、およびVC−ホスト−サーバ・コンポーネント322は、ビットマップ表現310上に表した表示要素に関するデータをAA−クライアント・コンポーネント216Bが取得可能とする役割を果たす。このビットマップ表現は、サーバUI326の表現であるため、より広範囲のアクセシビリティ関連情報は、サーバUIから入手可能である。上述のコンポーネントは、アクセシビリティ関連情報が、サーバ102Bから取得されることを可能にし、さらに取得された情報は、AA−クライアント・コンポーネント216Bによる使用のために送り返すことができる。上述のコンポーネントは、以下で例を用いてより詳細に説明される。
【0030】
(探索(Discovery))
この特別な構成において、RTS−クライアント・コンポーネント212Bの起動時に、RTS−クライアント・コンポーネントは、RTS−アクセシビリティ・サポート・コンポーネント316およびVC−ホスト−クライアント・コンポーネント318をロードし、VC−ホスト−サーバ・コンポーネント322がロードされることを引き起こす。さらに、RTS−クライアント・コンポーネントは、例えばAA−クライアント・コンポーネント216Bからの、通信を受信するためのウィンドウ・インターフェースを公開する。そのインターフェースは、AA−UI−インターフェース・コンポーネント214Bは、AA−UI−RTS−インプロセス・コンポーネント314をRTS−クライアント・プロセス304にロードすることを可能にする。このインターフェースが公開されると、AA−UI−インターフェース・コンポーネント214Bは、RTS−クライアント・コンポーネント212Bに遭遇すること、または見つけ出すことができる。例えば、1つの事例において、AA−UI−インターフェース・コンポーネント214Bは、関連するHWNDツリーのトラバース中にRTS−クライアント・ハンドルまたはHWNDに遭遇する。HWNDはウィンドウを表現するハンドルである。Windows(商標)ブランドのオペレーティング・システムにおいて、UI要素の大部分はウィンドウとして実装される。各ウィンドウはハンドルまたはHWNDと関連付けられる。一般に、AAクライアントには、様々なウィンドウおよびそれらの関係を表すためのこのHWNDのツリーが提供される。AAクライアントはウィンドウ・ハンドルを使用して、AA−UI−インターフェース−クライアント・コンポーネント214Bからより多くの情報を求めるウィンドウを識別する。例えば、AAクライアントはツリーをナビゲートすること、またはRTS−クライアントに対する入力フォーカスを注意すること、RTS−クライアントに対するヒット・テストを行うことができる。RTS−クライアントの検出に応じて、AA−UI−インターフェース−クライアント・コンポーネント214BまたはAA−UI−RTSローカル・コンポーネント308は、AA−UI−RTS−インプロセス・コンポーネント314をRTS−クライアント・プロセス304にロードする。これはほんの1例に過ぎず、特定のプラットフォーム上でUIを表現するために、どのようなデータタイプでも利用されることを認識するために他の実施形態を利用できる。
【0031】
HWNDがRTS−クライアント・プロセスに属する事例では、AA−クライアント216Bは、その代理的なAA−UI−RTSローカル・コンポーネント308を通して、RTS−クライアント212Bが提供するウィンドウ・インターフェースを用いて通信をRTS−クライアント212Bに送信することができる。この事例の1つにおいて、AA−UI−RTSローカル・コンポーネント308は、その公開されたインターフェースを通して、WM_GETOBJECTなどのプロセス・メッセージをRTS−クライアント212Bに送信する。
【0032】
RTS−クライアント212Bは、AAクライアントのプロセス・メッセージを、AA−UI−RTS−インプロセス・コンポーネント314とアクセシビリティ・サポート・コンポーネント316とに転送する。それに応じて、アクセシビリティ・サポート・コンポーネントはRTS−クライアント・プロセスを公開し、AA−UI−RTSローカル・コンポーネント308はAA−UI−RTSリモート・コンポーネント320をサーバ側にロードすることができ、関連仮想チャネルにアクセスことができる。アクセシビリティ・サポート・コンポーネントはさらに、AA−UI−RTS−インプロセス・コンポーネント314が、要求の適切な処理のためにAA−UI−RTS−インプロセス・コンポーネント314により利用されるRTS−クライアント・デスクトップの様々な端末サービス・プロパティへのアクセス権を得ることができるようにする。このプロパティはとりわけ、可視で、不可視でおよび使用可能なスクロール・バーに関連付けできる。例えば、AA−UI−RTS−インプロセス・コンポーネント314は後述の位置プロパティなどの様々なプロパティの後処理を担当する。この後処理を可能とするため、AA−UI−RTS−インプロセス・コンポーネント314は、サーバ・デスクトップをRTS−クライアント212Bに表示するウィンドウ座標情報を利用する。例えば、RTS−クライアント・ウィンドウがスクロール・バーを使用している場合、AA−UI−RTS−インプロセス・コンポーネント314は正確にマップするためにスクロール・バーの位置を利用する。別の例では、幾つかのリモート端末セッションシナリオにおいて、RTS−クライアント212Bによって表示されるクライアント・デスクトップはサーバ上の単一ウィンドウの表現であり、全体のデスクトップそれ自体ではない。AA−UI−RTS−インプロセス・コンポーネント314はこのRTS構成に関する情報、およびクライアント・デスクトップが対応するサーバデスクトップウィンドウに関する情報を利用する。RTSアクセシビリティ・サポート・コンポーネント316はこの情報をAA−UI−RTS−インプロセス314に提供する。
【0033】
AAクライアント・プロセス・メッセージに応答して、AA−UI−RTS−インプロセス・コンポーネント314はプロセス・メッセージの正当性(legitimacy)をチェックし、通信手段を開いてAA−UI−RTSローカル・コンポーネント308を呼び出す。例えばAA−UI−RTS−インプロセスは、WM_GETOBJECTメッセージが、それがAA−UI−インターフェース−クライアント・コンポーネント214Bまたは他のアクセシビリティ・コンポーネントからであることを示すパラメータを含むことをチェックできる。AA−UI−RTS−インプロセス314は、指名されたパイプ(named pipe)を生成することによってWM_GETOBJECTを処理する。次いでAA−UI−RTS−インプロセスは、パイプに対する幾つかのキーを、呼び出し側、即ちAA−UI−RTSローカル・コンポーネント308に返す。これはAA−UI−RTSローカル・コンポーネント308がAA−UI−RTS−インプロセス・コンポーネント314と通信チャネルを確立する方法のほんの1例に過ぎない。当業界の技術者は他の構成を理解するはずである。
【0034】
本例において、AA−UI−RTSローカル・コンポーネント308はWM_GETOBJECTメッセージから返されたパイプ・キーを受信し、そのパイプに接続してAAクライアント・プロセス302とRTS−クライアント・プロセス304との間の通信を確立する。
【0035】
上述のRTS−クライアント212Bのコマンドに応答して、VC−ホスト−クライアント・コンポーネント318はVC−ホスト−サーバ・コンポーネント322を開始するコマンドを送信する。VC−ホスト−サーバ・コンポーネントはAA−UI−RTSリモート・コンポーネント320にAA−UI−RTS−インプロセス314とのリンクを確立させる。上述のように通信手段はAAクライアント・プロセスからRTS−クライアント・プロセスへ拡張済みであり、次に、この通信手段はサーバ102B上のプロセスに効率的に拡張される。本例では、接続はAA−UI−RTSローカル308からAA−UI−RTS−インプロセス314に拡張し、次いでAA−UI−RTSリモート・コンポーネント320に拡張する。
【0036】
(情報の要求)
AAクライアント204Bからのアクセシビリティ関連情報に対する要求は、クライアント側のAA−UI−インターフェース−クライアント214BからAA−UI−RTSローカル・コンポーネント308に伝達される。1事例において、AA−UI−RTSローカル・コンポーネントは、要求した表示要素またはオブジェクトへの参照、取り出すべきプロパティのリスト、およびAA−UI−RTSローカル・コンポーネント308に対する着目要素を識別するフィルタ、を含むバイト・メッセージを構築する。例えば、要求が特定の表示要素の子に対するものであるとき、フィルタは「可視要素のみ」と指定することができ、この方法では、その特定表示要素の子全てを返すのではなく、可視の子のみが返えされる。AA−UI−RTSローカル・コンポーネント308は、次いでそのメッセージを、指名されたパイプを介してAA−UI−RTS−インプロセス・コンポーネント314に送信し、応答を待つ。
【0037】
AA−UI−RTS−インプロセス・コンポーネント314はメッセージを受信し、メッセージにIDタグを付けて、どのAA−UI−RTSローカル・コンポーネントがそのメッセージを送信したかを識別する。AA−UI−RTS−インプロセス・コンポーネント314はメッセージをAA−UI−RTSリモート・コンポーネント320に転送する。AA−UI−RTSリモート・コンポーネントはメッセージを受信し、メッセージをデシリアライズして(オブジェクト参照を調べて対象のUI要素を決定することを含む)、AA−UI−インターフェース・サーバ・コンポーネント206BのAA−UI−インターフェースAPIを用いて要求情報を、AA−UI−RTSリモート・コンポーネント320によって公開されたインターフェース経由で収集する。AA−UI−インターフェース−サーバ・コンポーネント206Bは、AA−UI−インターフェース−サーバ・コンポーネント206BがAA−UI−インターフェース−クライアント・コンポーネント214Bの代わりに動作できるように、AA−UI−インターフェース−クライアント・コンポーネント214Bの機能の一部または全部を共有することができる。AA−UI−インターフェース−サーバ・コンポーネント206Bは、サーバUI326から要求されたアクセシビリティ情報を取得する。
【0038】
AA−UI−RTSリモート・コンポーネント320は、収集した情報をバイト・メッセージにシリアライズし、そのタグIDの原型を維持した状態で、それを、仮想チャネルを介してAA−UI−RTS−インプロセス・コンポーネント314に送り返す。
【0039】
AA−UI−RTS−インプロセス・コンポーネント314は、仮想チャネル経由でAA−UI−RTSリモート・コンポーネント320から得たメッセージを、正確なAA−UI−RTSローカル・コンポーネントを決定するためのタグIDを用いて、指名されたパイプ経由で適切なAA−UI−RTSローカル・コンポーネントに転送する。説明を簡単にするため、AA−UI−RTSローカル・コンポーネント308を1つのみ図示するが、後述のように、幾つかの実施態様ではこれに対する複数のインスタンスおよび他のコンポーネントが実行されていてもよい。AA−UI−RTSローカル・コンポーネント308は応答メッセージを受信してそのメッセージをデシリアライズする。幾つかの事例では、AA−UI−RTSローカル・コンポーネント308はメッセージを後処理する。例えば、プロパティ値に関してメッセージを後処理してオフセットを適用するか、またはRTSホスティングにより影響されるプロパティを他の方法で調整することができる。任意の適切な後処理が完了すると、AA−UI−RTSローカル・コンポーネント308は処理した情報をAA−UI−インターフェース−クライアント・コンポーネント214Bに送信する。
【0040】
この後処理の1例は、ディスプレイ上の要求された要素の位置に関する情報に関連する。例えば、AAクライアントが、ビットマップ表現310の最上方左の要素に関するアクセシビリティ関連情報を要求すると仮定する。その情報はサーバUI326に関連してサーバ側で取得される。しかしながら、任意の関連位置情報は、本事例ではクライアントUI312内部のビットマップ表現310で表現されるサーバUIに関連する。本事例では、サーバUIからの位置情報はクライアント・ディスプレイ224B全体に対して調整される。従って、本事例では、定性的に表現すると、ビットマップ表現の最上方左の要素は、一般にクライアント・ディスプレイ224Bの左上象限の中央にある。当業界の技術者は、定量的な方法で変換を行う方法を理解するはずである。相対的な位置調整および他の後処理は、クライアント・コンポーネントの任意の組合せで実現されることができる。例えば、AA−UI−RTSローカル・コンポーネント308またはAA−UI−インターフェース・クライアント・コンポーネント214Bはこの調整を処理することができる。
【0041】
さらに、幾つかの実施態様では、処理リソースは、リモート端末セッションの起動時に起動されるコンポーネント数を最小化することで節約することができる。残りのコンポーネントは、AAクライアント216Bからの情報要求などの何らかの誘因に応答して起動する。他の実施態様では、起動時にコンポーネントの大部分または全てを起動または使用可能にすることができる。
【0042】
クライアント・ディスプレイ224Bが単一クライアント生成UI312および単一ビットマップ表現310を含む比較的単純なシナリオで、システム100Bを上述した。当業界の技術者は、本システム構成を多くの状況に渡り容易に拡張可能であることを認識するはずである。例えば、複数のAAクライアント・アプリケーションは、クライアント・ディスプレイ224Bに関して同時実行することができる。代わりにまたは追加として、AA−UI−RTSリモート320などのサーバ側コンポーネントは、多数の継続中のリモート端末セッションとの多対1の関係を処理することができる。さらに、他の実施態様はリモートUIの複数の表現をクライアント・ディスプレイ224B上で利用することができる。クライアント・マシンのユーザに対して、その表現はウィンドウなどの枠線で明確に区切るか、またはローカルに生成したUIから区別不能にすることができる。
【0043】
RTSクライアント・ウィンドウに関して同時実行する多数のAAクライアントの事例では、様々なAAクライアントを区別する幾つかの手段が利用される。この構成の1つでは、通信手段またはパイプはそれぞれのAAクライアントに専用にされる。様々なパイプは、個々のAAクライアントを共有AA−UI−RTS−インプロセス314およびVC−ホスト−クライアント318に接続することができる。
【0044】
AA−UI−RTS−インプロセス314コンポーネントを構成して、クライアント毎のパイプと単一のVC−ホスト−クライアント・コンポーネントとの間のクライアント要求およびイベントを多重化するように構成されることが可能である。この構成の1つにおいて、AA−UI−RTS−インプロセス314はそれぞれのAAクライアントに対して一意な識別子を割当て、AA−UI−RTSリモート320に送信されるパケットを追加する。AA−UI−RTSリモート320はそれら値を不透明なものとして扱い、AA−UI−RTS−インプロセスがどのクライアントにそのイベントを転送すべきかを知るように、それらをそのまま保持してイベントとともに返信する。
【0045】
このシナリオにおいて、クライアント・ディスプレイ224Bに関わる任意の座標調整を各クライアントのAA−UI−RTSローカル・コンポーネントにより処理することができる。そのような構成は、AA−UI−RTS−インプロセス・コンポーネントに、それがパイプとVCとの間で転送している任意のメッセージの意味内容を理解させることを回避する。最後に、上記構成によりAA−UI−RTSリモート・コンポーネントは、個々のクライアントを意識する必要がなく、または個々のクライアントの代わりにクライアント固有の状態を追跡する必要がないので、「クライアント不可知」であることができる。多重化の負担をAA−UI−RTSローカル・コンポーネントに置くことで、AA−UI−RTSリモート・コンポーネントからクライアント固有の状態を切り離すことも支援できる。
【0046】
上述した実施態様などの、少なくとも幾つかの実施態様は、クライアント・ディスプレイ224B上の複数のビットマップ表現を含むシナリオを処理することができる。例えば、複数のリモート・アプリケーションをクライアント・ディスプレイ224B上の個々のビットマップ表現として表すことができる。これらの構成の幾つかにおいて、RTS機能は、AA−UI−インターフェースが複数の仮想チャネルを生成することを可能にする。他の構成においては、単一の仮想チャネルと、およびクライアント・ディスプレイ224B上でビットマップとして表現される個々のサーバ側アプリケーションに対して多重化する、単一の対応AA−UI−RTSローカル・コンポーネントとを利用することができる。次いで、一部の構成は、AA−UI−RTSローカル・コンポーネントとAA−UI−RTS−インプロセス・コンポーネントとの間でパイプを、そのパイプ自体が特定のサーバ側アプリケーションで識別されるように、確立できる。別の構成は、クライアント毎に1つのパイプを、各AA−UI−RTSローカル・コンポーネントがどのRTSウィンドウに対して動作しているかに関わらず、AA−UI−RTS−インプロセス・コンポーネントと会話するのに1つのパイプを使用することができるように、利用することができる。AA−UI−RTSローカル・コンポーネントは、AA−UI−RTS−インプロセス・コンポーネントが、どのウィンドウにその要求が関係するかを決定することができるパラメータをそのメッセージに追加する。他の構成は、サーバからの各アプリケーション・ウィンドウに対するハンドルまたはHWNDを、AA−UI−RTSローカル・コンポーネントによってマップされることが可能なRTSクライアント状態の別のマップ可能態様として利用することができる。
【0047】
例えば、AA−UI−RTSローカル・コンポーネントは、ローカルRTSクライアント・ウィンドウのHWNDを含むメッセージをAA−UI−RTS−インプロセス・コンポーネントに送信することができる。AA−UI−RTS−インプロセス・コンポーネントは、RTSクライアントのウィンドウ状態(例えばそのビューポート、状態)、およびリモートHWNDに関する情報で応答することができる。そのビューポートは、RTS−クライアント・デスクトップの位置に関する情報に関連する。AA−UI−RTSローカルは次いでこのHWNDをそのメッセージ内のパラメータとしてAA−UI−RTSリモート・コンポーネントに送信できる。このアプローチは、AA−UI−RTS−インプロセス・コンポーネントが(具体的にRTSウィンドウ状態を求めるもの以外の)ほぼ全てのメッセージを不透明なものとして処理することを可能とする。これは、クライアント毎に1つのパイプを用いるアプローチが使用されることを可能にする。事実上、AA−UI−RTSローカル・コンポーネントは複数のRTSウィンドウ間で多重化することを担当する。この構成では、AA−UI−RTSローカル・コンポーネントがAA−UI−RTSリモート・コンポーネントに対して行う呼び出しは、どのHWNDをルートまたはルート・ウィンドウとして扱うべきかを示すHWNDパラメータを含む。ルート・ウィンドウという用語はトップ・レベルのウィンドウを指す。上述のように、幾つかのシナリオでは複数のRTSクライアントがサーバ・デスクトップ上の対応ウィンドウを表す。これらのウィンドウは、同一サーバセッション上のあるウィンドウを表しているけれども、トップ・レベルのRTS−クライアント・ウィンドウにより囲まれない。この事例では、AAクライアントからAA−UI−RTS−インプロセスへの2つの独立した要求がありうる。このシナリオを処理するには複数の方法がある。例えば、AA−UI−RTS−インプロセスは、AA−UI−RTSリモートを有するこのトップ・レベル・ウィンドウの各々に対して専用の仮想チャネルを使用することができる。この構成では、チャネル自体が、どのウィンドウをAAクライアントが参照しているかを識別する。代わりにまたは追加として、AA−UI−RTS−インプロセスは、サーバに対して単一の仮想チャネルと、様々なトップ・レベルのRTSクライアント・ウィンドウに対して到来する多重化要求を使用することができる。本アプローチでは、AA−UI−RTS−インプロセスは各要求に対して追加のデータを利用して、どのウィンドウをAA−UI−インターフェース・クライアントが参照しているかを識別する。この追加情報は、トップ・レベル・ウィンドウ(ルート・ウィンドウ)のハンドルの形式にすることができる。
【0048】
システム100Bは、リモート端末セッションのシナリオにおいてアクセシビリティ機能を使用可能にする構成の例のほんの1つに過ぎない。システム100の構成は、また基本機能自体の命令を書き換えるのではなくモジュールまたはプラグイン・コンポーネントを基本機能の上に追加するようにそれ自身を適合させるシステムの例でもある。例えば本例では、RTSアクセシビリティ・サポート・コンポーネント316、VC−ホスト−クライアント・コンポーネント318などの様々なコンポーネントが、明確に識別可能な複数のモジュールまたはプラグインとしてRTS−クライアント・コンポーネント212Bの基本機能に追加される。他の利点の中でもとりわけ、このシステムは、RTS−クライアント・コンポーネントをカスタマイズして所望の機能を提供するよりも、短い開発サイクルおよび/または高い信頼性を有することができる。さらに、上記の例が、全体のリモート・デスクトップに関連して説明される。他の事例では、クライアント・ウィンドウは全体のデスクトップとは対照的にリモート・デスクトップのサブセットを含むことができる。例えば、このサブセットは、特定のリモート・アプリケーション・ウィンドウ、およびそのアプリケーション・ウィンドウが含むUIとすることができる。そのアプリケーションは1つまたは複数のUI要素を含むことができ、例えばUI要素のサブ・ツリーを含むことができる。
【0049】
(システム環境の例)
図4は、リモート端末セッションにおいてアクセシビリティ機能を使用可能にするシステムまたはコンピューティング環境例400を表す。システム環境400は、サーバ・デバイスまたはサーバ102の形式で汎用コンピューティング・システムを含む。サーバ102のコンポーネントは、制限されないが、1つまたは複数のプロセッサ404(任意のマイクロ・プロセッサ、コントローラ、等)、システム・メモリ406、および様々なシステム・コンポーネントを接続するシステム・バス408を含むことができる。1つまたは複数のプロセッサ404は、サーバ102の動作を制御し、且つ他の電子およびコンピューティング・デバイスと通信するため様々なコンピュータ実行可能命令を処理する。システム・バス408は、任意な数で数種類のバス構造を表し、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および様々なバス構造内の任意なものを用いるプロセッサ・バスまたはローカル・バスが含まれる。
【0050】
コンピューティング環境400は、サーバ102が利用可能な任意の媒体でありうる様々なコンピュータ可読媒体が含まれ、揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体の両方が含まれる。システム・メモリ406は、ランダム・アクセス・メモリ(RAM)410などの揮発性メモリ、および/または読取専用メモリ(ROM)412などの不揮発性メモリの形式のコンピュータ可読媒体を含む。基本入出力システム(BIOS)414は、例えば起動時にサーバ102内部のコンポーネント間での情報転送を容易にする基本ルーチンを維持し、ROM412に格納される。RAM410は、典型的には、1つまたは複数のプロセッサ404により直接利用可能および/あるいは現在動作しているデータおよび/またはプログラム・モジュールを収容する。
【0051】
サーバ102は、他の取り外し可能/取り外し不可能、揮発性/不揮発性コンピュータ記憶媒体を含むことができる。例として、ハードディスク・ドライブ416は取り外し不可能な不揮発性磁気媒体(不図示)を読み書きし、磁気ディスク・ドライブ418は取り外し可能な不揮発性磁気ディスク420(例えば、「フロッピー・ディスク」)を読み書きし、光ディスク・ドライブ422は、CD−ROM、デジタル多用途ディスク(DVD)、または任意な他の種類の光媒体のような取り外し可能な不揮発性光ディスク424を読み書きする。本例では、ハードディスク・ドライブ416、磁気ディスク・ドライブ418、および光ディスク・ドライブ422を1つまたは複数のデータ媒体インターフェース426各々によりシステム・バス408に接続する。ディスク・ドライブおよび関連コンピュータ可読媒体は、サーバ102に対するコンピュータ可読命令、データ構造、プログラム・モジュール、および他のデータの不揮発性記憶を提供する。
【0052】
任意数のプログラム・モジュールを、ハードディスク416、磁気ディスク420、光ディスク424、ROM412、および/またはRAM410に格納することができる。そのプログラム・モジュールには、例としてオペレーティング・システム426、1つまたは複数のアプリケーション・プログラム428、他のプログラム・モジュール430、およびプログラム・データ432が含まれる。このオペレーティング・システム426、アプリケーション・プログラム428、他のプログラム・モジュール430、およびプログラム・データ432(またはそれらの任意の組合せ)の各々は、本明細書で説明したシステムおよび方法の実施形態を含むことができる。
【0053】
ユーザは、キーボード434およびポインティング・デバイス436(例えば、「マウス」)などの任意な数の様々な入力装置を通してサーバ102と対話することができる。他の入力装置438(詳細には示さず)はマイクロフォン、ジョイスティック、ゲームパッド、コントローラ、パラボラ・アンテナ、シリアル・ポート、スキャナ、および/または同種のものを含むことができる。これらおよび他の入力装置は、システム・バス408に接続される入出力インターフェース440を経由してプロセッサ404に接続されるが、パラレル・ポート、ゲーム・ポート、および/またはユニバーサル・シリアル・バス(USB)などの他のインターフェースおよびバス構造で接続してもよい。
【0054】
モニタ442または他種の表示装置を、ビデオ・アダプタ444などのインターフェースを経由してシステム・バス408に接続することができる。モニタ442に加えて、他の出力周辺装置は、入出力インターフェース440を経由してサーバ102に接続可能なスピーカ(不図示)およびプリンタ446のようなコンポーネントを含むことができる。
【0055】
サーバ102は、リモート・クライアント・デバイスまたはクライアント104などの1つまたは複数のリモート・コンピュータに対する論理接続を用いてネットワーク環境で動作できる。例として、リモート・クライアント104はパーソナル・コンピュータ、ポータブル・コンピュータ、サーバ、ルータ、ネットワーク・コンピュータ、ピア・デバイスまたは他の共通ネットワーク・ノード、等であることができる。リモート・クライアント104は、サーバ102に関して本明細書で説明した要素および特徴の多くまたは全てを含みことが可能なポータブル・コンピュータとして示してある。
【0056】
サーバ102とリモート・クライアント104との間の論理接続は、ローカル・エリア・ネットワーク(LAN)450および一般的な広域ネットワーク(WAN)452として示してある。上記のネットワーク環境は職場、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットで一般的である。LANネットワーク環境で実装するとき、サーバ102はネットワーク・インターフェースまたはアダプタ454を経由してローカル・ネットワーク450に接続する。WANネットワーク環境で実装するとき、サーバ102は、典型的には、モデム456または広域ネットワーク452上で通信を確立する他の手段を含む。モデム456は、サーバ102の内部または外部で可能であり、入出力インターフェース440または他の適切なメカニズムを経由してシステム・バス408に接続することができる。図示したネットワーク接続は例であって、コンピューティング・デバイス402と448との間の通信リンクを確立する他の手段も利用可能である。
【0057】
コンピューティング環境400で示したようなネットワーク環境において、サーバ102に関して示したプログラム・モジュール、またはその部分をリモート・メモリ記憶装置に格納できる。例として、リモート・アプリケーション・プログラム458をリモート・クライアント104のメモリ・デバイスで維持する。上記プログラムおよびコンポーネントは様々な時点でサーバ102の様々な記憶コンポーネント内に存在し、サーバのプロセッサ404により実行されることは理解されるが、説明のために、オペレーティング・システム426のようなアプリケーション・プログラムおよび他の実行可能プログラムコンポーネントを本明細書では離散ブロックとして示している。
【0058】
(プロセスの例)
図5はリモート端末セッションでアクセシビリティ機能を使用可能にする例示のプロセス500を示す。このプロセスが記述される順序は限定として解釈されるようには意図しておらず、任意数の記述したプロセス・ブロックを任意の順序で組み合わせてプロセスを実施することができる。さらに、そのプロセスを任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装することができる。
【0059】
説明のために、以下のプロセス・ブロックを、リモート端末セッションのサーバ側とクライアント側を定義するリモート端末セッションのシナリオのコンテキストで説明する。そのため、この特別なプロセス構成では、プロセス・ブロック502、504、510、512および514はサーバ側で実行され、プロセス・ブロック506、508および516はクライアント側で実行される。
【0060】
ブロック502で、そのプロセスはUIを生成する。そのUIはアイコン、ツールバー、メニュー等の1つまたは複数の表示要素を含むことができる。このUIを、RTSクライアントと関連してリモート端末セッションに利用することができる。このUIはサーバ・デスクトップ、単一のアプリケーション、または幾つかの他の構成などの完全なUIとすることが可能である。
【0061】
ブロック504で、このプロセスは、UIの表現をRTSクライアントに送信する。この事例の1つにおいて、RTS機能は、UIのビットマップ表現が生成され、RTSクライアントに送信されることを引き起こす。
【0062】
ブロック506で、そのプロセスは、リモート端末セッションにおけるUIの表示要素に関するアクセシビリティ機能から要求を検出する。この特別なプロセス構成において、この検出はクライアント側で行われる。他の構成において、上記の検出はサーバ側で行われてもよい。その要求は、リモート端末セッションにおいてサーバから受信したUI表現の一部に関連することができる。また、その要求は、AAコンポーネントから直接、またはAAコンポーネントと協調して動作するAA−UI−インターフェースなどの何らかの中間コンポーネントから受信することもある。幾つかの構成において、アクセシビリティ機能を要求することは、その要求が、単にUIの表現であるUIの一部に関連すると認識することができる。他の構成において、アクセシビリティ機能を要求することは、実際のUIとUI表現とを区別する能力を全く有さなくてもよい。後者の構成において、要求がローカルに生成したUIなどの実際のUIに関連するか、または(クライアント・マシンの観点から)リモートに生成したUIの表現に関連するかを決定する機能が含まれてもよい。次いで、この機能は要求をローカルに処理するか、または要求を必要に応じてリモート・コンポーネントに向けることで処理することができる。以下のシナリオは、その要求が、リモートに生成したUIまたはその表示要素に関連する、と仮定する。
【0063】
ブロック508で、プロセスは、要求に関連するクエリを、その表示要素を生成したコンピューティング・デバイス上のコンポーネントに送信する。本事例では、その表示要素を生成したコンピューティング・デバイスはサーバとして指定される。クエリは、リモート端末セッションによって容易にされた通信手段、または独立して確立された通信手段を介して送信することができる。
【0064】
ブロック510で、プロセスは、UIに関連するクエリをサーバ側で受信する。ブロック512で、プロセスはクエリに応答してUI情報にアクセスする。この構成の1つにおいて、この情報は、サーバ上で動作し且つアクセシビリティ関連情報をUIから取得するよう構成したAA−UI−インターフェース機能を通して、サーバUIから取得する。
【0065】
ブロック514で、取得した情報はクライアントに送信される。その情報は、ブロック508での要求の送信に利用される同一の通信手段または他の何らかの適切な通信手段で送信することができる。
【0066】
ブロック516で、プロセスはクエリに対する応答をクライアント側で受信する。その応答はアクセシビリティ機能に提供されることができる。幾つかの例において、アクセシビリティ機能に対して応答を提供する前に、さらなる処理をその応答に対して行う。例えば、表示要素の相対位置に関する情報を調整して、全体のクライアント・ディスプレイの他の状況(facets)を考慮することができる。例えば、表示要素は、サーバから受信したUI表現の一部であることができる。サーバはサーバUIに関する位置データを提供したが、そのUI表現は、ローカルに生成したUIコンポーネントおよび/または他のリモートに生成したコンポーネントも含みうる全体のクライアント・ディスプレイのサブセットのみを備えているかも知れない。そのような場合、位置データを全体のクライアント・ディスプレイに関して調整することができる。幾つかの事例では、この情報を、AAの代わりに動作するAA−UI−インターフェース機能に与えることができる。このAA−UI−インターフェースは、AAによる使用のために情報をリファインしたり、または何らかの他の方法で下処理をしたりすることができる。
【0067】
リモート端末セッションにおいて、アクセシビリティ機能を使用可能にすることに関する実施態様を、構造的特徴および/または方法に固有な用語で説明したが、請求の範囲の対象は、説明した特定の特徴または方法に必ずしも限定されないことは理解されるべきである。むしろ、特定の特徴および方法は上述の概念に対する実装態様の例を与えるものである。
【図面の簡単な説明】
【0068】
【図1】リモート端末セッションのシナリオにおいてアクセシビリティ機能を使用可能にするシステムの例を示す図である。
【図2】リモート端末セッションのシナリオにおいてアクセシビリティ機能を使用可能にするシステムの例を示す図である。
【図3】リモート端末セッションのシナリオにおいてアクセシビリティ機能を使用可能にするシステムの例をより詳細に示す図である。
【図4】リモート端末セッションのシナリオにおいてアクセシビリティ機能を使用可能にする環境におけるシステム、装置、およびコンポーネントの例を示す図である。
【図5】リモート端末セッションのシナリオにおいてアクセシビリティ機能を使用可能にする1つの実施態様例のプロセス図である。

【特許請求の範囲】
【請求項1】
リモート端末セッションにおいて表示要素に関するアクセシビリティ機能から要求を検出すること、
前記要求に関連するクエリを、前記表示要素を生成したコンピューティング・デバイス上にあるコンポーネントに送信すること、および
前記クエリに対する応答を受信すること
を含むことを特徴とする方法。
【請求項2】
前記表示要素は、前記リモート端末セッション用に生成したリモート・デスクトップの一部を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記アクセシビリティ機能は、アクセシビリティ支援ユーザ・インターフェースのインターフェース(AA−UI−インターフェース)機能を含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記送信することは、前記アクセシビリティ機能が、前記コンポーネントとの仮想チャネルを確立できるように構成されたインターフェースを公開することを含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記アクセシビリティ機能が、前記表示要素を生成する前記コンピューティング・デバイス上にあるアクセシビリティ機能表現コンポーネントとの通信を確立すること可能にすることをさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記可能にすることは、前記アクセシビリティ機能がアクセシビリティ機能表現コンポーネントと通信できるように構成されたインターフェースを提供することを含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記可能にすることは、前記アクセシビリティ機能がアクセシビリティ機能表現コンポーネントと通信できるように構成された1つまたは複数のコンポーネントを起動するための前記アクセシビリティ機能用のインターフェースを提供することを含むことを特徴とする請求項5に記載の方法。
【請求項8】
前記表示要素は、単一のユーザ・インターフェース(UI)オブジェクトを含み、前記UIオブジェクトを反映するオブジェクト・ツリーのノードとして前記アクセシビリティ機能に前記応答を提示することをさらに含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記提示することは、前記応答を処理して、前記リモート端末セッションに関わる少なくとも1つの要因を補償することを含むことを特徴とする請求項8に記載の方法。
【請求項10】
前記少なくとも1つの要因は、前記表示要素のソースから取得した位置データを調整して、クライアント・ディスプレイに対して前記表示要素の位置を反映することを含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記送信することは、前記リモート端末セッションによって使用可能にされた仮想チャネル上で前記要求を送信することを含むことを特徴とする請求項1に記載の方法。
【請求項12】
実行されると、
ユーザインターフェース(UI)を生成すること、
前記UIの表現をリモート端末セッション・クライアントに送信すること、
前記UIに関わるクエリを受信すること、および
前記クエリに応答してUI情報にアクセスすること
を備える動作を実施するコンピュータ実行可能命令を備えることを特徴とするコンピュータ可読媒体。
【請求項13】
前記アクセスすることは、前記受信することに応答して開始されるアクセシビリティ支援ユーザ・インターフェース(AA−UI)のインターフェース・コンポーネントにより実現されることを特徴とする請求項12に記載のコンピュータ可読媒体。
【請求項14】
前記受信することは、前記リモート端末セッション・クライアントからの起動要求の受信に応答して開始されるコンポーネントにより実現されることを特徴とする請求項12に記載のコンピュータ可読媒体。
【請求項15】
前記UIは、UI要素のサブ・ツリーを備えることを特徴とする請求項12に記載のコンピュータ可読媒体。
【請求項16】
前記UI情報を、前記端末サービス・クライアントとの端末サービス・セッションにより使用可能にされた通信手段上で前記クライアントに送信することをさらに備えることを特徴とする請求項12に記載のコンピュータ可読媒体。
【請求項17】
リモート端末セッション内で表示した表示要素に対してアクセシビリティ関連情報を要求する手段と、および
前記表示要素がリモートに生成されるか否かを決定する手段と
を備えることを特徴とするシステム。
【請求項18】
アクセシビリティ関連情報を取得可能な、前記表示要素のリモート・ソースとの通信を使用可能にする手段をさらに備えることを特徴とする請求項17に記載のシステム。
【請求項19】
前記通信を使用可能にする手段は、前記要求する手段が前記リモート・ソースと通信するための通信手段にアクセス可能な少なくとも1つのインターフェースを提供することを特徴とする請求項18に記載のシステム。
【請求項20】
前記インターフェースは、前記要求する手段は、前記通信を使用可能にする手段のプロセス境界内部でコンポーネントを起動させることを可能にすることを特徴とする請求項19に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2008−542874(P2008−542874A)
【公表日】平成20年11月27日(2008.11.27)
【国際特許分類】
【出願番号】特願2008−513480(P2008−513480)
【出願日】平成18年4月13日(2006.4.13)
【国際出願番号】PCT/US2006/013962
【国際公開番号】WO2006/130242
【国際公開日】平成18年12月7日(2006.12.7)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】