(57)【要約】  リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にすることに関する技術を説明する。一例としてプロセスは、リモートターミナルセッションにおいてリモートで生成されたアプリケーショングラフィカルウィンドウを修正するユーザコマンドを検出する。プロセスはユーザコマンドを、リモートで生成されたアプリケーショングラフィカルウィンドウが表示されたローカルマシンで開始するか、リモートで生成されたアプリケーショングラフィカルウィンドウを生成したリモートマシンで開始するかを判定する。
2008544399.tif 000002
【特許請求の範囲】
【請求項１】
第一のマシンでアプリケーショングラフィカルウィンドウを生成するステップと、
リモートターミナルセッションに適応した第二のマシンに前記アプリケーショングラフィカルウィンドウの表現を送信するステップと、
前記第二のマシンからユーザコマンドを検出して前記表現を修正するステップと、
前記ユーザコマンドに関するデータを前記第二のマシンに伝達して、前記第二のマシンに対応するクライアントプロキシグラフィカルウィンドウを修正できるようにするステップと、
前記クライアントプロキシウィンドウ上の前記ユーザコマンドの完了に応答して、前記プロキシウィンドウに対応するよう前記アプリケーションウィンドウを更新するステップと、および
前記アプリケーションウィンドウの更新された表現を前記第二のマシンに送信するステップと
を含むことを特徴とする方法。
【請求項２】
前記検出するステップは、実行中のユーザコマンドを検出することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記検出するステップは、ユーザのマウスボタンダウンクリックを検出することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記伝達するステップは、前記マウスボタンダウンクリックが行われたマウスの第一の位置と、第二の更新されたマウスの位置とに関するデータを伝達することを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記更新するステップは、前記プロキシグラフィカルウィンドウに関するパラメータを受信し、それに対応して前記アプリケーショングラフィカルウィンドウを更新することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記表現を修正する前記ユーザコマンドは、前記表現をサイズ変更するユーザコマンドを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記第二のマシンのユーザ選択によるグラフィカルウィンドウ修正モードを示す伝達を受信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ユーザ選択によるグラフィカルウィンドウ修正モードは、グラフィカルウィンドウの移動またはグラフィカルウィンドウのサイズ変更のうちの少なくとも１つに関連することを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ユーザ選択によるグラフィカルウィンドウ修正モードの少なくとも一部に基づいて、前記ユーザコマンドを前記第一のマシン上で開始するか前記第二のマシン上で開始するかを判定するステップをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
コンピュータ実行可能命令を備えたコンピュータ可読媒体であって、動作実行時に
ユーザコマンドを検出して、リモートターミナルセッションにおいてリモートで生成されたアプリケーショングラフィカルウィンドウを修正するステップと、
前記リモートで生成されたアプリケーショングラフィカルウィンドウが表示されているローカルマシンと、前記リモートで生成されたアプリケーショングラフィカルウィンドウを生成したリモートマシンとのいずれにおいて前記ユーザコマンドを開始するかを判定するステップと
を有する動作を行うことを特徴とするコンピュータ可読媒体。
【請求項１１】
前記リモートで生成されたアプリケーショングラフィカルウィンドウを修正する前記ユーザコマンドは、前記リモートで生成されたアプリケーショングラフィカルウィンドウを移動またはサイズ変更（移動／サイズ変更）するユーザコマンドを備えることを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記検出するステップと前記判定するステップとは前記リモートマシンで行われることを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１３】
前記検出するステップは、実行中のユーザコマンドを検出することを備えることを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１４】
前記判定するステップは、前記ローカルマシンのグラフィカルウィンドウ修正モードに少なくとも部分的に依存していることを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１５】
前記修正モードがアウトラインモードを備える場合、前記ローカルマシンに前記ユーザコマンドに関する情報を送信することにより、それに対応する修正プロセスが前記ローカルマシンで開始されるようにすることを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
前記ローカルマシンで行われた前記リモートで生成されたアプリケーショングラフィカルウィンドウ上の動作に関する情報を受信するステップをさらに備えることを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
リモートマシンからリモートで生成されたアプリケーショングラフィカルウィンドウを受信し、前記リモートで生成されたアプリケーショングラフィカルウィンドウが描写されるプロキシグラフィカルウィンドウを生成する手段と、
前記プロキシウィンドウに関するユーザウィンドウ修正コマンドを前記リモートマシンに中継する手段と、
前記リモートマシンから前記ユーザ修正コマンドに関するパラメータを受信する手段と、
前記パラメータに基づいて前記プロキシウィンドウ上で前記ユーザウィンドウ修正コマンドを開始する手段と
を備えることを特徴とするシステム。
【請求項１８】
パラメータを受信する手段は、リモートターミナルセッションコンポーネントを備えることを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記ユーザグラフィカルウィンドウ修正コマンドは、グラフィカルウィンドウ移動またはグラフィカルウィンドウサイズ変更のうちの少なくとも１つに関することを特徴とする請求項１７に記載のシステム。
【請求項２０】
前記更新されたプロキシグラフィカルウィンドウに関するデータを前記リモートマシンに中継する手段をさらに備えることを特徴とする請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にすることに関する。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
マイクロソフト社が提供しているＴｅｒｍｉｎａｌ  Ｓｅｒｖｉｃｅｓ（商標）のようなリモートターミナルとのセッションをサポートする製品はクライアントマシンとサーバマシン間のリモートターミナルセッションを可能にする。リモートターミナルセッション（ＲＴＳ）はアプリケーショングラフィックウィンドウのようなグラフィカルユーザインタフェースウィンドウ（以後「グラフィカルウィンドウ」と呼ぶ）が、サーバマシン上に生成されることを可能にする。ＲＴＳはビットマップ画像のようなリモートで生成されたグラフィカルウィンドウ表現を、クライアントマシン上に表示することを可能にする。クライアントマシン自身もまたクライアントマシン上に表示するアプリケーショングラフィカルウィンドウを生成する。クライアントマシンのユーザはローカルで生成されたアプリケーショングラフィカルウィンドウとリモートで生成されたアプリケーショングラフィカルウィンドウの一方もしくは両方を扱うことができる。ローカルで生成されたアプリケーショングラフィカルウィンドウとリモートで生成されたアプリケーショングラフィカルウィンドウの双方に類似した機能を提供する技術が継続的に求められている。
【課題を解決するための手段】
【０００３】
リモートで生成されたグラフィカルウィンドウに適用されるグラフィカルウィンドウ修正コマンドを可能にすることに関する技術について述べる。一例を挙げると、リモートターミナルのセッションにおいて、リモートで生成したアプリケーショングラフィカルウィンドウを修正するためのユーザコマンドを、プロセスが検出する。ユーザコマンドを開始するのを、リモートで生成されたアプリケーショングラフィカルウィンドウが表示されているローカルマシン上にするか、リモートで生成されたアプリケーショングラフィカルウィンドウを生成したリモートマシン上にするのかはプロセスが判定する。
【発明を実施するための最良の形態】
【０００４】
全体像
スタンドアローンのコンピューティングシナリオでは、ユーザは１つまたは複数のアプリケーショングラフィカルウィンドウを含むユーザインタフェースを生成するマシン構成に関与している。ユーザが個々のアプリケーショングラフィカルウィンドウを修正したい場合もある。例えば、ユーザがグラフィカルウィンドウを移動する、またはサイズを変更して、個々のアプリケーショングラフィカルウィンドウを修正したい場合もある。移動やサイズ変更プロセス中に、マシンのオペレーティングシステムは一般に、何らかのグラフィカルウィンドウの可視表示を提供し、ユーザが新しいグラフィカルウィンドウのサイズおよび／または位置を目で見ることができるようにする。少なくともオペレーティングシステムのいくつかは、移動／サイズ変更プロセス中にアプリケーショングラフィカルウィンドウがどのように見えるかをユーザが選択できるようにしている。例えば、ユーザにフルウィンドウモードかアウトラインモードかどちらかを選択させるオペレーティングシステムがある。フルウィンドウモードでは移動／サイズ変更プロセス中に基本的にアプリケーショングラフィカルウィンドウ全体を継続的に更新する。ユーザが移動／サイズ変更コマンドを終了して移動／サイズ変更が完了すると更新が終了する。アウトラインモードでは、移動／サイズ変更プロセス中のグラフィカルウィンドウの新たな位置／サイズを示す破線が生成される。（例えば、マウスボタンを持ち上げることにより）移動／サイズ変更プロセスが終了すると、破線が消えてアプリケーショングラフィカルウィンドウは更新され、新たな位置／サイズになる。
【０００５】
リモートターミナルセッションは、サーバとして動作する第一のリモートマシンを含み、クライアントとして動作する第二のローカルマシンにデータをリモート(remote)するように構成されている。スタンドアローン構成と同じように、ユーザが関与するローカルマシンは、１つまたは複数のローカルで生成されたアプリケーショングラフィカルウィンドウを生成するように構成されることができ、さらにローカルで生成されたアプリケーショングラフィカルウィンドウの移動／サイズ変更操作のモードをユーザが指定することができる。リモートマシン上で動作するアプリケーションは、サーバアプリケーショングラフィカルウィンドウを生成できる。リモートターミナルセッションは、出力またはサーバアプリケーショングラフィカルウィンドウ（複数）のグラフィックをローカルマシンに転送可能なように構成されている。ローカルマシン上にプロキシウィンドウが形成されてサーバアプリケーションのグラフィックがプロキシグラフィカルウィンドウ上に描かれ、リモートで生成されたサーバアプリケーショングラフィカルウィンドウのローカル表示を形成する。本実装は、ユーザが選択したローカルマシンの移動／サイズ変更モードを、リモートで生成されたアプリケーショングラフィカルウィンドウに適用可能にする。少なくとも幾つかの実装では、リモートで生成されたアプリケーショングラフィカルウィンドウとローカルで生成されたアプリケーショングラフィカルウィンドウとを、ユーザが移動／サイズ変更特性に基づいては区別できないようなシームレスな移動／サイズ変更操作を達成している。
【０００６】
一般的な意味においては、本実装の少なくとも幾つかでは、リモートターミナルセッションに含まれるグラフィカルウィンドウを修正するユーザコマンドが、クライアントマシンからグラフィカルウィンドウを生成したサーバマシンに送信される。コマンドはサーバマシンで処理されることができ、それによってグラフィカルウィンドウを更新する。更新は引き続きクライアント側に送信および反映される。また、コマンドをクライアントマシンに返送することができる。クライアントマシンはクライアント側でコマンドを実装することが可能であり、サーバにデータを戻してサーバにグラフィカルウィンドウを再同期させてクライアント側の修正を反映させることができる。
【０００７】
例示的システム
説明のために、ネットワーク１０６上でリモートマシン１０２とローカルマシン１０４との間のリモートターミナルセッションをサポートするように構成されたシステム１００を図示する図１〜６についてまとめて考察する。リモートマシン１０２はサーバアプリケーショングラフィカルウィンドウ１１０を生成するように構成されている。サーバアプリケーショングラフィカルウィンドウ１１０がここでは説明のために可視表示されているが、リモートマシンに可視画像を実際に生成しなくても本実装は機能するということは当業者には認識されよう。リモートターミナルセッションは、リモートマシンのサーバアプリケーショングラフィカルウィンドウ１１０がネットワーク１０６を経由してローカルマシン１０４に送信されることを表現する手段を提供する。例えば、この表現はとりわけビットマップ画像であってもよい。さらにリモートターミナルセッションにより、ローカルマシン１０４に、プロキシグラフィカルウィンドウ１１２がクライアントデスクトップ１１４上で生成される。リモートで生成されたアプリケーショングラフィカルウィンドウ１１６としてここで指定されているサーバアプリケーショングラフィカルウィンドウの表現は、プロキシグラフィカルウィンドウ上に描写か表示することができる。説明のために、ローカルで、あるいはクライアントにより生成されたアプリケーショングラフィカルウィンドウ１１８もまたローカルマシン１０４のクライアントデスクトップ１１４上に示される。説明のために、ローカルとリモートとの両方で生成されたアプリケーショングラフィカルウィンドウを表示するように構成されたマシンに置かれたユーザの視点から、ローカルおよびリモートという用語をここでは使用する。更に説明のために、リモートで生成されたアプリケーショングラフィカルウィンドウ１１６は、ここではプロキシグラフィカルウィンドウ１１２の領域のサブセットを占めるものとして説明される。多くの場合、リモートで生成されたアプリケーショングラフィカルウィンドウ１１６は、プロキシグラフィカルウィンドウが見えないように本質的にプロキシグラフィカルウィンドウ全体の上に描かれている。更に、ここで説明したアプリケーショングラフィカルウィンドウは、一般的に長方形に近似しているが、少なくとも実装の幾つかは変則的な形も含む任意の形状をしたアプリケーショングラフィカルウィンドウの使用に適したものである。システム１００はグラフィカルウィンドウ修正コマンドがリモートで生成されたグラフィカルウィンドウ１１６に適用可能なように構成されている。この特定の実装では、グラフィカルウィンドウがローカルで生成されるかあるいはリモートで生成されるかにかかわらず、アプリケーショングラフィカルウィンドウの移動／サイズ変更操作に対しユーザが選択したモードをサポートするようにシステム１００は構成されている。
【０００８】
説明のために、ローカルマシン１０４のユーザがローカルマシン１０４に対しグラフィカルウィンドウの移動／サイズ変更アウトラインモードを選択したと仮定する。更に、ローカルで生成されたアプリケーショングラフィカルウィンドウ１１８を、図１に示す第一のサイズから図３に明示するより大きなサイズへ拡張することをユーザが望んでいるとする。ユーザはグラフィカルウィンドウの移動／サイズ変更プロセスを開始する様々なユーザコマンドを通じてそのような動作を完了することができる。例えば、ユーザコマンドの１つのタイプはシステムメニューを経由するシステムコマンドである。グラフィカルウィンドウの移動／サイズ変更プロセスを開始することができるユーザコマンドの他のタイプには、音声認識、カメラベースのジェスチャー認識、キーボード入力等が含まれる。更に別のタイプのユーザコマンドには、マウスのカーソルをグラフィカルウィンドウ上に向けて、マウスボタンを押し込んだまま新たな場所にドラッグすることも含まれる。例えば、ユーザはローカルで生成されたグラフィカルウィンドウの端部、つまり一般的に１２０で示されるようにローカルで生成されたアプリケーショングラフィカルウィンドウ１１８の右下端の位置をクリックすることができる。例えば、ユーザはマウスボタンを押したままにして右下へ、一般的に矢印２０２で示されるようにドラッグすることができる。ローカルマシン１０４は、一般的に２０６で示されるように、マウスボタンを離すまでマウスの動きが追随するようにしてローカルに生成された、アプリケーショングラフィカルウィンドウ１１８のアウトライン２０４を生成する。マウスボタンを離すと、ユーザによるサイズ変更が完了したことになる。ユーザのサイズ変更が完了すれば、ローカルに生成されたアプリケーショングラフィカルウィンドウ１１８は図３から分かるようにアウトライン２０４と一致するように調整される。
【０００９】
ここで更に、ユーザがリモートで生成されたアプリケーショングラフィカルウィンドウ１１６のサイズ変更をしたいと仮定する。そのユーザは、リモートで生成されたアプリケーショングラフィカルウィンドウ１１６がローカルで生成されたのかリモートで生成されたのかを識別できるかもしれないし、できないかもしれない。例えばユーザは、４０２として一般的に示されている、リモートで生成されたアプリケーショングラフィカルウィンドウ１１６の右下隅だと考えたところをクリックすることができる。ユーザはリモートで生成されたアプリケーショングラフィカルウィンドウ１１６を見ているが、リモートターミナルセッションの観点からはプロキシウィンドウ１１２をクリックしていることになり、プロキシウィンドウ１１２上にリモートで生成されたアプリケーショングラフィカルウィンドウ１１６が描かれている。システム１００は、プロキシグラフィカルウィンドウ１１２の移動／サイズ変更に関するユーザコマンドを検出してサーバ側に転送するように構成されている。
【００１０】
この場合、ユーザはマウスボタンを押してリモートで生成されたアプリケーショングラフィカルウィンドウ１１６および／またはその下にあるプロキシグラフィカルウィンドウ１１２の右下端部か隅をクリックする。ユーザは４０２をクリックして、矢印５０２で一般的に示すように右下にドラッグを開始する。システム１００はそれに応答して、ユーザが例えば図５にあるカーソル５０６で示す位置でカーソルを離すかアップクリックするまでユーザのカーソル５０６に追随して動くプロキシグラフィカルウィンドウ１１２のアウトライン５０４を生成する。ドラッグ操作中、アウトライン５０４の一部はリモートのアプリケーショングラフィカルウィンドウ領域の外側にある。このため、この場合ユーザがアウトラインモードを選択すると、移動／サイズ変更のためのユーザコマンドはローカルマシン１０４上で処理され、クライアントコマンドに対応した移動／サイズ変更を開始する。
【００１１】
ユーザのサイズ変更コマンド完了後、プロキシグラフィカルウィンドウ１１２はアウトライン５０４のサイズに更新される。リモートマシンはその後、更新されたプロキシグラフィカルウィンドウのサイズ／位置に関連してアプリケーショングラフィカルウィンドウ１１０を更新する。これに対応するリモートで生成されたアプリケーショングラフィカルウィンドウ１１６は、ローカルマシン１０４に送付され、図６からも分かるようにリモートで生成されたアプリケーショングラフィカルウィンドウ１１６とプロキシグラフィカルウィンドウ１１２とを同期する。システム１００は、ローカルで生成されたアプリケーショングラフィカルウィンドウの移動／サイズ変更機能の近似あるいは真似をして、リモートで生成されたアプリケーショングラフィカルウィンドウに対する移動／サイズ変更機能を可能にする。上記では、説明のためにグラフィカルウィンドウのサイズ変更について記述したが、グラフィカルウィンドウの移動に関しても同様に扱うことができる。
【００１２】
上述および後述する実装は、現時点で普通直面するコンピューティング環境の状況を元に記載されている。パーソナルコンピュータ（ＰＣ）などのコンピュータにより実行されるプログラムモジュールのような、コンピュータ実行可能命令やコード手段による様々な実装例が可能である。一般的にプログラムモジュールは、特定のタスクを実行したり特定の抽象データ型を実装したりする、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含んでいる。
【００１３】
ＰＣ以外のコンピュータシステム構成でも様々な実装例がある。例えば、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースあるいはプログラム可能家電製品、ネットワークＰＣ，ミニコンピュータ、メインフレームコンピュータ、携帯電話等で様々な実装が実現できる。更に、技術が引き続き進歩するのに伴い、デバイスの種類として未確認のものについても様々な実装が実現できる。例えば、処理能力ユニットの価格が下落し続けワイヤレス技術が拡大するにつれて、今日の携帯電話に類似したコンピューティングデバイスが、今日のＰＣ，ビデオカメラ、携帯電話の機能、およびそれ以上の機能を１つのモバイルデバイスで行うことができる。この１つのデバイスが、サーバとして動作するシナリオもあるし、クライアントとして動作するシナリオもりえる。これは前述の実装を行うための、既存あるいは開発中である数多くの事例の一つにすぎない。
【００１４】
ここで使用しているサーバとクライアントという用語は、２台のデバイスの相対的な能力を意味するものではない。クライアントはサーバよりも優れた、劣る、あるいは同等の処理能力を有することができる。むしろこの出願書では、サーバとクライアントという名前は２つのコンポーネントの相対的な関係を記述するものである。例えば、第一のもしくはサーバ装置のコンピューティング経験(experience)が、第二のもしくはクライアント装置にリモートされるのである。
【００１５】
上述のように様々な実装を多種の動作環境に組み込むことができるが、典型的な環境１つだけの説明が図１１における典型的な汎用コンピューティングデバイスのコンテキストの中にあらわれている。その典型的な環境についてはこの明細書において「典型的なオペレーティング環境」という見出しの下でより詳細に後述する。
【００１６】
ローカルで生成されたアプリケーショングラフィカルウィンドウとリモートで生成されたアプリケーショングラフィカルウィンドウとが、同様な外観もしくはユーザ修正コマンドのためのユーザインタフェースを提供するように構成されたシステム１００Ａを説明する図７について考える。システム１００Ａはネットワーク１０６Ａを介して、リモートマシン１０２Ａとローカルマシン１０４Ａとの間のリモートターミナルセッションを支援するように構成されている。
【００１７】
リモートマシン１０２Ａは、サーバリモートアプリケーションマネジャ７０２、グラフィカルウィンドウマネジャ７０４、サーバオペレーティングシステム（ＯＳ）７０８上で動作する１つまたは複数のサーバアプリケーション７０６を含む。ローカルマシン１０４Ａは、クライアントリモートアプリケーションマネジャ７１０を含み、クライアントオペレーティングシステム（ＯＳ）７１４上で動作する１つまたは複数のクライアントアプリケーション７１２を含むことができる。ここで使用するサーバアプリケーション７０６とクライアントアプリケーション７１２の例はグラフィックインタフェースを開くいかなるコード手段でも含むことができる。例えば、このアプリケーションに含まれるのは、ワードプロセッシングや、表計算や、メッセージングや、ノートパッドや、グラフィックや、マイクロソフト社が提供しているウィンドウズエクスプローラブランドのファイルブラウザのようなファイルブラウザツールや、コントロールパネルツールや、ハードウェア追加用グラフィックツールや、ネットワーク接続や、ビデオゲーム他がある。
【００１８】
システム１００Ａは、ローカルマシン１０４Ａのユーザが、アプリケーショングラフィカルウィンドウ１１８Ａなどのローカルで生成されたアプリケーショングラフィカルウィンドウと、リモートで生成されたアプリケーショングラフィカルウィンドウ１１６Ａなどのリモートで生成されたアプリケーショングラフィカルウィンドウとに、移動／サイズ変更のような修正をし、両方のインスタンスで類似あるいは同等のユーザインタフェースを受け取ることができるように構成されている。例えば、ユーザが移動／サイズ変更グラフィカルウィンドウ操作用アウトラインモードを選択した場合、システム１００Ａはローカルで生成されたアプリケーショングラフィカルウィンドウと、リモートで生成されたアプリケーショングラフィカルウィンドウとの両方に対してアウトラインモードの移動／サイズ変更操作を提供するように構成される。
【００１９】
システム１００Ａは、ローカルマシンのユーザが選択した移動／サイズ変更モードを判定するように構成されている。そこでシステム１００Ａは、グラフィカルウィンドウがローカルで生成されたものかリモートで生成されたものか、ユーザが選択したアプリケーショングラフィカルウィンドウの移動／サイズ変更操作のモードに基づいて、ユーザグラフィカルウィンドウの移動／サイズ変更コマンドを処理するように構成されている。ローカルで生成されたアプリケーショングラフィカルウィンドウに関するユーザコマンドは、従来の方法でローカルマシンが処理する。システム１００Ａは、ユーザが選択したモードに基づいて、リモートで生成されたアプリケーショングラフィカルウィンドウに関するユーザコマンドを処理するように構成されている。ユーザがフルイメージモードを選択した場合、コマンドはサーバ側で処理され、結果はクライアント側で明示される。ユーザがアウトラインモードを選択した場合は、システム１００Ａはクライアントプロキシグラフィカルウィンドウ１１２Ａで移動／サイズ変更コマンドを開始するように構成され、その後サーバ側のアプリケーショングラフィカルウィンドウ１１０Ａが更新され、それに伴ってプロキシグラフィカルウィンドウ１１２Ａとリモートで生成されたアプリケーショングラフィカルウィンドウ１１６Ａとが再同期する。上記の機能を実現するため、システム１００Ａの幾つかのコンポーネントに関して以下で説明する。
【００２０】
サーバリモートアプリケーションマネジャ７０２はサーバ側のリモートターミナルセッション機能を容易にするように構成されている。サーバリモートアプリケーションマネジャはサーバアプリケーション７０６を管理するように構成されている。これによりサーバアプリケーショングラフィカルウィンドウ１１０Ａの表現をリモートターミナルセッション中のローカルマシン１０４Ａに送ることができる。サーバリモートアプリケーションマネジャ７０２はまた、サーバからクライアントにサーバアプリケーショングラフィカルウィンドウ１１０Ａに関するデータ転送を容易にするように構成されている。例えば、複数のアプリケーションがサーバ上で動作する間、そのアプリケーションのうちの１つだけをクライアント１０４Ａにリモートすることができる。実装によっては、サーバリモートアプリケーションマネジャ７０２が、適切なアプリケーションウィンドウからのデータをクライアントに送ることを保証するように構成されているものもある。
【００２１】
グラフィカルウィンドウマネジャ７０４は個々のサーバグラフィカルウィンドウに関するユーザの相互作用を処理するように構成されている。グラフィカルウィンドウマネジャは、アプリケーションのアイコンをマウスでクリックする等のユーザコマンドを介して個々のグラフィカルウィンドウを立ち上げるのを手始めとして、個々のグラフィカルウィンドウとの相互作用を処理する。グラフィカルウィンドウマネジャはユーザコマンドに応答してグラフィカルウィンドウを開き、以降グラフィカルウィンドウに関するユーザコマンドはグラフィカルウィンドウマネジャを介して指示される。この場合、サーバリモートアプリケーションマネジャ７０２は更に、グラフィカルウィンドウマネジャ７０４にグラフィカルウィンドウに関係したいかなるイベントについてもサーバリモートアプリケーションマネジャ７０２に報告するように依頼するように構成されている。グラフィカルウィンドウマネジャは、新しいグラフィカルウィンドウが立ち上がった時、グラフィカルウィンドウが移動および／またはサイズ変更、かつ最小化された時のイベント等をサーバリモートアプリケーションマネジャに報告する。サーバリモートアプリケーションマネジャ７０２は、グラフィカルウィンドウマネジャ７０４から受け取った情報を分析するように構成されており、リモートターミナルセッションでクライアントにリモートされるグラフィカルウィンドウがあるか、もしあるとすれば、どのような情報に関係するのかを判定する。サーバリモートアプリケーションマネジャはまた、リモートターミナルセッションに関与するグラフィカルウィンドウ（複数）に関連する情報をクライアントに取り次ぐように構成されている。例えば、サーバリモートアプリケーションマネジャ７０２は情報をクライアントに送信して、サーバアプリケーショングラフィカルウィンドウとそれに対応するクライアントプロキシグラフィカルウィンドウとの同期を容易にする。
【００２２】
クライアントリモートアプリケーションマネジャ７１０はサーバとのリモートターミナルセッションを確立して、リモートターミナルセッションに関連するサーバとの相互接続を処理する。クライアントリモートアプリケーションマネジャはまた、プロキシグラフィカルウィンドウ１１２Ａをローカルマシン１０４Ａ上に生成させ、サーバアプリケーショングラフィカルウィンドウ１１０Ａの表現をリモートで生成されたアプリケーショングラフィカルウィンドウ１１６Ａの形式でプロキシグラフィカルウィンドウ１１２Ａ上に描写させるように構成されている。クライアントリモートアプリケーションマネジャ７１０はさらに、それに対応するサーバアプリケーショングラフィカルウィンドウ１１０Ａに関するサーバリモートアプリケーションマネジャ７０２から受け取った情報の少なくとも一部は基づいて、クライアントのプロキシグラフィカルウィンドウ１１２Ａのサイズと範囲に関する詳細を処理するように構成されている。
【００２３】
クライアントリモートアプリケーションマネジャ７１０はまた、ローカルマシン１０４Ａの移動／サイズ変更モードに関する情報を受信するように構成されている。例えば、上述のように、実装によって、ローカルマシンはアウトラインモードかフルウィンドウモードになりえる。クライアントリモートアプリケーションマネジャ７１０はサーバリモートアプリケーションマネジャ７０２とローカルマシンの移動／サイズ変更モードを共有するように構成されている。
【００２４】
クライアントリモートアプリケーションマネジャ７１０はまた、個別のプロキシグラフィカルウィンドウに関するクライアントコマンドを、サーバリモートアプリケーションマネジャ７０２によりコマンドが受信される、リモートマシン１０２Ａに転送するよう構成される。サーバリモートアプリケーションマネジャは、クライアントコマンドをグラフィカルウィンドウマネジャ７０４と協力してサーバ側に実装するよう構成されている。
【００２５】
システム１００Ａは、プロキシグラフィカルウィンドウ１１２Ａのような、リモートターミナルセッションに含まれるグラフィカルウィンドウを修正することに関連するユーザコマンドを検出するように構成されている。例えば、そのような検出は、クライアントリモートアプリケーションマネジャ７１０によってか、サーバリモートアプリケーションマネジャ７０２によってというように、サーバ側でなされることができる。例えば、サーバリモートアプリケーションマネジャ７０２はプロキシグラフィカルウィンドウ１１２Ａに関するウィンドウコマンドを評価して、ユーザがプロキシグラフィカルウィンドウ１１２Ａに関してグラフィカルウィンドウを移動もしくはサイズ変更を開始したかどうかを検出するように構成されている。ユーザは、多数の可能性のある手段の１つを利用してグラフィカルウィンドウの移動／サイズ変更を開始することができる。例えば、ユーザはシステムメニューの利用等により、グラフィカルウィンドウを移動／サイズ変更する適切なシステムコマンドを送信できる。別の例では、ユーザはグラフィカルウィンドウのキャプション／ボーダ上でマウスボタンを押してグラフィカルウィンドウをドラッグすることができる。例えば、グラフィカルウィンドウの移動／サイズ変更コマンドを遂行するためには、ユーザはグラフィカルウィンドウの作業箇所でない部分でマウスクリックすることができる。そのような作業箇所でない部分は、プロキシグラフィカルウィンドウ１１２Ａについて指示されているように特に端（図１〜６に示される）またはキャプション７２０を含むことができる。多くの構成では、ユーザがグラフィカルウィンドウのサイズを変えたければグラフィカルウィンドウの端をクリックするし、グラフィカルウィンドウを移動させたければキャプションをクリックする。
【００２６】
移動／サイズ変更が検出された場合、システム１００Ａはさらにグラフィカルウィンドウの移動とグラフィカルウィンドウのサイズ変更とを区別するように構成される。上述のように、ローカルマシンがフルイメージモードであるかアウトラインモードであるかに基づいて、システム１００Ａは適切な行動を取りユーザコマンドを遂行するように構成されている。特定のシステム構成のそのような例の１つとして、サーバリモートアプリケーションマネジャ７０２は、リモートマシン１０２Ａとローカルマシン１０４Ａとの間のリモートターミナルセッションのプロキシグラフィカルウィンドウに関するユーザの移動／サイズ変更コマンドを検出するように構成されている。サーバリモートアプリケーションマネジャ７０２はまた、フルイメージモードかアウトラインモードかどちらかのユーザが選択した移動／サイズ変更モードに適応した移動／サイズ変更コマンドを遂行するために適切な行動を取るように構成されている。
【００２７】
この場合、サーバリモートアプリケーションマネジャ７０２は、ユーザコマンドがリモートターミナルセッションに伴うグラフィカルウィンドウに関するウィンドウ／サイズ変更操作に関連するか否かを判定するように構成されている。移動、サイズ変更コマンドが開始されたと判定されると、サーバリモートアプリケーションマネジャ７０２はユーザが選択したグラフィカルウィンドウ移動／サイズ変更モードに基づいて行動を起こす。特にこの実装の場合は、移動／サイズ変更モードがフルイメージであれば、サーバリモートアプリケーションマネジャ７０２はサーバでコマンド処理を行い、それに従ってサーバアプリケーショングラフィカルウィンドウ１１０Ａを更新する。サーバアプリケーショングラフィカルウィンドウが更新されると、それに対応する表現がクライアントに送信され、その表現は更新済みのリモートで生成されたアプリケーショングラフィカルウィンドウ１１６Ａとして表示される。プロキシグラフィカルウィンドウ１１２Ａのサイズまたは位置は、更新済みのリモートで生成されたアプリケーショングラフィカルウィンドウ１１６Ａに対応するように調整される。
【００２８】
更に、この実装では、ユーザが選択した移動／サイズ変更モードがアウトラインモードの場合、サーバリモートアプリケーションマネジャ７０２は、ユーザコマンドをクライアントリモートアプリケーションマネジャ７１０に送信するように構成されている。ユーザコマンドを反映したプロキシグラフィカルウィンドウ１１２Ａのアウトラインは、クライアントのデスクトップ１１６Ａで生成される。クライアントコマンドが終了すると、プロキシグラフィカルウィンドウの新しいサイズおよび／または場所に関する位置データがリモートマシンに送信され、リモートマシンでは、サーバアプリケーショングラフィカルウィンドウが新しいプロキシグラフィカルウィンドウに同期するように更新されている。更新された表現はローカルマシンに送信され、プロキシグラフィカルウィンドウ１１２Ａ上に描かれている更新済みのリモートで生成されたアプリケーショングラフィカルウィンドウ１１６Ａとして表示される。
【００２９】
アウトラインとフルイメージモードとを区別する上述の実装の代わりに、あるいはそれに加えて、システム１００Ａはフルスクリーンとアウトラインモード双方を同じように処理することができる。例えば、アウトラインもしくはフルスクリーンといったユーザが選択したモードにかかわらず、システム１００はサーバでユーザの移動／サイズ変更コマンドを受信し、クライアントにユーザの移動／サイズ変更コマンドおよび／または関連するデータを送信することができる。ユーザコマンドはクライアント側で開始でき、サーバ側はその後で更新されてサーバとクライアントの再同期が行われる。同様に、システム１００Ａはユーザが選択した修正モードにかかわらず、サーバ側で全てのユーザコマンドを開始する決定をする場合もある。
【００３０】
ローカルで生成されたアプリケーショングラフィカルウィンドウとリモートで生成されたアプリケーショングラフィカルウィンドウに関するユーザの移動／サイズ変更コマンドのための同様のユーザインタフェースを、システム１００Ａがどのように提供できるのかという例を示すプロセス８００をまとめて説明している図８，９について考察する。もちろんシステム１００は、ローカルおよびリモートで生成されたアプリケーショングラフィカルウィンドウ双方に対してユーザが選択した移動／サイズ変更モードが使えるような構成一つだけを提供する。図８，９はローカルマシン１０４Ａのユーザが、ローカルマシン１０４Ａのアプリケーショングラフィカルウィンドウ用のアウトライン移動／サイズ変更モードを選択したというシナリオを含む。上述のように、他の実装ではアウトラインモードとフルイメージモードを区別しないで、同じように処理することができる。同様に、この例はウィンドウ／移動・サイズ変更シナリオというコンテキストを提供する一方で、そのプロセスは他のユーザコマンドにも適用してリモートで生成されたアプリケーションウィンドウを修正することができる。
【００３１】
ステップ８０２では、ユーザのマウスボタンダウンコマンドがローカルマシンのプロキシグラフィカルウィンドウ上で検出される。ステップ８０４ではマウスボタンダウン通知がクライアントリモートアプリケーションマネジャ７１０に送信される。サーバリモートアプリケーションマネジャ７０２はクライアント側のサイズ変更を開始するようにクライアントリモートアプリケーションマネジャにまだ指示していないので、プロセスは先に進んでマウスボタンダウン情報をステップ８０６にてサーバ側に転送する。
【００３２】
ステップ８０６では、マウスボタンダウン通知がクライアント側からサーバ側へ送信される。この特定の構成では、マウスボタンダウン通知はクライアントリモートアプリケーションマネジャ７１０からサーバリモートアプリケーションマネジャ７０２へ送信される。サーバリモートアプリケーションマネジャはマウスボタンダウン通知をステップ８０８のサーバアプリケーショングラフィカルウィンドウ１１０Ａに転送する。
【００３３】
ステップ８１０では、グラフィカルウィンドウのサイズ変更がサーバアプリケーションウィンドウ１１０Ａで開始される。少なくとも幾つかの実装では、ユーザ動作が起こってからユーザ動作の検出が行われる。例えば、ユーザはウィンドウの隅をクリックしてマウスでそのウィンドウのドラッグを開始することができるが、ウィンドウのサイズ変更プロセスが開始されるのはユーザがクリックした後である。それはつまり、ユーザから見て実際にユーザ動作が始まった後でなければ、サーバアプリケーションウィンドウ上でグラフィカルウィンドウのサイズ変更は開始されない。そのような実装にしておけば、ユーザがサイズ変更コマンドを発行しようとしただけで関連したサイズ変更が開始されてしまうというプロセスを間違って予測するシナリオを回避できる。
【００３４】
ステップ８１２でプロセスは、サーバリモートアプリケーションマネジャ７０２に、特定のグラフィカルウィンドウがサイズ変更されているという連絡を通知する。移動もしくはサイズ変更のどちらが起きているか区別するために、グラフィカルウィンドウが適当なパラメータにより移動あるいはサイズ変更されているという連絡を通知する実装もある。また、このイベントに対する関連パラメータが、移動／サイズ変更の種類を示すことができる構成もある。
【００３５】
ステップ８１４では、グラフィカルウィンドウパラメータ入手要求が、サーバリモートアプリケーションマネジャ７０２からサーバアプリケーショングラフィカルウィンドウ１１０Ａに送信される。このグラフィカルウィンドウパラメータ入手要求は、プロキシグラフィカルウィンドウがサーバにより課せられた制限を超えてクライアントでサイズ変更されないことを保証するのに利用される。ステップ８１６では、プロセスはサーバアプリケーショングラフィカルウィンドウ７１０からサーバリモートアプリケーションマネジャ７０２へグラフィカルウィンドウパラメータを送信する。
【００３６】
ステップ８１８では、プロセスはサーバ側からクライアント側へグラフィカルウィンドウズパラメータを送信する。この特定の構成では、グラフィカルウィンドウズパラメータがサーバリモートアプリケーションマネジャ７０２からクライアントリモートアプリケーションマネジャ７１０へ送信される。
【００３７】
ステップ８２０では、プロセスは望ましいマウスの位置を計算する。このステップではローカルとリモートマシン間通信に関わる潜在的な待ち時間(latency)の問題に取り組んでいる。例えば、ユーザがプロキシグラフィカルウィンドウ上の第一の位置にあるクライアント側のマウスボタンをクリックしてマウスを新たな位置に移動し始めると、第二の位置にマウスを移動もしくはドラッグしたユーザに待ち時間または遅延の問題が起こる。誤った結果を避けるため、サーバで検出されたマウス入力がクライアントに戻されないうちにマウスは第一の位置に効果的に戻される。このステップにより、状態はユーザがマウスを「クリックした」時点に効果的に戻る。
【００３８】
説明のために、クライアントがマウスをクリックした時にマウスはローカルマシンのｘ0ｙ0上にあったとして、待ち時間のために、その後の時点でサーバよりクライアントへデータが戻ってきた時に、マウスはｘ1ｙ1にあるとする。このステップはマウスをｘ0ｙ0に戻し、クリックを開始してマウスを素早くドラッグしてｘ1ｙ1に戻す。そのようなプロセスは一般的に早すぎてユーザが検出することはできない。このステップは、ユーザが１つのアプリケーショングラフィカルウィンドウ上をクリックしてマウスを別のグラフィカルウィンドウ上にドラッグしたときに、そのような待ち時間の調整がないためにプロセスが第一のアプリケーショングラフィカルウィンドウを看過してしまい、第二のアプリケーショングラフィカルウィンドウをドラッグし始めるという状態を回避するのに役立つ。このステップでマウスは第一の位置に戻り、その後新たな場所に移動する。多くの場合このプロセスは非常に早く起こるので、ユーザは単にマウスが存在した最後の場所にドラッグしたグラフィカルウィンドウがあらわれるのを目にするだけである。
【００３９】
ステップ８２２では、プロセスはサーバリモートアプリケーションマネジャ７０２からクライアントリモートアプリケーションマネジャ７１０というように、サーバ側からクライアント側に移動／サイズ変更開始情報を送信する。このステップはサーバ側からクライアント側へ適切なマウスの位置を送信するのに役立つ。
【００４０】
ステップ８２４では、プロセスはサーバ側のグラフィカルウィンドウ位置に関するデータを入手する。グラフィカルウィンドウに関するデータには右端、左端、隅、キャプション等を示すことができる。プロセスはこのデータを利用して、サイズ変更をすべきか否かの判定の少なくとも一部とする。このためこのステップは、プロセスに意図するユーザコマンドを判定させる情報を提供している。例えば、ユーザはグラフィカルウィンドウの右側を拡大しようとしていたか、または、ユーザはグラフィカルウィンドウを下側と右側とに拡大しようとしていたかである。
【００４１】
ステップ８２６では、プロセスはクライアント側のプロキシウィンドウ位置とサーバ側のグラフィカルウィンドウ位置と比較する。サーバが送信するマウスの位置にはサーバに対する座標を含んでいる。このプロセスはサーバ座標をクライアント座標に変換する。このステップは削除される場合もある。サーバに送信されたマウスの位置は翻訳されてクライアントプロキシグラフィカルウィンドウ上のマウスの位置にマッピングされる。例えば、少なくともある実装では、この翻訳はウィンドウ形状が長方形の場合以下のように行われるものもある。  
＊マウスカーソルＸ  ＝  クライアントウィンドウ長方形左  ＋  サーバ上のウィンドウとマウスの位置のオフセットＸ
＊マウスカーソルＹ  ＝  クライアントウィンドウ長方形上  ＋  サーバ上のウィンドウとマウスの位置のオフセットＹ
長方形のグラフィカルウィンドウ形状は一般的な形状であり説明の基礎となる。同業者には、このプロセスが他のグラフィカルウィンドウ形状でも利用できることが認識されよう。
【００４２】
ステップ８２８では、プロセスはサーバ側へのグラフィカルウィンドウの更新を妨げる。この時までにはプロセスは、クライアント側でサイズ変更が起きている、あるいは起きそうであることを認識する。サイズ変更が完了するまでサーバ側にアプリケーショングラフィカルウィンドウの更新を停止するように連絡する一種のフラグを設定することにより、このステップは他の方法の中でも遂行できる。サーバの視点からは、サイズ変更は依然として生じていても、ユーザはマウスを動かすのを止めてしまっている。そのようなステップは処理資源を節約するのに役立つ。
【００４３】
ステップ８３０では、クライアントリモートアプリケーションマネジャ７１０からプロキシグラフィカルウィンドウ１１２Ａに疑似マウスボタンダウンコマンドを送信する。このステップはステップ８０２で検出されたオリジナルのマウスボタンダウンコマンドを遂行するのに役立つ。ステップ８０２では、マウスボタンダウンコマンドは有効にならず、結局サーバ側に送信されたことを想起されたい。ステップ８３０は、クライアント側でステップ８０２において検出されたオリジナルのマウスボタンダウンを遂行するのに役立つ。
【００４４】
ステップ８３２では、プロセスはステップ８０２で検出されたオリジナルのマウスボタンダウン位置に対応するグラフィカルウィンドウの相対位置を要求する。例えば、この要求は、マウスボタンダウン位置をグラフィカルウィンドウの相対位置に相互に関連させるようになされる。例えば、この位置が対応するのはグラフィカルウィンドウの右端か、左端か、右下隅か？などである。
【００４５】
ステップ８３４では、プロセスはクライアントリモートアプリケーションマネジャにステップ８０６のマウスボタンダウン位置に対応するマウスの位置から翻訳されたマウスの位置データを問い合わせる。ステップ８３６では、クライアントリモートアプリケーションマネジャ７１０はマウスの位置に対応するマウス位置データを返す。
【００４６】
ステップ８３８では、プロセスはクライアント側でグラフィカルウィンドウのサイズ変更を開始する。ステップ８４０では、プロセスはクライアント側でグラフィカルウィンドウのサイズ変更を終了する。
【００４７】
ステップ８４２では、プロセスはグラフィカルウィンドウのサイズ変更が完了したという通知を受信する。ステップ８４４では、プロセスはサイズ変更状態から抜ける。例えば、クライアントリモートアプリケーションマネジャ７１０はマウスボタンアップコマンドの形式でサイズ変更プロセスから抜けるための通知を受信することができる。
【００４８】
ステップ８４６では、マウスボタンアップコマンドはクライアントリモートアプリケーションマネジャ７１０からサーバリモートアプリケーションマネジャ７０２というように、クライアント側からサーバ側に送信される。ステップ８４８では、クライアントリモートアプリケーションマネジャはマウスボタンアップコマンドをサーバアプリケーショングラフィカルウィンドウに与える。この一連のステップ（８４４〜８４８）はステップ８０４〜８０８に関連して説明したマウスボタンダウンコマンドに対応しており、システムを復元するか通常の条件を処理するのに役立つ。
【００４９】
ステップ８５０では、プロセスはサーバアプリケーショングラフィカルウィンドウ上でグラフィカルウィンドウのサイズ変更を終了する。ステップ８５２では、サーバアプリケーショングラフィカルウィンドウに関するサーバの更新を再開する。ステップ８５４では、プロセスはグラフィカルウィンドウ変更場所通知を提供する。
【００５０】
ステップ８５６では、プロセスはプロキシグラフィカルウィンドウの位置および／またはサイズをサーバ側からクライアント側へ更新する。ステップ８５８では、プロセスはリモートアプリケーションプロキシグラフィカルウィンドウ１１２Ａの位置および／またはサイズを更新する。
【００５１】
図８、９に関連して説明したステップは、ローカルで生成されたアプリケーショングラフィカルウィンドウとリモートで生成されたアプリケーショングラフィカルウィンドウに関するユーザの移動／サイズ変更コマンド用に対し、類似のユーザインタフェースを達成するための典型的な実装を１つだけ提供している。他の実装では類似の機能を達成するためのステップは、これより少ないか多くなる。
【００５２】
例示的システム環境
図１０は、リモートで生成されたグラフィカルウィンドウに適用されるグラフィカルウィンドウ修正モードを可能にするように構成されたシステム例またはコンピューティング環境例１０００を表す。システム１０００は第一のマシン１００１と第二のマシン１００２の形式における汎用コンピューティングシステムを含む。その場合、第一か第二のマシンのどちらかがユーザが操作するローカルマシンとして動作でき、他方のマシンがリモートもしくはサーバマシンとして動作できるように、第一と第二のマシンはリモートターミナルセッションを支援するように構成されている。
【００５３】
第一のマシン１００１のコンポーネントは、これに限られたものでないが、１つまたは複数のプロセッサ１００４（例えば、任意のマイクロプロセッサ、コントローラ等）、システムメモリ１００６、様々なシステムコンポーネントを繋ぐシステムバス１００８を含む。１つまたは複数のプロセッサ１００４は様々なコンピュータ実行可能命令を処理して、第一のマシン１００１の操作を制御し、他の電子デバイスやコンピュータデバイスとの通信を行う。システムバス１００８は数種類のバス構造の幾つかを表し、メモリバスあるいはメモリコントローラ、周辺バス、加速グラフィックスポート、プロセッサあるいは任意の様々なバスアーキテクチャを使用したプロセッサまたはローカルバスを含む。
【００５４】
システム１０００は、様々なコンピュータ可読媒体からなるが、第一のマシン１００１がアクセス可能であり、揮発性および不揮発性メディア、リムーバブルおよび非リムーバブルメディアの両方を含む任意のメディアであることができる。システムメモリ１００６は、ランダムアクセスメモリ（ＲＡＭ）１０１０のような揮発性メモリ形式、および／またはリードオンリメモリ（ＲＯＭ）１０１２のような不揮発性メモリ形式のコンピュータ可読媒体を含む。基本入出力システム（ＢＩＯＳ）１０１４はＲＯＭ１０１２に格納されており、基本的なルーチンを保持しスタートアップの際に第一のマシン１００１内部のコンポーネント間で情報転送を容易にする。ＲＡＭ１０１０は典型的に、データおよび／またはすぐにアクセスできるプログラムモジュール、および／または１つまたは複数のプロセッサ１００４により現在操作されているプログラムモジュールを含んでいる。
【００５５】
第一のマシンは、他のリムーバブル／非リムーバブル、揮発性／非揮発性のコンピュータ記憶媒体を含むことができる。例として、ハードディスクドライブ１０１６は非リムーバブル、不揮発性磁気メディア（図示せず）から読出し、書込みを行ない、磁気ディスクドライブ１０１８は、リムーバブル、不揮発性磁気ディスク１０２０（例えば、「フロッピー（登録商標）ディスク」）から読出し、書込みを行い、光ディスクドライブ１０２２は、ＣＤ−ＲＯＭ，デジタル多用途ディスク（ＤＶＤ）、または任意の他種光学メディアのようなリムーバブルで不揮発性の光ディスク１０２４から読出し、書込みを行う。この例では、ハードディスクドライブ１０１６、磁気ディスクドライブ１０１８、光ディスクドライブ１０２２はそれぞれ１つまたは複数のデータメディアインタフェース１０２６によりシステムバス１００８に接続されている。ディスクドライブと関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、第一のマシン１００１に対するその他データの不揮発性ストレージを提供する。
【００５６】
プログラムモジュールはハードディスク１０１６、磁気ディスク１０２０、光ディスク１０２４、ＲＯＭ１０１２、および／またはＲＡＭ１０１０上に格納することができ、例えば、オペレーティングシステム１０２６、１つまたは複数のアプリケーションプログラム１０２８、他のプログラムモジュール１０３０、プログラムデータ１０３２を含んでいる。そのようなオペレーティングシステム１０２６、アプリケーションプログラム１０２８、他のプログラムモジュール１０３０、プログラムデータ１０３２（あるいはその組合せの幾つか）の各々は、ここで説明したシステムや方法の態様を含むことができる。
【００５７】
ユーザは、キーボード１０３４やポインティングデバイス１０３６（例えば、「マウス」）のような任意の様々な入力装置を介して第一のマシン１００１とインタフェースをとることができる。他の入力装置１０３８（特に図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、コントローラ、パラボラアンテナ、シリアルポート、スキャナ等を含むことができる。これらと他の入力装置は、システムバス１００８に結合されている入出力インタフェース１０４０を介してプロセッサ１００４に接続されているが、パラレルポート、ゲームポート、および／またはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースやバス構造により接続することもできる。
【００５８】
モニタ１０４２または他の種類の表示装置はビデオアダプタ１０４４のようなインタフェースを介してシステムバス１００８に接続することができる。モニタ１０４２に加えて、他の出力周辺装置も、入出力インタフェース１０４０を介して第一のマシン１００１に接続することができるスピーカ（図示せず）やプリンタ１０４６のようなコンポーネントを含むことができる。
【００５９】
第一のマシン１００１は、第二のマシン１００２のような１つまたは複数のリモートコンピュータへの論理的接続を使用したネットワーク環境で操作できる。例として、第二のマシン１００２は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピア装置、または他の共通ネットワークノード等であってもよい。第二のマシン１００２は、第一のマシン１００１に関してここで述べた多くの、あるいは全ての要素や特徴を含むことができるポータブルコンピュータとして説明されている。
【００６０】
第一のマシン１００１と第二のマシン１００２間の論理的接続は、ローカルエリアネットワーク（ＬＡＮ）１０５０と広域ネットワーク（ＷＡＮ）１０５２として示す。そのようなネットワーク環境は、オフィスや企業規模のコンピュータネットワーク、イントラネット、インターネットではありふれたものである。ＬＡＮネットワーク環境で実装される場合、第一のマシン１００１はネットワークインタフェースあるいはアダプタ１０５４を介してローカルエリアネットワーク１０５０に接続される。ＷＡＮネットワーク環境で実装される場合には、第一のマシン１００１は典型的にモデム１０５６か広域ネットワーク１０５２上で通信を確立するための他の方法を含む。第一のマシン１００１の内部あるいは外部にあるモデム１０５６は、入出力インタフェース１０４０あるいは他の適切なメカニズムを介してシステムバス１００８に接続することができる。説明したネットワーク接続は例であり、第一と第二のマシン１００１と１００２間の通信リンク（複数）を確立する他の方法を利用することもできる。
【００６１】
システム１０００で説明したようなネットワーク環境では、第一のマシン１００１あるいはその部分に関して示したプログラムモジュールは、リモートのメモリストレージデバイスに格納される。例として、リモートアプリケーションプログラム１０５８は、第二のマシン１００２のメモリ装置とともに保持される。説明のために、アプリケーションプログラムとオペレーティングシステム１０２６のような他の実行可能なプログラムは、ここでは離散的なブロックとして描かれている。しかしながら、そのようなプログラムとコンポーネントは様々な時点で第一のマシン１００１の異なったストレージコンポーネントに存在して第一のマシンのプロセッサ１００４により実行されることが認識されている。
【００６２】
例示的プロセス
図１１は、リモートで生成されたグラフィカルウィンドウに適用されるグラフィカルウィンドウ修正コマンドを可能にするための典型的なプロセス１１００を示す。プロセスの記述順序は制限的に解釈されることを意図するものではなく、記述されたプロセスブロックの任意の番号を、任意の順番で組み合わせてプロセスを実施することができる。更に、このプロセスは、ハードウェア、ソフトウェア、ファームウエア、あるいはその任意の組み合わせにおいて実装できる。
【００６３】
ブロック１１０２にて、プロセスは、リモートターミナルセッションにおいてリモートで生成されたアプリケーショングラフィカルウィンドウを修正するユーザコマンドを検出する。リモートターミナルセッションはリモートアプリケーション能力を提供することができる。リモートターミナルセッションは、第一のまたはサーバマシンから第二のまたはクライアントマシンへアプリケーショングラフィカルウィンドウをリモートするのに役立つ。プロキシウィンドウがクライアントマシン上で生成され、サーバアプリケーショングラフィカルウィンドウからの表示データがこのプロキシウィンドウ上に描写されて、リモートで生成されたアプリケーショングラフィカルウィンドウを作り出す。ユーザはグラフィカルウィンドウを修正することに関連したコマンドを発行するために、様々な方法を利用することができる。例えば、当業者には認識されるように、ユーザはシステムメニューを使用してウィンドウ特有のシステムコマンドを送信できる。別の例では、ユーザがグラフィカルウィンドウのキャプションまたは境界線でマウスボタンを押してグラフィカルウィンドウをドラッグできる。ユーザ入力の様々な他の例としては、音声認識コマンド、カメラで検出されたユーザの動き等を含むことができる。
【００６４】
実装によっては、プロキシグラフィカルウィンドウに関連するユーザ修正コマンドはクライアントマシンで検出される。別の実装では、プロキシグラフィカルウィンドウに関連したユーザ入力またはコマンドはリモートターミナルセッションの一部として、自動的にサーバマシンに送信される。そのような場合、ウィンドウ修正に関するユーザコマンドの検出はサーバマシンで行うことができる。しかしながら、リモートで生成されたアプリケーショングラフィカルウィンドウに関するユーザウィンドウ修正コマンドを検出するように構成されたシステム例の１つが、図７に関連して上述されている。
【００６５】
ブロック１１０４にて、プロセスはリモートで生成されたアプリケーショングラフィカルウィンドウが表示されているローカルマシン上と、リモートで生成されたアプリケーショングラフィカルウィンドウを生成したリモートマシン上とのどちらでユーザコマンドを開始するか判定する。修正はすべてサーバで開始できるという実装もある。すべての修正がクライアントで開始できるという実装もある。更に、ユーザ修正コマンドがクライアントで開始されているのに、サーバで幾つかのユーザ修正コマンドを開始するという実装もある。ブロック１１０６〜１１１６は、第一のシナリオではユーザコマンドがサーバで開始され、第二のシナリオではユーザコマンドはクライアントで開始されるというように、そのような判定がどのようになされ、クライアント修正コマンドがどのように遂行されるのかの典型例一つだけを示す。
【００６６】
ブロック１１０６〜１１１６に関して記述されているプロセスは、フルイメージまたはアウトラインといったクライアント修正モードに対するユーザ選択モードに基づいてプロセスを調整する。そのような実装は、環境によっては他のプロセスと比較した場合、もっと美的に心地よいユーザインタフェースを提供できる場合もある。上述のように他のプロセス例では、全ての修正モードを利用できるモード間で区別するよりむしろ同じように扱い、それに応じて反応を調整している。
【００６７】
この特定の実装の場合、ブロック１１０６にてプロセスはクライアントマシンがアウトラインモードにあるかどうか確証する。例によっては、ユーザはそれ以前にグラフィカルウィンドウの移動／サイズ変更モードを選択しており、そのようなユーザ選択をしていないとクライアントマシンは特定のモードをデフォルトすることができる。どちらの場合でも、グラフィカルウィンドウの移動／サイズ変更モードはクライアントマシンからサーバマシンに分配される。例えば、クライアントマシンはそのグラフィカルウィンドウ移動／サイズ変更モードについて自動的に報告できる。他の構成では、サーバマシンはクライアントマシンにウィンドウの移動／サイズ変更モードについて問い合わせることができる。クライアントマシンがアウトラインモードの場合、プロセスはブロック１１０８に進み、そうでなければブロック１１１０に進む。
【００６８】
ブロック１１０８では、プロセスはユーザの移動／サイズ変更コマンドに関するデータをクライアントマシンへ伝達する。そしてプロセスはブロック１１１２に進む。
【００６９】
ブロック１１１０にて、プロセスはサーバマシン上でユーザの移動／サイズ変更コマンドを開始する。例えば、サーバアプリケーショングラフィカルウィンドウは更新されてユーザコマンドを反映できる。クライアントプロキシグラフィカルウィンドウを更新するための伝達は、クライアント側を更新するのに利用され、更新されたサーバアプリケーショングラフィカルウィンドウはリモートされ更新されたプロキシグラフィカルウィンドウの上に描かれる。
【００７０】
ブロック１１１２にて、プロセスはクライアントマシンのプロキシグラフィカルウィンドウ上でグラフィカルウィンドウの移動／サイズ変更を開始する。１つの実装では、クライアントはサーバマシンから移動／サイズ変更開始情報を受信して、リモートアプリケーションのプロキシグラフィカルウィンドウ上で対応する移動／サイズ変更を開始する。グラフィカルウィンドウの移動／サイズ変更がどのように開始されるかは、どのようにユーザが発行した移動／サイズ変更コマンドが最初に開始されたかに依存する。例えば、ユーザがシステムメニューを利用して移動／サイズ変更を開始する場合、システムコマンドメッセージは適当なシステムコマンドでプロキシグラフィカルウィンドウに貼り付けることができる。マウスで開始された移動／サイズ変更については、クライアントはプロキシグラフィカルウィンドウ上で対応する動作を行う。
【００７１】
ブロック１１１４にて、プロセスはクライアント側のプロキシグラフィカルウィンドウ上でユーザコマンドが完了するのに反応して、サーバアプリケーショングラフィカルウィンドウを更新する。ブロック１１１６では、プロセスは更新したサーバアプリケーショングラフィカルウィンドウを送信してリモートで生成されたアプリケーションウィンドウとクライアントプロキシグラフィカルウィンドウを再同期する。
【００７２】
リモートで生成されたグラフィカルウィンドウに対し、グラフィカルウィンドウ修正コマンドを適用可能にすることに関する実装について、構造特徴および／または方法の具体的な文言で記述してきたが、添付した特許請求の範囲の対象は、記述した固有の特徴や方法に必ずしも限定されないということを理解されたい。むしろ、具体的な特徴や方法は上述および以下に記述するコンセプトの実装の例を提供するものである。
【図面の簡単な説明】
【００７３】
【図１】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするシステムの例である。
【図２】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするシステムの例である。
【図３】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするシステムの例である。
【図４】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするシステムの例である。
【図５】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするシステムの例である。
【図６】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするシステムの例である。
【図７】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするシステムの例である。
【図８】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするための、１つのシステム構成例のプロセス図である。
【図９】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするための、１つのシステム構成例のプロセス図である。
【図１０】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするための、ある環境下におけるシステム、装置、部品の例である。
【図１１】１つの実装に係る、リモートで生成されたグラフィカルウィンドウに対してグラフィカルウィンドウ修正コマンドを適用可能にするためのプロセス図である。
【図１】
2008544399.tif 000003
【図２】
2008544399.tif 000004
【図３】
2008544399.tif 000005
【図４】
2008544399.tif 000006
【図５】
2008544399.tif 000007
【図６】
2008544399.tif 000008
【図７】
2008544399.tif 000009
【図８】
2008544399.tif 000010
【図９】
2008544399.tif 000011
【図１０】
2008544399.tif 000012
【図１１】
2008544399.tif 000013
【国際調査報告】
2008544399.tif 000014
2008544399.tif 000015