(57)【要約】【課題】  実世界の動作に近い空間的連続性をもつユーザーインタフェースを有する画面共有システム、画面共有方法、画面共有プログラムを提供する。【解決手段】  他の情報処理装置に共有画面を提供するサーバー機能を有するサーバー情報処理装置と、該サーバー情報処理装置のクライアントとなるクライアント機能を有するクライアント情報処理装置とを含む画面共有システムであって、サーバー機能は、共有画面に用いられる仮想画面を生成する仮想画面生成手段と、仮想画面に表示される共有画面を取得する共有画面取得手段と、共有画面取得手段が取得した共有画面をクライアント情報処理装置に送信する共有画面送信手段とを有し、クライアント機能は、共有画面を受信する共有画面受信手段と、受信した共有画面を、共有画面を表示するための共有画面表示領域に表示する共有画面表示手段とを有する。【選択図】  図１３
2006172193.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置に共有画面を提供するサーバー機能を有するサーバー情報処理装置と、該サーバー情報処理装置のクライアントとなるクライアント機能を有するクライアント情報処理装置とを含む画面共有システムであって、
前記サーバー機能は、
前記共有画面に用いられる仮想画面を生成する仮想画面生成手段と、
前記仮想画面に表示される共有画面を取得する共有画面取得手段と、
を有し、
前記クライアント機能は、
前記共有画面を受信する共有画面受信手段と、
前記受信した共有画面を、共有画面を表示するための共有画面表示領域に表示する共有画面表示手段と
を有することを特徴とする画面共有システム。
【請求項２】
前記サーバー機能は、前記仮想画面に表示された共有画面の表示を解除する解除手段を有し、
前記解除手段により表示を解除すると、通常の画面に前記共有画面が表示されることを特徴とする請求項１に記載の画面共有システム。
【請求項３】
前記解除手段は、前記共有画面全体が前記仮想画面内に含まれたときに動作することを特徴とする請求項２に記載の画面共有システム。
【請求項４】
前記クライアント機能は、前記共有画面表示領域に表示された共有画面の表示を解除する解除手段を有し、
前記解除手段により表示を解除すると、通常の画面に前記共有画面が表示されることを特徴とする請求項１に記載の画面共有システム。
【請求項５】
前記解除手段は、前記共有画面全体が前記共有画面表示領域内に含まれたときに動作することを特徴とする請求項４に記載の画面共有システム。
【請求項６】
前記クライアント機能は、
前記共有画面表示領域に対する入力情報を取得する入力情報取得手段と、
前記サーバー情報処理装置に送信する入力情報送信手段をさらに有し、
前記サーバー機能は、
前記入力情報を受信する入力情報受信手段と、
入力情報を前記仮想画面に反映させるための入力情報発生手段と
を有することを特徴とする請求項１から５のいずれか１項に記載の画面共有システム。
【請求項７】
前記サーバー機能は、複数のクライアント情報処理装置と画面の共有が可能であることを特徴とする請求項１から６のいずれか１項に記載の画面共有システム。
【請求項８】
前記サーバー機能は、複数のクライアント情報処理装置のうちのいずれかと画面を共有するかを選択する選択手段を有することを特徴とする請求項７に記載の画面共有システム。
【請求項９】
前記クライアント情報処理装置は、複数のクライアント機能を起動することで、前記各クライアント機能により複数のサーバー情報処理装置と画面の共有が可能であることを特徴とする請求項１から８のいずれか１項に記載の画面共有システム。
【請求項１０】
前記サーバー機能またはクライアント機能は、ドラッグアンドドロップを検出するドラッグアンドドロップ検出手段を有することを特徴とする請求項１から９のいずれか１項に記載の画面共有システム。
【請求項１１】
前記クライアント情報処理装置が、２つ以上のサーバー情報処理装置と画面を共有し、
一のサーバー情報処理装置の共有画面に表示されたファイル識別子が、他のサーバー情報処理装置の共有画面にドラッグアンドドロップされたことを検出すると、前記ファイル識別子が示すファイルが、それらのサーバー情報処理装置同士で直接転送されることを特徴とする請求項１から９のいずれか１項に記載の画面共有システム。
【請求項１２】
複数の情報処理装置間で画面を共有する画面共有方法であって、
共有画面に用いられる仮想画面を生成する仮想画面生成段階と、
前記仮想画面に表示される共有画面を取得する共有画面取得段階と、
前記共有画面取得段階で取得した共有画面を他の情報処理装置に送信する共有画面送信段階と
を有することを特徴とする画面共有方法。
【請求項１３】
前記共有画面を受信する共有画面受信段階と、
前記受信した共有画面を表示する共有画面表示段階と
を有することを特徴とする請求項１２に記載の画面共有方法。
【請求項１４】
前記共有画面の移動またはサイズの変更を判断する共有画面移動変更判断段階と、
移動または変更と判断された場合、前記共有画面に関する情報を取得する共有画面情報取得段階と、
前記共有画面情報を送信する共有画面情報送信段階と
を有することを特徴とする請求項１２または１３に記載の画面共有方法。
【請求項１５】
前記共有画面情報を受信する共有画面情報受信段階と、
前記共有画面情報に基づき、表示する共有画面を同期させる共有画面同期段階と
を有することを特徴とする請求項１４に記載の画面共有方法。
【請求項１６】
前記共有画面全体が前記仮想画面に含まれたかどうか判断する完全共有判断段階と、
前記前記共有画面全体が前記仮想画面に含まれたと判断されると、前記共有画面を通常の画面に表示する通常画面表示段階と
を有することを特徴とする請求項１２から１５のいずれか１項に記載の画面共有方法。
【請求項１７】
請求項１２から１６のいずれか１項に記載の画面共有方法をコンピュータで実行するための画面共有プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の情報処理装置で画面を共有する画面共有システム、画面共有方法、画面共有プログラムに関する。
【背景技術】
【０００２】
近年、複数のユーザー間でＰＣ上のファイルを交換するだけではなく、会議の場等ではＰＣの画面を共有して、他人のＰＣの画面ながら議論を行うようになって来ている。
またネットワークの管理者は、管理している複数のＰＣにファイルをコピーしたり、遠隔操作でＰＣを操作する場面が増えてきている。また、個人でも複数のＰＣを同時に利用する場面も増えている。
【０００３】
そのため、他のＰＣ上にあるデータを現在使っているＰＣに持ってきて利用するという場面が増えてきている。他のＰＣ上にあるデータはネットワークを経由してファイルをコピーを行ったり、共有フォルダを作成して他のＰＣからもファイルにアクセス出来るようにすることにより取得することができる。また、他のＰＣをあたかもそのＰＣの前に座っているかのように遠隔操作できるソフトウェアも普及している。
【０００４】
このような複数のＰＣ間で、ファイルを共有したり、画面を共有する技術として以下のようなものがある。
（Ａ１）ＦＴＰ（Ｆｉｌｅ Ｔｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ）
（Ａ２）Ｗｉｎｄｏｗｓ（登録商標）のファイル共有
（Ａ３）ＳＰＡＮＷｏｒｋｓ（会議システム、http://www.spanworks.com/）
（Ａ４）Ｐｉｃｋ−ａｎｄ−Ｄｒｏｐ（株式会社ソニーコンピュータサイエンス研究所、暦本純一氏、http://www.csl.sony.co.jp/person/rekimoto/pickdrop/）
（Ａ５）特許文献１「ファイル転送方法、その装置及びファイル転送方法を記録した記録媒体」
また、画面共有の公知技術としては以下の技術がある。
（Ｂ１）Ｍｉｃｒｏｓｏｆｔ（登録商標）  ＮｅｔＭｅｅｔｉｎｇ
（Ｂ２）Ｍｉｃｒｏｓｏｆｔ（登録商標）  ＲｅｍｏｔｅＤｅｓｋｔｏｐ
（Ｂ３）ＶＮＣ（Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｃｏｍｐｕｔｉｎｇ）
（Ｂ４）リモコン倶楽部スクールエディション（教育システム）
（Ｂ５）非特許文献１（http://www.iplab.is.tsukuba.ac.jp/~miuramo/comdesk/）
（Ｂ６）特開平７−３３６６５９「通信装置」
【特許文献１】特開２０００−１４８７９１号公報
【特許文献２】特開平７−３３６６５９号公報
【非特許文献１】ｃｏｍＤｅｓｋ（Ｖｏｌ．  ４５  Ｎｏ．  １  情報処理学会論文誌Ｊａｎ．  ２００４、「Ｐ２Ｐ  技術を適用した画面転送・遠隔操作システムの開発」）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
まずＡ１は、ＧＵＩ操作でＦＴＰサーバーのディレクトリをブラウジングして、ファイル転送を行う機能を有するソフトも存在するが、目的のディレクトリに辿りつくまで時間が掛かることがある。
【０００６】
また、２つのＦＴＰサーバーに同時接続可能で、ＦＴＰサーバー間でファイル転送を仲介する機能を有するようなＦＴＰサーバー・ＦＴＰクライアントは存在しない。
一度、ＦＴＰクライアントでローカルにダウンロードして、そのファイルを他のＦＴＰサーバーにアップロードする必要がある。
【０００７】
次にＡ２は、１つのＰＣ（Ａ）に２つの他のＰＣ（Ｂ、Ｃ）の共有フォルダを開いて、ＰＣ（Ａ）上でＰＣ（Ｂ）の共有フォルダのファイルを、ＰＣ（Ｃ）の共有フォルダにドラッグ＆ドロップで転送することが可能である。但し、目的のファイル、及び転送先のディレクトリは、ＰＣ（Ａ）を操作して、共有フォルダを開いていく必要があり、２つのＰＣの所望の共有フォルダを開くまでに時間が掛かることがある。
【０００８】
Ａ３は、１つのサーバーに複数のクライアントが接続する電子会議システム用のソフトウェアである。サーバー・クライアント間はもちろん、サーバーを介することによってクライアント同士でのファイル転送機能を有している。
【０００９】
しかし、ファイル本体を一旦サーバーに送信し、サーバーは受信完了後に、指定された他のクライアントに転送する。そのため、ファイル転送の実効速度が遅くなる。単純に倍掛かることになる。
【００１０】
Ａ２のように、ＰＣ（Ａ）の操作者が、ＰＣ（Ｂ）のファイルをＰＣ（Ｃ）に転送するように指示する機能はＰＣ（Ａ）にはない。また、リモート操作する機能がないので、あくまでもクライアントＰＣを直接操作する必要がある。
【００１１】
Ａ４は、２つのＰＣ間のデータ転送を容易にするものである。ＰＣ（Ａ）に表示されているファイル等のオブジェクトを、装置毎に固有のＩＤの付加された特殊な入力装置で指示することにより、ＰＣ（Ａ）の識別子と、オブジェクトの識別子を取得する。
【００１２】
次に、特殊入力装置をＰＣ（Ｂ）で指示すると、ＰＣ（Ｂ）の識別子が取得され、これらの識別子を管理するサーバー（ペン・マネージャー）によって、ＰＣ（Ａ）に対して、取得したオブジェクトをＰＣ（Ｂ）に送信するよう指示が出される。このような方法でファイル転送を行っている。
【００１３】
但し、この動作を実現するには特殊なハードウェアが必要なこと、ペン・マネージャーというサーバーが別途必要となり、かつ識別子の管理を行う必要がでて来るのが問題となっている。また、送信出来るデータが、ファイルやＵＲＬの文字列等限られている。
２つのＰＣをあたかも連続した１つのＰＣであるかのように扱う手段がない。
【００１４】
Ａ５は、ＦＴＰを使いやすくするため、ＧＵＩによる画像データでブラウジングを可能にする。Ａ２の例でいう、ＰＣ（Ａ）を操作することによりＰＣ（Ｂ）からＰＣ（Ｃ）にファイルを転送することは出来ない。また、Ａ１と同様に、目的のファイル、送信先ディレクトリを探すのに時間が掛かる。
【００１５】
以上のように、従来の技術では、会議の場のコミュニケーションのように、お互いにファイルの受け渡しを行う相手が近くにいても、送信側、受信側が自分のＰＣを操作して、送信ファイル、受信フォルダを簡単に指示出来ないという問題がある。
【００１６】
また上述したように、画面共有ソフトでは代表的なものとして、Ｂ１、Ｂ２、Ｂ３がある。
【００１７】
Ｂ２はＧＵＩのドラッグ＆ドロップ操作によるファイル転送も可能である。Ｂ１、及びＢ３の派生ソフトウェアの幾つかでも、ファイル転送が可能であるが、Ａ２で説明したようなファイル転送は行うことが出来ない。
【００１８】
また、自分が見せたいアプリケーションの画面を見せる場合は、別途設定ダイアログを出して、ウィンドウを選択したりという手間が掛かる。
【００１９】
Ｂ５はＢ３にＢ２のようなＤ＆Ｄによるファイル転送機能を追加したものである。具体的にはＢ３のＶＮＣを利用した画面共有システムに、共有画面に対してファイルをドラッグ＆ドロップすると、ファイルのパスを取得して、ドロップ先のＰＣのある固定ディレクトリに同名のファイルをファイル転送する機能を付加している。
【００２０】
Ｂ４のような教育用ソフトや、あるいはＰＣ管理用ソフトでは、多数のＰＣの画面共有を行うもの、管理ＰＣから被管理ＰＣへファイルの一斉転送やファイルの一斉回収を行う機能を持つものも存在する。
【００２１】
しかし、被管理ＰＣのウィンドウ間でファイル転送するものはない。また、ファイルを転送するだけで、転送したファイルを所望のアプリケーションで直ぐに開くことが出来ないという問題がある。
【００２２】
Ｂ６は、共有画面にアイコンをドラッグ＆ドロップすることにより、ファイルを自動的に展開して、その内容を共有画面で開いているファイルに貼り付けることにより、わざわざファイルをローカルで開いて、表示内容を選択して、共有画面上のファイルに貼り付ける手間を省くという発明であるが、展開したデータが共有画面上のファイルに貼り付けられるアプリケーションは限定される。
【００２３】
また、ローカルで展開されて、内容を共有画面に貼り付けるのではなく、共有画面のどこにファイルをドロップしたかによって、ファイル転送を行ったり（例えば、デスクトップや、Ｅｘｐｌｏｒｅｒのようなファイラー上にドロップした場合）、画面共有を行っているＰＣ上でアプリケーションで開いたり（例えば、アプリケーション実行プログラムもしくはそのショートカットのアイコン、もしくはアプリケーションのウィンドウ上にドロップした場合）等、実際のＧＵＩ操作と同等の操作を行う機能がない。
【００２４】
上述した現状の画面共有ソフトウェアの問題点を分析すると以下のようになる。画面共有を行うといっても、各ＰＣはそれぞれ孤立しており、非連続的に画面の共有がなされる。つまり、日常の実世界のように、相手に資料を物理的に近づけて見せる、あるいは一部分のみを見せるようなことが出来ない。あるいは、その資料が相手が見たいものであった場合、相手側からもっと近づけて全体を見るというような動作を行うことが出来ない。
【００２５】
ファイル転送を例に取ると、相手が差し出してきた箱に、書類を入れて返すような実世界での簡単な作業が、ＰＣの世界では、ＦＴＰで接続して、送信したいファイルを自分のＰＣのディレクトリをブラウズして探して、次にＦＴＰサーバー上の送信先のディレクトリを探して、ファイルの転送を指示するという面倒な方法になる。
【００２６】
あるいは、Ｂ２のようなドラッグ＆ドロップでファイル転送が可能な画面共有ソフトを用いても、ファイルやフォルダを探している余計な動作や、見られたくないアプリケーションのウィンドウを見られてしまったり、上述のように、ある１つのアプリケーションウィンドウのみを共有したい場合も、ＧＵＩが優れていていないため、設定に時間が掛かってしまうなどの問題がある。
【００２７】
それは、ＰＣ上では実世界と違って、各ＰＣの表示装置毎に空間が分断されているためであり、画面共有においても、実世界の動作に近い空間的連続性が実現されていない。つまり、自分のＰＣと共有したいＰＣとをあたかも１つのＰＣの画面のようにつながって見せるような仕組みがないため、ユーザーインタフェースとしては不自然なものになっている。
【００２８】
本発明は、このような問題点に鑑み、実世界の動作に近い空間的連続性をもつユーザーインタフェースを有する画面共有システム、画面共有方法、画面共有プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２９】
上記課題を解決するために、本発明は、他の情報処理装置に共有画面を提供するサーバー機能を有するサーバー情報処理装置と、該サーバー情報処理装置のクライアントとなるクライアント機能を有するクライアント情報処理装置とを含む画面共有システムであって、前記サーバー機能は、前記共有画面に用いられる仮想画面を生成する仮想画面生成手段と、前記仮想画面に表示される共有画面を取得する共有画面取得手段と、前記共有画面取得手段が取得した共有画面を前記クライアント情報処理装置に送信する共有画面送信手段とを有し、前記クライアント機能は、前記共有画面を受信する共有画面受信手段と、前記受信した共有画面を、共有画面を表示するための共有画面表示領域に表示する共有画面表示手段とを有することを特徴とする。
【００３０】
また、上記課題を解決するために、本発明は、前記サーバー機能は、前記仮想画面に表示された共有画面の表示を解除する解除手段を有し、前記解除手段により表示を解除すると、通常の画面に前記共有画面が表示されることを特徴とする。
【００３１】
また、上記課題を解決するために、本発明は、前記解除手段は、前記共有画面全体が前記仮想画面内に含まれたときに動作することを特徴とする。
【００３２】
また、上記課題を解決するために、本発明は、前記クライアント機能は、前記共有画面表示領域に表示された共有画面の表示を解除する解除手段を有し、前記解除手段により表示を解除すると、通常の画面に前記共有画面が表示されることを特徴とする。
【００３３】
また、上記課題を解決するために、本発明は、前記解除手段は、前記共有画面全体が前記共有画面表示領域内に含まれたときに動作することを特徴とする。
【００３４】
また、上記課題を解決するために、本発明は、前記クライアント機能は、前記共有画面表示領域に対する入力情報を取得する入力情報取得手段と、前記サーバー情報処理装置に送信する入力情報送信手段をさらに有し、前記サーバー機能は、前記入力情報を受信する入力情報受信手段と、入力情報を前記仮想画面に反映させるための入力情報発生手段とを有することを特徴とする。
【００３５】
また、上記課題を解決するために、本発明は、前記サーバー機能は、複数のクライアント情報処理装置と画面の共有が可能であることを特徴とする。
【００３６】
また、上記課題を解決するために、本発明は、前記サーバー機能は、複数のクライアント情報処理装置のうちのいずれかと画面を共有するかを選択する選択手段を有することを特徴とする。
【００３７】
また、上記課題を解決するために、本発明は、前記クライアント情報処理装置は、複数のクライアント機能を起動することで、前記各クライアント機能により複数のサーバー情報処理装置と画面の共有が可能であることを特徴とする。
【００３８】
また、上記課題を解決するために、本発明は、前記サーバー機能またはクライアント機能は、ドラッグアンドドロップを検出するドラッグアンドドロップ検出手段を有することを特徴とする。
【００３９】
また、上記課題を解決するために、本発明は、前記クライアント情報処理装置が、２つ以上のサーバー情報処理装置と画面を共有し、一のサーバー情報処理装置の共有画面に表示されたファイル識別子が、他のサーバー情報処理装置の共有画面にドラッグアンドドロップされたことを検出すると、前記ファイル識別子が示すファイルが、それらのサーバー情報処理装置同士で直接転送されることを特徴とする。
【００４０】
また、上記課題を解決するために、本発明は、複数の情報処理装置間で画面を共有する画面共有方法であって、共有画面に用いられる仮想画面を生成する仮想画面生成段階と、前記仮想画面に表示される共有画面を取得する共有画面取得段階と、前記共有画面取得段階で取得した共有画面を他の情報処理装置に送信する共有画面送信段階とを有することを特徴とする。
【００４１】
また、上記課題を解決するために、本発明は、前記共有画面を受信する共有画面受信段階と、前記受信した共有画面を表示する共有画面表示段階とを有することを特徴とする。
【００４２】
また、上記課題を解決するために、本発明は、前記共有画面の移動またはサイズの変更を判断する共有画面移動変更判断段階と、移動または変更と判断された場合、前記共有画面に関する情報を取得する共有画面情報取得段階と、前記共有画面情報を送信する共有画面情報送信段階とを有することを特徴とする。
【００４３】
また、上記課題を解決するために、本発明は、前記共有画面情報を受信する共有画面情報受信段階と、前記共有画面情報に基づき、表示する共有画面を同期させる共有画面同期段階とを有することを特徴とする。
【００４４】
また、上記課題を解決するために、本発明は、前記共有画面全体が前記仮想画面に含まれたかどうか判断する完全共有判断段階と、前記前記共有画面全体が前記仮想画面に含まれたと判断されると、前記共有画面を通常の画面に表示する通常画面表示段階とを有することを特徴とする。
【発明の効果】
【００４５】
以上説明したように、本発明は、実世界の動作に近い空間的連続性をもつユーザーインタフェースを有する画面共有システムを提供することができる。
【発明を実施するための最良の形態】
【００４６】
以下、図面を参照し、本発明の実施形態について説明する。本実施の形態では、既に説明した符号についての説明は省略する。また、以下の実施例で動作するプログラムは、マイクロソフト（登録商標）が提供するライブラリを用いたものを前提としているが、他のＯＳでも作成並びに実行が可能である。
【００４７】
まず最初に、情報処理装置のハードウェア構成について、図１を用いて説明する。
【００４８】
図１に示されるように、情報処理装置のハードウェア構成は、それぞれバスＢで相互に接続されている入力装置２２と，表示装置２３と，ドライブ装置２４と，記録媒体２５と，補助記憶装置２６と，メモリ装置２７と，演算処理装置２０と，インタフェース装置２１とを含む。
【００４９】
入力装置２２は、キーボード及びマウスなどで構成され、情報処理装置に各種操作信号を入力するために用いられる。表示装置２３は、情報処理装置を操作するのに必要な各種ウィンドウやデータ等を表示する。インタフェース装置２１は、情報処理装置をネットワークに接続する為のインタフェースや他の機器を接続するためのインタフェースであり、例えばＮＩＣ（Network Interface Card）やモデム、ＵＳＢ（Universal Serial Bus）等で構成される。
【００５０】
そして、上記情報処理装置を動作させるためのプログラムは、ＣＤ−ＲＯＭ等の記録媒体２５によって提供されるか、ネットワークを通じてダウンロードされる。また、記録媒体２５は、ドライブ装置２４にセットされ、データやプログラムが記録媒体２５からドライブ装置２４を介して補助記憶装置２６にインストールされる。
【００５１】
補助記憶装置２６は、データやプログラムを格納されると共に、必要なファイル等を格納する。メモリ装置２７は、情報処理装置の起動時に補助記憶装置２６からプログラムを読み出して格納する。演算処理装置２０は、メモリ装置２７に読み出され格納されたプログラムに従って処理を実行する。
【００５２】
次に、図２を用いてファイル転送機能を持つ画面共有システムの基本的なシステム構成を説明する。図２には、情報処理装置Ａ６０１と、情報処理装置Ｂ６０２と、それらを接続するネットワーク１００とが示されている。情報処理装置Ｂ６０２は、画面共有サーバーであり、情報処理装置Ａ６０１は、画面共有クライアントである。
【００５３】
画面共有サーバーが、画面を提供する側、つまり画面共有クライアントから操作される側であり、画面共有クライアントが、画面共有サーバーの画面を表示しながら遠隔操作する側である。
【００５４】
また、画面共有サーバーと画面共有クライアントは、図に示されるように、それぞれ別の情報処理装置上で起動するプログラムである。
【００５５】
次に、各情報処理装置のソフトウェア構成について説明する。まず情報処理装置Ｂ６０２から説明する。情報処理装置Ｂ６０２は、画面共有サーバー１０２と、ネットワークインタフェース１０９とで構成される。ネットワークインタフェース１０９は、図１で説明したインタフェース装置のドライバなどである。
【００５６】
画面共有サーバー１０２について説明する。画面共有サーバー１０２は、画面データ取得部１０３と、画面データ送信部１０４と、入力イベント発生部１０５と、入力イベント受信部１０６と、ファイル送受信部１０７と、プログラムメイン部１０８とで構成される。
【００５７】
プログラムメイン部１０８は、画面共有サーバー１０２のメインプログラムである。画面データ取得部１０３は、情報処理装置Ｂ６０２が表示している画面の一部または全体の画面データを取得する。その画面データは必要に応じて圧縮されたのち、画面データ送信部１０４により送信され、情報処理装置Ａ６０１の画面に表示される。
【００５８】
入力イベント受信部１０６は、情報処理装置Ａ６０１で送信したイベントを受信する。入力イベント発生部１０５は、入力イベント受信部１０６が受信したイベントを、情報処理装置Ｂ６０２内で発生させる。ファイル受送信部１０７は、ＦＴＰサーバー機能を有するＧＵＩファイル転送機能であり、ファイルの送受信を行うものである。
【００５９】
次に、情報処理装置Ａ６０１について説明する。情報処理装置Ａ６０１は、画面共有クライアント１１８と、ネットワークインタフェース１１１とで構成される。画面共有クライアント１１８は、画面データ受信部１１３と、画面データ表示部１１４と、入力イベント送信部１１５と、入力イベント取得部１１６と、ファイル受送信部１１７とで構成される。
【００６０】
画面データ受信部１１３は、情報処理装置Ｂ６０２からの画面データを受信する。画面データ表示部１１４は、受信した画面データを情報処理装置Ｂ６０２の画面上に表示する。入力イベント取得部１１６は、情報処理装置Ａ６０１で発生したイベントを取得する。入力イベント送信部１１５は、入力イベント取得部１１６で取得したイベントを情報処理装置Ｂ６０２に送信する。ファイル受送信部１０７は、ＦＴＰクライアント機能を有するＧＵＩファイル転送機能であり、ファイルの送受信を行うものである。
【００６１】
上述した構成により、画面共有クライアントの起動している情報処理装置Ａ６０１からから画面共有サーバーの起動している情報処理装置Ｂ６０２を操作することが可能となる。
【００６２】
以上が一般的な画面共有システムの基本的な構成である。次に、図３を用いて上記基本的構成にドラッグ＆ドロップ操作を可能とする機能を加えた画面共有システムのソフトウェア構成を説明し、その動作例を、図４を用いて説明する。
【００６３】
なお、ドラッグ＆ドロップとは、画面上でマウスポインタがウィンドウの枠やファイルのアイコン（ファイル識別子）などに重なった状態でマウスのボタンを押し、そのままの状態でマウスを移動(ドラッグ)させ、別の場所でマウスのボタンを離す(ドロップ)ことをいう。
【００６４】
図３は、図２の構成にＤ＆Ｄ検出部を加えたものである。図に示されるように、情報処理装置Ａ６０１、情報処理装置Ｂ６０２のそれぞれに、Ｄ＆Ｄ検出部１２１、１２０が加えられている。
【００６５】
Ｄ＆Ｄ検出部１２１、１２０は、共有画面から、もしくは共有画面へのファイルのドラッグ＆ドロップの処理を検出する機能である。
【００６６】
このＤ＆Ｄ検出部により、図４に示す動作をユーザーが行うことが可能となる。図４には、情報処理装置Ａ６０１の画面５００と、情報処理装置Ａ６０１のファイラー５０１と、情報処理装置Ｂ６０２の画面５０４と、情報処理装置Ｂ６０２のファイラー５０２と、ファイル５０３とが示されている。
【００６７】
ファイル５０３は、情報処理装置Ｂ６０２にあり、そのファイル５０３を、ファイラー５０２からファイラー５０１へドラッグ＆ドロップすることで、情報処理装置Ｂ６０２のファイルを情報処理装置Ａ６０１へ転送することができる。
【００６８】
具体的には、ユーザーが情報処理装置Ｂ６０２のファイルを選択し、マウスボタンを押しながら、ファイルを選択することでファイルをドラッグする。すると、情報処理装置Ｂ６０２の画面共有サーバーのＤ＆Ｄ検出部では、ファイルのドラッグを検出する。
【００６９】
ファイルをドラッグした状態で、マウスを画面共有クライアントの外に移動すると、情報処理装置Ｂ６０２のＤ＆Ｄ検出部はファイルをドラッグしたマウスが、画面共有クライアントの画面外に出たことを検出し、ドラッグされているファイルのパスを取得し、メモリに一時記憶する。
【００７０】
次に、マウスを情報処理装置上にドロップする。すると、画面共有サーバーのＤ＆Ｄ検出部はファイルの転送宛先を取得する。
【００７１】
この処理を、図５のフローチャートを用いて説明する。ステップＳ１０１は、ＯＳによるドロップ監視処理である。ステップＳ１０２でファイルがドロップされたかどうかが判断される。
【００７２】
ファイルがドロップされたと判断されると、ステップＳ１０３で、そのドロップ位置にあり、Ｚオーダーが最も上位にあるものが検出される。
【００７３】
ステップＳ１０４では、最も上位のものがウィンドウであるかどうか判断される。ウィンドウがない若しくは、最も上位のものがアプリケーションの場合、ステップＳ１０６で、デスクトップのディレクトリパスが取得される。
【００７４】
最も上位のものがファイラーの場合、ステップＳ１０５で、そのディレクトリパスが取得される。ステップＳ１０７で、取得されたパスは、送信先として一時記憶される。
【００７５】
このようにして、ディレクトリパスを取得した後、情報処理装置Ａ６０１は情報処理装置Ｂ６０２にファイルの転送を要求し、取得したディレクトリパスを通知する。情報処理装置Ｂ６０２は、この要求を受信すると、メモリに一時記憶したファイルパスで指定されるファイルを、情報処理装置Ａ６０１の指定されたディレクトリパスに対してファイル転送を開始する。
【００７６】
上記処理を、図６に示される情報処理装置Ａ６０１、Ｂ間のシーケンス図を用いてさらに説明する。ステップＳ２０１で情報処理装置でのファイルドラッグがマウスイベントして情報処理装置Ｂ６０２に通知される。
【００７７】
そのマウスイベントから、情報処理装置Ｂ６０２はドラッグを検出する。情報処理装置Ａ６０１で共有画面外に移動したことがマウスイベントとして情報処理装置Ｂ６０２に通知される。これにより、情報処理装置Ｂ６０２は、ドラッグ共有画面外にマウスが移動したことを検出する。そして、情報処理装置Ｂ６０２は、ファイルパスを取得する。
【００７８】
情報処理装置Ａ６０１でマウスがドロップされ、ディレクトリパスが取得される。そして、情報処理装置Ａ６０１は、ステップＳ２０３で、情報処理装置Ｂ６０２に送信先が指定されたファイル転送要求を行う。情報処理装置Ｂ６０２は、ステップＳ２０４で、ファイルの転送を開始する。
【００７９】
ファイルをドラッグ＆ドロップで転送する他の例を、図７を用いて説明する。図７には、情報処理装置Ａ６０１のファイル５０５を情報処理装置Ｂ６０２にドラッグ＆ドロップする例が示されている。
【００８０】
ユーザーは、情報処理装置Ａ６０１を操作して、送信したいファイル５０５をマウス操作で選択し、ドラッグする。マウスが画面共有クライアントの上に来ると、画面共有クライアントのＤ＆Ｄ検出部は、ファイルがドラッグされたことを検出し、ドラッグされているファイルのファイルパスを取得し、メモリに一時記憶する。
【００８１】
次に、マウスを共有画面内でドロップすると、情報処理装置Ｂ６０２の画面共有サーバーのＤ＆Ｄ検出部は、マウスのドロップを検出し、マウスをドロップした位置を調べ、その位置にファイラーが表示されている場合、そのディレクトリパスを取得する。
【００８２】
デスクトップやファイラー以外のアプリケーションウィンドウにドロップした場合、送信先をデスクトップとして、そのディレクトリパスを取得する。
【００８３】
ディレクトリパス取得後、情報処理装置Ｂ６０２にファイルの転送を要求し、取得したディレクトリパスを通知する。情報処理装置Ｂ６０２は、この要求を受信すると、メモリに一時記憶したファイルパスで指定されるファイルを、情報処理装置Ａ６０１の指定されたディレクトリパスに対してファイル転送を開始する。
【００８４】
このときの処理を、図８のシーケンス図を用いて説明する。情報処理装置Ａ６０１でのファイルドラッグが検出される。そして、共有画面内移動が、マウスイベントとしてステップＳ３０１で情報処理装置Ｂ６０２に通知される。
【００８５】
情報処理装置Ａ６０１で、ドラッグ共有画面内移動が検出される。情報処理装置Ａ６０１は、ファイルパスを取得する。そして、マウスドロップが検出されると、ステップＳ３０２で、情報処理装置Ｂ６０２にマウスイベントとして通知される。この通知により、情報処理装置Ｂ６０２はドロップを検出し、ディレクトリパスを取得し、ステップＳ３０３で送信先が指定されたファイル転送要求を行う。情報処理装置Ａ６０１は、ステップＳ３０４で、ファイルの転送を開始する。
【実施例１】
【００８６】
次に、図９を用いて、３台の情報処理装置の場合について説明する。図９には、新たに情報処理装置Ｃ６０３が追加されている。この情報処理装置Ｃ６０３は、図に示されるように、情報処理装置Ｂ６０２と同様の原理で動作する画面共有サーバー１６２が起動している。ネットワークＩ／Ｆ１６３も同様の動作を行う。
【００８７】
また、情報処理装置Ａ６０１には、２つの画面共有クライアント１１８、１５２が起動している。画面共有クライアント１５２には、画面共有クライアント１１８と同様のモジュール群１５１を有する。
【００８８】
さらに、これら画面共有クライアント１１８、１５２には、新たにクライアント間通信部１５０が設けられる。このクライアント間通信部は、複数の画面共有クライアント間でデータのやり取りを行う機能を有する。
【００８９】
なお、画面共有クライアント１１８は、情報処理装置Ｂ６０２に接続され、画面共有クライアント１５２は、情報処理装置Ｃ６０３に接続されている。及びＣの画面共有サーバーに接続しているとする。即ち、情報処理装置Ａ６０１には、情報処理装置Ｂ６０２と情報処理装置Ｃ６０３の共有画面が表示されている。
【００９０】
このようにすることで、図１０に示される動作が可能となる。図１０には、既に説明した情報処理装置Ｂ６０２の画面と、情報処理装置Ｃ６０３の画面５２０と、ファイラー５２１とが示されている。
【００９１】
ユーザーは、情報処理装置Ｂ６０２のファイラー５０２に表示されているファイル５０３を、ファイラー５２１にドラッグ＆ドロップすることで、ファイルを転送することができる。
【００９２】
このときの処理を、図１１のシーケンス図を用いて説明する。図１１に示されるシーケンス図は、情報処理装置Ａ６０１、Ｂ６０２、Ｃ６０３間の処理を示すものである。
【００９３】
ユーザーが情報処理装置Ａ６０１において、情報処理装置Ｂ６０２の共有画面を表示している画面共有クライアント１のウィンドウ上にマウスを移動し、情報処理装置Ｂ６０２のファイルを選択し、ドラッグする。
【００９４】
このドラッグは、ステップＳ４０１で、マウスイベントとして情報処理装置Ｂ６０２に通知される。これにより、情報処理装置Ｂ６０２はファイルのドラッグを検出する。ユーザーが、ファイルをドラッグしたままマウスを画面共有クライアント１１８の外に移動させると、ステップＳ４０２で、このことがマウスイベントとして通知される。これにより、情報処理装置Ｂ６０２はファイルをドラッグしたマウスが画面共有クライアント１１８の外に移動したことを検出し、そのファイルのファイルパスを取得する。
【００９５】
次に、情報処理装置Ａ６０１のマウスを、ファイルをドラッグしたままの状態で、ユーザーは情報処理装置Ｃ６０３の共有画面を表示している画面共有クライアント１５２のウィンドウ上にマウスを移動させる。このことは、ステップＳ４０３で、画面共有クライアント１５２に通知され、クライアント１５２のウィンドウが、アクティブウィンドウとなり、マウスイベントを受け付けるようになる。
【００９６】
これにより、ステップＳ４０４に示されるように、マウスイベントが情報処理装置Ｃ６０３上で動作する画面共有サーバー２に送信されるようになる。それとともに、ステップＳ４０５で、画面共有クライアント１１８から画面共有クライアント１５２に対し、情報処理装置Ａ６０１上のファイルをドラッグした状態であることが通知される。
【００９７】
画面共有クライアント１５２は、ドラッグしながらの共有画面内の移動を検出する。そのことがステップＳ４０６で、画面共有サーバー１６２にマウスイベントとして送信される。更にユーザーがマウスを操作して、画面共有クライアント１５２上でマウスボタンを放して、ファイルをドロップすると、ステップＳ４０７で、マウスイベントが画面共有サーバー２へ送信される。
【００９８】
画面共有サーバー１６２は、送信先ディレクトリパスを取得する。そして、ステップＳ４０８で、画面共有サーバー１６２は接続している画面共有クライアント１５２にそのディレクトリパスを送信する。画面共有クライアント１５２は、情報処理装置Ａ６０１上にローカルにあるファイルでなく、画面共有サーバー１のファイルをドラッグ＆ドロップしていることを、前述の（画面共有クライアント２の画面内にマウスを移動した時の）通知により、設定されているので、ステップＳ４０９で、画面共有クライアント１１８に、送信先ディレクトリパス、及び情報処理装置Ｃ６０３のネットワークアドレスを通知する。
【００９９】
すると、画面共有クライアント１１８は、画面共有サーバー１０２に対して、送信先である情報処理装置Ｃ６０３のネットワークアドレスと、送信先のディレクトリパスをステップＳ４１０で通知し、ファイルの送信を指示する。
【０１００】
この指示を受けた画面共有サーバー１０２は、最初ドラッグしたままマウスが画面共有クライアント１１８の画面の外に出たイベントを検出した時に取得した、ファイルパスで指定されたファイルを、情報処理装置Ｃ６０３の指定されたディレクトリに、ステップＳ４１１で送信を行う。この時、画面共有サーバー１０２は画面共有サーバー１６２に対して、ファイルは情報処理装置Ａ６０１を仲介することなく、直接ファイルの転送を行う。
【０１０１】
なお、ファイルのドラッグ＆ドロップの検出は画面共有サーバー、画面共有クライアントのどちらが行っても、最終的に情報処理装置Ｂ６０２から情報処理装置Ｃ６０３への直接ファイル転送する機能が実現できればどちらでも良い。また、同様に順序を入れ替えても、前記機能が実現されるものは順序を問わない。
【０１０２】
ファイルの転送先を図５のようなフローで決定したが、どこにファイルをドロップしてもデスクトップに転送されるようにしてもよい。または、Ｃ：￥Ｒｅｃｅｉｖｅｄのような特定の決まったフォルダに転送するようにしても良い。
【０１０３】
情報処理装置Ｂ６０２から情報処理装置Ａ６０１の一時フォルダにファイルを転送し、情報処理装置Ａ６０１の一時フォルダから情報処理装置Ｂ６０２にファイルを転送し、ファイル転送完了後、情報処理装置Ａ６０１の一時フォルダ上のファイルを削除するようにしてもよい。但し、転送に掛かる時間は増大する。情報処理装置Ｂ６０２と情報処理装置Ｃ６０３が直接通信出来ないことを検出した場合は、このように情報処理装置Ａ６０１を仲介しているファイルを転送するようにしてもよい。
【実施例２】
【０１０４】
次に、図３で説明した構成に、新たな機能を付け加えた実施例について説明する。図１２には、画面共有サーバーに、ウィンドウ管理部１３０と、仮想画面生成部１３１とが加えられ、画面共有クライアント１１８に、ウィンドウ制御部１３２が加えられた構成が示されている。
【０１０５】
仮想画面生成部１３１は、実際の情報処理装置の表示装置に表示される実デスクトップ画面とは別に、仮想デスクトップ画面を生成する。つまり、仮想画面生成部１３１は、ＯＳに対して、２台目の表示装置が接続されているように見せかける仮想ビデオドライバとして機能する。
【０１０６】
ウィンドウ管理部１３０は、所定のウィンドウのウィンドウハンドルを取得し、ウィンドウハンドルを画面の識別子として記憶する。またウィンドウ制御部１３２は、共有画面が、共有画面サーバーの仮想デスクトップ画面上で表示されたのと同一の位置、大きさでウィンドウを表示する。
【０１０７】
上記構成での画面を、図１３を用いて説明する。図１３には、情報処理装置Ｂ６０２と、情報処理装置Ａ６０１とが示されている。また、図１３に示される（＊，＊）は、座標を示している。
【０１０８】
情報処理装置Ｂ６０２の画面を示すのが、画面５３０である。この画面５３０は、情報処理装置Ｂ６０２の画面全体である。ウィンドウ５３３は、この画面５３０に表示されている何らかのアプリケーションのウィンドウである。
【０１０９】
画面５３０の右横に表示されている画面５３１は、仮想デスクトップ画面であり、この画面には、上記ウィンドウ５３３が画面５３１にもまたがり、ウィンドウ５３３のまたがった部分は、共有画面５３２となっている。この共有画面５３２が共有画面表示領域である。
【０１１０】
一方、情報処理装置Ａ６０１の画面５３５には、ウィンドウ５３３のまたがった部分が表示される。
【０１１１】
すなわち、この構成によれば、あたかも隣の人の机の上に、自分の机の上の書類を移動するようなことがコンピュータで可能となる。
【０１１２】
上記例では、情報処理装置Ｂ６０２の画面５３０の右端が境界となり仮想デスクトップがつながっている。
【０１１３】
このように、図１２に示された構成により、情報処理装置Ｂ６０２では仮想デスクトップ画面に表示されたウィンドウの画面のみを共有するよう動作する。一方、情報処理装置Ａ６０１では、仮想デスクトップ画面に表示されたウィンドウが、サーバーの仮想デスクトップ画面に表示されているのと同一の位置、大きさで、共有画面として表示される。
【０１１４】
また、情報処理装置Ａ６０１と情報処理装置Ｂ６０２の表示画面の大きさが同一の場合、情報処理装置Ｂ６０２の仮想デスクトップ画面表示から仮想デスクトップの下地を除いた部分が、情報処理装置Ａ６０１のデスクトップにぴったり重なりあうように表示される。
【０１１５】
上記動作において、情報処理装置Ｂ６０２に搭載されている画面共有サーバー１０２の処理を、図１４のフローチャートを用いて説明する。画面共有サーバーが起動すると、ステップＳ５０１で画面共有サーバーは仮想デスクトップ画面を生成し、ステップＳ５０２でクライアントの接続を待つ。クライアントが接続すると、画面共有サーバーは、ステップＳ５０３で仮想デスクップ上にウィンドウが表示されるのを監視する。ステップＳ５０４で、仮想デスクップ上にウィンドウが表示されると、そのことを検出し次のステップＳ５０５に進む。
【０１１６】
ステップＳ５０５で、画面共有サーバー中のウィンドウ管理部が、そのウィンドウのウィンドウハンドルを取得し、ウィンドウハンドルを画面の識別子として、記憶しておく。そして、ステップＳ５０６で、そのウィンドウ領域の内、仮想デスクトップ画面に表示された領域の画面データを取得して、その画面データをステップＳ５０７で画面共有クライアントに送信する。尚、仮想デスクトップそのものの画面データはキャプチャしないものとする。そして、ステップＳ５０８で、新たな画面変化があるかを監視して、画面更新を検出した場合は、画面データを取得してクライアントに取得するという動作を繰り返す。
【０１１７】
次に、図１５を用いて、情報処理装置Ａ６０１に搭載されている画面共有クライアント１１８の基本的な動作を説明する。画面共有クライアントは、画面共有サーバーに接続時、画面共有サーバーの仮想デスクトップ画面にウィンドウが表示されていない場合は、何も表示されない。ステップＳ６０１に示されるように、画面共有サーバーから画面データが来るのを待受ける状態になる。
【０１１８】
画面共有サーバーの仮想デスクトップ画面にウィンドウが表示されると、画面共有サーバーが画面データを送信してくるので、画面共有クライアントはステップＳ６０２でこの画面データを受信する。画面共有クライアントは画面共有サーバーから受信した画面データを元に、ステップＳ６０３で画面共有クライアントの画面上に共有画面を表示する。この時、画面共有クライアントのウィンドウ制御部は、共有画面が、画面共有サーバーの仮想デスクトップ画面上で表示されたのと同一の位置、大きさでウィンドウを表示する。
【０１１９】
以上の説明では、画面共有動作のうち、画面の表示を中心に説明した。次に、画面共有クライアント側即ち情報処理装置Ａ６０１から共有画面を遠隔操作する場合の処理について説明する。遠隔操作として、ウィンドウの位置、大きさを変更した場合と、それ以外の操作の場合があるが、まずそれ以外の動作について説明する。
【０１２０】
画面共有サーバーは画面共有クライアントから受信した入力イベントに従って、ローカルに入力イベントを発生させる。これにより、クライアントの起動している情報処理装置Ａ６０１からサーバーの起動している情報処理装置Ｂ６０２を操作することが可能となっている。
【０１２１】
情報処理装置Ａ６０１が、情報処理装置Ｂ６０２と共有している共有画面に対して、ウィンドウの位置、大きさ以外の操作を行った場合は、従来の画面共有ソフトの場合と同様に動作する。即ち、クライアントの情報処理装置Ａ６０１では、この共有画面がアクティブになっている状態で、マウス・キーボード等の入力装置からの入力イベントを取得すると、この入力データを画面共有サーバーに送信する。
【０１２２】
次に、ウィンドウの位置、大きさを変更した場合の処理について説明する。
【０１２３】
従来の画面共有ソフトでは、画面共有クライアントの表示位置や、ウィンドウの大きさを自由に移動出来るが、本実施の形態では、画面共有クライアントのウィンドウ制御部によって、ウィンドウの位置・大きさが制御される。
【０１２４】
前述したように、情報処理装置Ａ６０１と情報処理装置Ｂ６０２の表示画面の大きさ（つまり解像度）が同一の場合、情報処理装置Ｂ６０２の仮想デスクトップ画面表示から仮想デスクトップの下地を除いた部分が、情報処理装置Ａ６０１のデスクトップにぴったり重なりあうように表示される。
【０１２５】
情報処理装置Ａ６０１、Ｂ６０２の画面解像度がＳＶＧＡ（８００×６００ピクセル）として説明する。画面共有サーバーは、仮想デスクトップ画面の解像度を、情報処理装置Ｂ６０２の実デスクトップと同じくＳＶＧＡにする。
【０１２６】
情報処理装置Ｂ６０２の実デスクトップ上に、アプリケーションＡが起動していたとして、その画面サイズが６００×４００であるとする。
【０１２７】
このような環境で、情報処理装置Ｂ６０２のユーザーが、情報処理装置Ｂ６０２を操作してアプリケーションのウィンドウをデスクトップ境界を横切って、仮想デスクトップ画面にも表示されるように移動したとする。
【０１２８】
例えば、図１３に示されるように、アプリケーションのウィンドウの半分が仮想デスクトップ画面に表示されたとする。その時、情報処理装置Ｂ６０２の実デスクトップは、画面左上を原点とした絶対座標で、
（５００，１００），（８００，１００），（５００，５００），（８００，５００）
の４点に囲まれる３００×４００の領域が表示され、残りの部分が仮想画面に表示されているとする。
【０１２９】
仮想デスクトップ画面には、仮想デスクトップ画面の画面左上を原点とした絶対座標で、
（０，１００），（３００，１００），（０，５００），（３００，５００）
の４点に囲まれる３００×４００の領域が表示される。
【０１３０】
よって、画面共有サーバーはこの後者の３００×４００の領域を画面共有する。情報処理装置Ａ６０１の実デスクトップ画面には、情報処理装置Ｂ６０２の仮想デスクトップ画面と同様に、情報処理装置Ｂ６０２の画面左上を原点とした絶対座標で、
（０，１００），（３００，１００），（０，５００），（３００，５００）
の４点に囲まれる３００×４００の領域に共有画面が表示される。
【０１３１】
図１３の状態から、図１６に示すように、プリケーションＡのウィンドウを左側に１００ピクセル移動させた場合の動作で説明する。つまり情報処理装置Ｂ６０２の実デスクトップは、画面左上を原点とした絶対座標で、
（６００，１００），（８００，１００），（６００，５００），（８００，５００）
の４点に囲まれる２００×４００領域が表示され、情報処理装置Ｂ６０２の仮想デスクトップ画面では、画面左上を原点とした絶対座標で、
（０，１００），（４００，１００），（０，５００），（４００，５００）
の４点に囲まれる４００×４００領域が表示される。
【０１３２】
情報処理装置Ｂ６０２の実デスクトップは、画面左上を原点とした絶対座標で、
（５００，１００），（８００，１００），（５００，５００），（８００，５００）
の４点に囲まれる４００×４００領域に共有が表示される。
【０１３３】
情報処理装置Ｂ６０２（画面共有サーバー）を操作してアプリケーションのウィンドウを移動させた場合の処理について図１７のフローチャートを用いて説明する。
【０１３４】
ステップＳ７０１で、画面共有サーバーは、入力イベントかどうか判断し、入力イベントがあると、ステップＳ７０２でウィンドウの移動／サイズ変更かどうか判断する。ウィンドウの移動／サイズ変更でない場合、ステップＳ７０５へ処理は進む。
【０１３５】
ウィンドウの移動／サイズ変更の場合、ステップＳ７０３で、画面共有サーバーは、ウィンドウ領域情報を取得し、ステップＳ７０４でウィンドウ領域情報を送信し、ステップＳ７０５で入力イベントを送信し、ステップＳ７０１の処理に戻る。
【０１３６】
一方、情報処理装置Ａ６０１上では、画面共有クライアントのウィンドウ制御部の働きにより、共有画面が、画面共有サーバーの仮想デスクトップ画面上で表示されたのと同一の位置、大きさでウィンドウを表示（即ち、図１２の場合、画面左上を原点とした絶対座標で、（５００，１００），（８００，１００），（５００，５００），（８００，５００）の４点に囲まれる４００×４００領域に表示）するよう制御しつつ、受信した画面データを表示する。
【０１３７】
次に、情報処理装置Ａ６０１を操作して、共有画面を移動させた場合の処理について図１８のフローチャートを用いて説明する。
【０１３８】
ステップＳ８０１で、入力イベントを受信したかどうかが判断され、入力イベントが受信されると、ステップＳ８０２で、ウィンドウの移動／サイズ変更かどうかが判断される。ウィンドウの移動／サイズ変更でない場合、ステップＳ８０７で、イベントが実行され、ステップＳ８０１に処理は戻る。
【０１３９】
ウィンドウの移動／サイズ変更の場合、ステップＳ８０３で、ウィンドウ領域情報が取得され、ステップＳ８０４でイベントが実行される。
【０１４０】
そして、ステップＳ８０５で、ウィンドウ領域が同期しているかどうか判断され、同期している場合、ステップＳ８０１の処理に戻る。同期していない場合、ステップＳ８０６で、ウィンドウ移動／サイズ変更が行われ、ステップＳ８０５に処理は戻る。
【０１４１】
この処理において、画面共有クライアントのウィンドウ制御部は、情報処理装置Ｂ６０２上での共有画面ウィンドウの絶対座標による表示領域と、情報処理装置Ａ６０１の仮想デスクトップ画面上でアプリケーションＡの絶対座標による表示領域とが同期するよう、ウィンドウの表示領域に関する情報を送る。
【０１４２】
図１６の例で説明すると、画面左上を原点とした絶対座標で、（５００，１００），（８００，１００），（５００，５００），（８００，５００）の４点に囲まれる４００×４００領域に表示されていることを、画面共有サーバーに通知する。
【０１４３】
これを受信した画面サーバーは、クライアントの指示した通りに仮想デスクトップ画面にアプリケーションのウィンドウが表示されるよう、ウィンドウを移動させる。
【０１４４】
この動作により、画面共有クライアント・サーバーのどちらが共有しているアプリケーションのウィンドウを移動させても、情報処理装置Ａ６０１の共有画面と、情報処理装置Ｂ６０２の仮想デスクトップに表示されているアプリケーションのウィンドウがぴったりと重ねあうように、絶対座標で同一の位置に同期して表示する仕組みを実現する。
【０１４５】
なお、画面のサイズを変更した場合も、同様のフローで実現できる。
【０１４６】
次に、共有したいアプリケーションのウィンドウ全体を、共有画面として共有する場合の動作を説明する。
【０１４７】
情報処理装置Ｂ６０２において、情報処理装置Ｂ６０２を操作して、図１５のように共有しているアプリケーションのウィンドウ５３３が完全に仮想デスクトップの画面５３１上に表示されるように移動した場合を例に説明する。
【０１４８】
アプリケーションのウィンドウ５３３が完全に仮想デスクトップの画面５３１に移動してしまうと、情報処理装置Ｂ６０２からはマウス操作によってウィンドウ５３３を移動させることが出来なくなってしまう（実際には不可能ではないが、画面が表示されていないので、操作が困難になる）。ウィンドウ５３３を移動させる実施方法を、図２０のフローチャートで説明する。
【０１４９】
画面共有サーバーのウィンドウ管理部は、画面共有しているウィンドウを監視している。アプリケーションのウィンドウを監視している。ウィンドウの位置を移動するイベントを監視することにより、ウィンドウ管理部は、ステップＳ９０１で、ウィンドウの移動を検出する。
【０１５０】
ウィンドウ移動イベントを検出すると、ステップＳ９０２で、アプリケーションのウィンドウが完全に仮想デスクトップの画面に移動したかどうかが判定される。すなわち、アプリケーションのウィンドウの左上の座標を監視する。左上座標が実デスクトップ上にあれば、ステップＳ９０１へ戻り、監視を続行する。
【０１５１】
左上座標が仮想デスクトップ画面上に移動したことを検出すると、アプリケーションは完全に（即ち全領域が）画面共有クライアントに対して画面共有されたと判定され、このアプリケーションのウィンドウ管理データのうち、完全に共有されているかどうかを示す完全共有フラグがステップＳ９０３でＴＲＵＥに設定される。このフラグがＴＲＵＥにされると、情報処理装置Ｂ６０２の操作により、このアプリケーションＡの共有を中止できるようになる。
【０１５２】
次に、図２１のフローチャートと、図２２を用いて、システムトレイに表示されたアイコンから共有を解除する方法を説明する。
【０１５３】
画面共有サーバーは、デスクトップ上のシステムトレイにアイコンを登録する手段を有し、システムトレイ上に表示されたアイコンは、マウスのクリックイベントを受信すると、画面共有サーバーを操作するメニューを表示するものとする。
【０１５４】
画面共有サーバーのウィンドウ管理部は、現在共有しているウィンドウの共有を解除するメニューアイテムを、画面共有サーバーのアイコンをクリックすることにより表示されるメニューに追加する機能を有するとする。
【０１５５】
ユーザーは、情報処理装置Ｂ６０２を操作して、このメニューを選択すると、画面共有サーバーはアプリケーションの画面共有を中止する。
【０１５６】
ユーザーが情報処理装置Ｂ６０２を操作して、アプリケーションの共有解除を行うと、画面共有サーバーのウィンドウ管理部は、アプリケーションのウィンドウハンドルを記憶しているので、ステップＳ１００１で、このウィンドウハンドルを持つウィンドウを、図２２のように実デスクトップ上に移動させる。
【０１５７】
その移動量は、右方向に表示画面の横方向の解像度分移動させる。本実施の形態の場合、デスクトップ解像度が８００×６００であるから、右方向に８００だけウィンドウを移動させる。
【０１５８】
完全共有が終了したので、ステップＳ１００２で、完全共有フラグがＦＡＬＳＥに設定され、アプリケーションの画面共有そのものが終了したので、ウィンドウ管理部が記憶しているアプリケーションに関する情報は、ステップＳ１００３で破棄される。
【０１５９】
なお、この情報の破棄には、メニューからアプリケーションの共有を解除するメニューアイテムをシステムトレイメニューから削除する手順を含むものとする。
【０１６０】
また、情報処理装置Ｂ６０２が画面共有サーバーそのものを終了させた場合、画面共有サーバーはアプリケーションの終了処理として、図２１に示したフローで、共有している全てのウィンドウを実デスクップ画面に移動させ、仮想デスクトップ画面を破棄するようにする。
【０１６１】
次に、同様にして画面共有クライアントから画面共有を解除する方法を説明する。この方法は、図１３や図１６のようにアプリケーションＡの一部を画面共有している場合でも、図２２のように完全に共有している場合のどちらでも可能な方法である。
【０１６２】
なお、画面共有クライアントも、前述の画面サーバーと同様に、デスクトップ上のシステムトレイにアイコンを登録する手段を有し、システムトレイ上に表示されたアイコンは、マウスのクリックイベントを受信すると、画面共有クライアントを操作するメニューを表示するものとする。
【０１６３】
また、画面共有クライアントは、現在共有しているウィンドウの共有を解除するメニューアイテムを、画面共有クライアントのアイコンをクリックすることにより表示されるメニューに追加する機能を有するとする。
【０１６４】
画面共有クライアントの情報処理装置Ａ６０１を操作して、このメニューからアプリケーションの共有解除を選択すると、画面共有クライアントは、画面共有サーバーに画面共有解除のイベントを送信する。画面共有サーバーは、これを受信すると図２１との動作フローで、前述と同様にウィンドウを移動させて画面共有を解除する。
【０１６５】
情報処理装置Ａ６０１が、画面共有クライアントプログラム本体を終了させるか、もしくは情報処理装置Ｂ６０２の画面共有サーバーとの接続を切断した場合も、共有している全てのウィンドウの共有を解除するイベントを画面共有サーバーに送信し、その後に接続を切断する。
【０１６６】
次に、画面共有クライアントから、完全共有を行う方法とその解除方法に関する説明を行う。前述したように、画面共有クライアントのウィンドウ制御部の働きにより、情報処理装置Ｂ６０２の共有画面と情報処理装置Ａ６０１の仮想デスクトップ画面におけるアプリケーションのウィンドウの表示位置は同期している。
【０１６７】
そこで図１６の状態で、情報処理装置Ａ６０１のユーザーが、共有画面のウィンドウのツールバーをマウスでドラッグして、ウィンドウを図１９の画面５３５に移動させると、図１９の画面５３１のように、アプリケーションのウィンドウが完全に共有されることになる。
【０１６８】
このような画面共有クライアントが共有画面を移動させて完全共有する場合の、画面共有サーバーの動作を図２３のフローチャートを用いて説明する。
【０１６９】
画面共有サーバーのウィンドウ管理部は、画面共有クライアントからのウィンドウの移動のイベントに対しても、図２０で説明したのと同様に、ウィンドウが完全に共有された状態になったかどうかを監視している。
【０１７０】
但し、クライアントのウィンドウ制御部から送られる共有画面の表示領域データをチェックすることにより監視する。
【０１７１】
アプリケーションのウィンドウを完全に共有するよう、ステップＳ１１０１で、ウィンドウを移動するイベントを検出し、ステップＳ１１０２で完全に共有されたと判断された場合は、上述した完全共有フラグを、ステップＳ１１０３でＴＲＵＥに設定し、ステップＳ１１０４で、ウィンドウをクライアントから指示された位置へ同期するよう移動させる。ウィンドウの位置を同期させる動作は、図１８と同様であるので省略した。一方、完全に共有させる移動でない場合は、完全共有フラグはＦＡＬＳＥのままで、図１８と同様にステップＳ１１０５でウィンドウを同期させる。
【０１７２】
以上のような構成により、画面共有サーバーの起動している情報処理装置Ｂ６０２からその一部が共有画面として画面共有クライアントの起動している情報処理装置Ａ６０１に表示されたアプリケーションのウィンドウを、情報処理装置Ｂ６０２のマウス操作により情報処理装置Ｂ６０２自身のデスクトップ内に移動させることによって、情報処理装置Ａ６０１上のアプリケーションのウィンドウの位置も同期して移動させることにより、情報処理装置Ｂ６０２上でアプリケーションのウィンドウ全体が画面共有できるようになる。
【０１７３】
次に、画面共有クライアントからウィンドウ操作で完全共有を解除する場合の画面共有サーバーの動作を図２４のフローチャートを用いて説明する。
【０１７４】
画面共有サーバーのウィンドウ管理部は、画面共有クライアントからのウィンドウの移動のイベントに対しても、図２１で説明したのと同様に、ウィンドウが完全に共有された状態になったかどうかを監視している。但し、クライアントのウィンドウ制御部から送られる共有画面の表示領域データをチェックすることにより監視する。
【０１７５】
ステップＳ１２０１で、アプリケーションの完全共有を解除する内容のウィンドウ移動するイベントを検出し、ステップＳ１２０２で完全に共有が解除されと判断された場合は、ステップＳ１２０３で完全共有フラグをＦＡＬＳＥに設定し、ステップＳ１２０４でウィンドウをクライアントから指示された位置へ同期するよう移動させる。ウィンドウの位置を同期させる動作は、図１８と同様である。一方、完全同期したままの移動で場合は、完全共有フラグはＦＡＬＳＥのままで、ステップＳ１２０５で、図１４と同様にウィンドウを同期させる。
【０１７６】
以上のような構成により、情報処理装置Ａ６０１が、情報処理装置Ｂ６０２のアプリケーションの画面を完全に共有している状態において、ユーザーが情報処理装置Ｂ６０２のマウス操作により共有画面のウィンドウを情報処理装置Ｂ６０２の仮想デスクトップ画面から実デスクトップ画面の方向（この場合は左方向）に移動させる。
【０１７７】
これによって情報処理装置Ａ６０１上のアプリケーションのウィンドウの位置も同期して移動させることにより、情報処理装置Ｂ６０２上で、アプリケーションのウィンドウが実デスクトップ上にも表示可能な領域まで移動させることで、完全共有を解除し、情報処理装置Ｂ６０２のマウスでアプリケーションＡを操作出来るようになる。
【０１７８】
以上の例では、アプリケーションを仮想デスクトップ画面に移動して、クライアントで完全に共有した場合、情報処理装置Ａ６０１ではアプリケーションの画面を見て操作することが出来なくなってしまう。これを解決するための方法を示すと共に、画面共有サーバーを起動している情報処理装置Ｂ６０２でも、アプリケーションＡの操作を行うことが出来るようにする方法について述べる。
【０１７９】
図２５に画面共有サーバーの動作フローを示す。また、図２６に画面の説明図を示す。画面共有サーバーのウィンドウ管理部は、ステップＳ１３０１で、共有しているアプリケーションウィンドウの画面が完全に共有されているかどうかを監視している。画面をクライアントに完全に共有されたことを検出すると、ステップＳ１３０２で完全共有フラグをＴＲＵＥにし、画面共有サーバーは、ステップＳ１３０３で、自身の起動している情報処理装置Ｂ６０２上に、画面共有クライアントをローカルに起動し、実デスクトップ画面上に表示する。この表示した様子を示すのが、図２６の画面５３０に示されるローカル画面５４０である。
【０１８０】
この時、画面共有クライアントのウィンドウは全領域が実デスクトップ画面上に表示され、仮想デスクトップ画面には表示されないようにする。そして、起動した画面共有クライアントをステップＳ１３０４で画面共有サーバー自身に接続させる。
【０１８１】
このローカルに起動した画面共有クライアントも、情報処理装置Ａ６０１で起動している画面共有クライアントと同様に、ウィンドウ制御部によって、ウィンドウの表示領域の同期を行う。
【０１８２】
つまり、アプリケーションが情報処理装置Ｂ６０２の仮想デスクトップ画面に表示されているのと同じ位置・大きさで、情報処理装置Ｂ６０２の実デスクトップ画面に画面共有クライアントを表示する。
【０１８３】
次のステップＳ１３０５で、完全共有が解除されたことを検出すると、ステップＳ１３０６で完全共有フラグをＦＡＬＳＥにし、画面共有サーバーは、ステップＳ１３０７でローカルの画面共有クライアントを切断して、終了させるよう指示する。画面共有クライアントが終了することにより、通常の画面共有状態になる。
【０１８４】
画面共有サーバーもしくは画面共有クライアント側の情報処理装置から画面共有を中止した場合は、画面共有サーバーはプログラム終了処理として、アプリケーションのウィンドウを実デスクトップに戻す処理を行った後、プログラムを終了する。
【０１８５】
次に、共有画面とのファイル転送について説明する。情報処理装置Ａ６０１上のファイルを、共有画面対してドラッグ＆ドロップすることによって情報処理装置Ｂ６０２に送信する場合、共有画面に表示されている情報処理装置Ｂ６０２上にあるファイルを、情報処理装置Ｂ６０２にローカルにドラッグ＆ドロップする場合があるが、これは本実施の形態で説明した画面共有システムに、図６と図８を使って説明したドラッグ＆ドロップによるファイル転送機能を追加することにより実現できる。
【０１８６】
なお、変形例として、画面共有クライアントのウィンドウ制御部の動作を解除し、画面共有クライアントのデスクトップ上で、共有画面の位置・大きさを自由に変更出来るようにする機能を設けても良い。この場合、従来の画面共有クライアントソフトに近い動作となる。
【０１８７】
また、画面領域全体を共有している場合には、自動的にクライアントのウィンドウ制御部の動作を解除し、クライアントのデスクトップ上で、共有画面の位置・大きさを自由に変更出来るようにするようにしてもよい。
【０１８８】
複数のアプリケーションのウィンドウを共有する場合は、画面共有サーバーのウィンドウ管理部は各ウィンドウ毎にウィンドウハンドルを取得して管理する。
【０１８９】
複数のウィンドウが共有されている場合、画面共有サーバー側から共有を解除する場合、共有を解除したいウィンドウタイトルのリストを列挙して表示し、ユーザーが選択したウィンドウもしくは全てのウィンドウの共有を解除するようにしても良い。
【０１９０】
また、画面共有サーバーのウィンドウ管理部は、画面共有しているアプリケーションが終了した場合は、そのアプリケーションに関する管理情報を破棄する。
【０１９１】
ウィンドウを完全に共有させないよう、画面共有サーバーのウィンドウ管理部が共有しているアプリケーションのウィンドウの表示領域を監視し、ウィンドウが完全に仮想デスクトップ画面に移動する命令を検出した場合、その移動命令を実行せずに中止する機能を付加しても良い。また、ビープ音やダイアログを表示して警告を出すようにしても良い。画面共有クライアントからのウィンドウの移動に関する受信イベントをチェックするか、もしくは画面共有サーバー（情報処理装置Ｂ６０２）のウィンドウ移動イベントをフックすることによって監視することが可能である。
【０１９２】
また、画面共有サーバーが起動している情報処理装置Ｂ６０２から完全共有されている画面共有を解除する場合、ウィンドウを画面解像度分左方向に移動させるのではなく、情報処理装置Ｂ６０２の実デスクトップ画面の画面中央に表示されるように（即ち、アプリケーションのウィンドウの中心座標と実デスクトップ画面の中心座標が一致するように）、ウィンドウの表示位置を計算してウィンドウを移動させようにしてもよい。
【０１９３】
一つの画面共有サーバーに複数の画面共有クライアントが接続している場合、１つの画面共有クライアントが切断した場合も、他の画面共有クライアントが共有しているウィンドウについては、共有を解除しないようにする機能を備えるものとする。
【実施例３】
【０１９４】
次に、上述したような、アプリケーションを仮想デスクトップ画面に移動して、クライアントで完全に共有した場合、情報処理装置Ａ６０１ではアプリケーションの画面を見て操作することが出来なくなってしまうことを解決するための別の実施例について説明する。
【０１９５】
図２７に画面共有サーバーのフローチャートを示す。また、図２８に画面の説明図を示す。
【０１９６】
画面共有サーバーのウィンドウ管理部は、共有しているアプリケーションのウィンドウが完全に共有されているかどうかを監視している。ステップＳ１４０１で、画面をクライアントに完全に共有されたことを検出すると、ステップＳ１４０２で完全共有フラグをＴＲＵＥに設定する。
【０１９７】
画面共有サーバーはまず、ステップＳ１４０３で、アプリケーションのウィンドウを仮想デスクトップ画面から実デスクトップ画面に移動する。その時、アプリケーションの仮想デスクトップ画面における表示領域と実デスクトップの移動先が同一となるように移動する。この移動の様子を表したのが図２８である。図２８には、画面５３１から画面５４０へ画面が移動されていることが示されている。
【０１９８】
次に、画面共有サーバーは、ステップＳ１４０４で、仮想デスクトップ画面上に表示されたウィンドウの画面データを共有するのを中止し、代わりに実デスクトップ画面に表示されたアプリケーションＡの画面領域を画面共有するよう、画面共有領域を変更する。
【０１９９】
この状態でも情報処理装置Ｂ６０２と情報処理装置Ａ６０１では、アプリケーションの表示領域の同期を行う。即ち、情報処理装置Ａ６０１を操作して共有画面を移動させると、その変化量に応じて、情報処理装置Ｂ６０２上ではアプリケーションのウィンドウが移動する。その逆の操作も同様である。
【０２００】
次のステップＳ１４０５からは、完全共有解除の処理であるが、画面共有クライアントが共有画面のウィンドウを移動させて完全共有から、通常の共有状態に戻り、画面共有を続ける場合と、画面共有クライアントまたはサーバーが画面共有を中止する場合の２通りの処理がある。
【０２０１】
ステップＳ１４０５で、完全共有が解除されたことが検出されると、画面共有サーバーは、ステップＳ１４０６で完全共有フラグをＦＡＬＳＥにする。そして、ステップＳ１４０７の共有続行と判断してアプリケーションのウィンドウを、クライアントのウィンドウ制御部から指示された通りに、移動させる。
【０２０２】
この移動により、アプリケーションのウィンドウは、図１６のように、一部が実デスクトップ画面上に、残りの部分が仮想デスクトップ画面に表示されるような領域に移動される。
【０２０３】
ステップＳ１４０６で、共有続行をしないと判断した場合は、ステップＳ１４０９で、実デスクトップ上に表示されたアプリケーションＡの画面領域を画面共有していたのを中止し、代わりに仮想デスクトップ画面上に表示されたウィンドウを共有する通常の状態に戻す。
【０２０４】
なお、画面共有サーバープログラム本体を終了させた場合は、この動作を終了動作として実行した後プログラムのプロセスを終了する。
【実施例４】
【０２０５】
次に、ファイルの転送処理に関する説明をする。図２９は、本実施の形態におけるファイル受信先の情報処理装置の動作フローを説明する図であり、図５のステップＳ１０３からの処理を示すものである。
【０２０６】
なお、このフローチャートは、画面共有クライアントからサーバーへ転送する場合、サーバーからクライアントに転送する場合どちらも共通である。
【０２０７】
ステップＳ１５０１で、ファイルをドロップした位置にあるウィンドウが調べられる。その位置にあるウィンドウが、ファイラーである場合は、ステップＳ１５０２で、そのファイラーで現在表示しているディレクトリパスを調べ、ステップＳ１５０３で、これをファイル送信先と指定する。
【０２０８】
また、その位置がデスクトップ画面であり、それ以外何も表示されていない場合は、ファイラーの場合と同様に、ステップＳ１５０２で、現在表示しているデスクトップ画面のディレクトリパスを取得して、ステップＳ１５０３で、これをファイル送信先と指定する。そしてステップＳ１５０４でファイルを受信する。
【０２０９】
ステップＳ１５０１で、ウィンドウがアプリケーションのウィンドウであった場合、ステップＳ１５０５で、アプリケーションのウィンドウハンドルを取得して記憶しておく。そして、ファイルの送信先をデスクトップとする。ステップＳ１５０６で、デスクトップのディレクトリパスを取得し、ステップＳ１５０７で、これを宛先として指定し、ステップＳ１５０８でファイルを受信する。ファイル受信後、ステップＳ１５０９で、画面共有クライアントもしくは画面共有サーバーは、受信ファイルを先程ウィンドウハンドルを取得したアプリケーションに渡すことで、アプリケーションが実行される。例えば、アプリケーションの実行ファイルのファイルパスを取得し、そのアプリケーションを受信ファイル引数として実行させるプロセスを起動する。
【０２１０】
ステップＳ１５０１で、ウィンドウがアプリケーションのアイコンの場合、ステップＳ１５１０で、アイコンのファイルパスを取得して記憶しておく。次に、ステップＳ１５１１で、アイコンのディレクトリパス、すなわちそのアイコンがあるフォルダのディレクトリパスを取得して、ステップＳ１５１２で、これをファイル送信先として指定し、ステップＳ１５１３でファイルを受信する。ファイル受信後、ステップＳ１５１４で、画面共有クライアントもしくは画面共有サーバーは、先程取得したアイコンのファイルで受信したファイルを開かせる。
【０２１１】
なお、ステップＳ１５０１で、アプリケーションのウィンドウと判断された場合、デスクトップを送信先にするのではなく、特定の決まったフォルダに転送するようにしても良い。また、アプリケーションを実行できないアイコン上にドロップした場合は、アイコンのあるディレクトリにファイルを転送する。
【実施例５】
【０２１２】
次に、図３０に示される動作をした場合の処理について説明する。図３０に示される動作は、ファイル５０３をアプリケーションのウィンドウ５４５にドラッグ＆ドロップするものである。
【０２１３】
このときの画面共有サーバーと画面共有クライアントとのやりとりを、図３１を用いて説明する。ステップＳ１６０１で、ファイルがドラッグされたことがマウスイベントとして通知される。これにより、画面共有サーバーは、ドラッグを検出する。
【０２１４】
次のステップＳ１６０２で、共有画面外に移動したことが、マウスイベントとして通知される。これにより、画面共有サーバーは、共有画面外に移動したことを検出し、ファイルパス・ディレクトリパスを取得する。
【０２１５】
一方、画面共有クライアントでは、マウスがドロップされ、ドロップされた位置のアプリケーションのハンドルを取得し、ステップＳ１６０３で、ファイル共有要求を通知する。
【０２１６】
画面共有サーバーでは、ファイルの存在するフォルダの共有を開始し、ステップＳ１６０４で、共有ファイルパスを送信する。画面共有クライアントは、ファイルをアプリケーションに渡して、アプリケーションが実行される。
【０２１７】
以上のように、ファイルの存在するフォルダを共有とすることで、情報処理装置Ａ６０１に実際のファイルを転送することなく、また情報処理装置Ａ６０１で行われたファイルに対する編集は情報処理装置Ｂ６０２のファイルに反映される。
【０２１８】
以上の処理を、図３２のフローチャートを用いて説明する。
【０２１９】
ステップＳ１７０１で、ファイルをドロップした位置にあるウィンドウが調べられる。その位置にあるウィンドウが、ファイラーである場合は、ステップＳ１７０２で、そのファイラーで現在表示しているディレクトリパスを調べ、ステップＳ１７０３で、これをファイル送信先と指定する。
【０２２０】
また、その位置がデスクトップ画面であり、それ以外何も表示されていない場合は、ファイラーの場合と同様に、ステップＳ１７０２で、現在表示しているデスクトップ画面のディレクトリパスを取得して、ステップＳ１７０３で、これをファイル送信先と指定する。
【０２２１】
次のステップＳ１７０４で、ファイル送信の要求が行われ、そしてステップＳ１７０５でファイルを受信する。
【０２２２】
ステップＳ１７０１で、ウィンドウがアプリケーションのウィンドウであった場合、ステップＳ１７０６で、アプリケーションのウィンドウハンドルを取得して記憶しておく。そして、ファイルの送信先をデスクトップとする。ステップＳ１７０７で、ファイルの共有を要求し、ステップＳ１７０８でファイルが共有される。ファイル共有後、ステップＳ１７０９で、共有ファイルを先程ウィンドウハンドルを取得したアプリケーションに渡すことで、アプリケーションが実行される。
【０２２３】
ステップＳ１７０１で、ウィンドウがアプリケーションのアイコンの場合、ステップＳ１７１０で、アイコンのファイルパスを取得して記憶しておく。次に、ステップＳ１７１１で、ファイルの共有が要求され、ステップＳ１７１２で、ファイルが共有される。ファイル共有後、ステップＳ１７１３で、ファイルをアイコンが示すアプリケーションに渡すことで、アプリケーションが実行される。
【０２２４】
逆に、図３３のように、画面共有クライアントの起動している情報処理装置Ａ６０１上のファイルを、情報処理装置Ｂ６０２上で起動していて共有画面として情報処理装置Ａ６０１に表示されているアプリケーションウィンドウにドラッグ＆ドロップする場合も、本例で説明した動作を、画面共有サーバーとクライアントで入れ替えることにより、同様にして実現できる。
【実施例６】
【０２２５】
次に、２つの情報処理装置で、双方向に画面共有を行う例を説明する。図３４には、情報処理装置Ｂ６０２にも画面共有クライアントが動作し、情報処理装置Ａ６０１にも画面共有サーバーが動作する様子が示されている。ウインドウ５３３は、アプリケーションＡのウィンドウであり、ウィンドウ５４６は、アプリケーションＢのウィンドウである。画面５４８は、仮想デスクトップ画面である。
【０２２６】
すなわち、情報処理装置Ａ６０１の画面共有クライアントは情報処理装置Ｂ６０２の画面共有サーバーに接続し、情報処理装置Ｂ６０２の画面共有クライアントは情報処理装置Ａ６０１の画面共有サーバーに接続し、お互いにアプリケーションウィンドウを共有する。このようにお互いに画面共有を行うよう接続することを「相互接続」と呼ぶことにする。
【０２２７】
図３４は図３４に示した情報処理装置Ａ６０１、Ｂ６０２のシステム構成図である。画面共有マネージャー５４９というソフトが各情報処理装置で起動しているとする。画面共有マネージャー５４９は接続を管理する接続管理部５４７と、画面共有サーバー１０２と画面共有クライアント１１８からなっている。
【０２２８】
接続管理部５４７は、画面共有サーバー１０２及び画面共有クライアント１８８の接続を管理するとともに、画面共有サーバーの仮想デスクトップ画面の設定を支持する機能を持つとする。
【０２２９】
図３６は相互接続を行う示すシーケンスの例を示す図である。図３４のような相互接続を行うまでの手順を説明する。この図において、情報処理装置Ａ６０１の画面共有クライアントをクライアントＡ、情報処理装置Ｂ６０２の画面共有サーバーをサーバーＢ、アプリケーションＡのウィンドウをウィンドウＡ、アプリケーションＢのウィンドウをウィンドウＢと表現する。
【０２３０】
なお、情報処理装置Ａ６０１，Ｂ６０２ではそれぞれ画面共有マネージャーが起動しており、画面共有サーバーが起動しているとする。初期状態としては、仮想デスクトップ画面は、実デスクトップ画面の右側にあるとする。
【０２３１】
最初に、情報処理装置Ｂ６０２の画面共有サーバーに情報処理装置Ａ６０１の画面共有クライアントが接続するため、ステップＳ１８０１で、情報処理装置Ａ６０１から情報処理装置Ｂ６０２に接続を開始する。
【０２３２】
すると、相互接続するのに、同一のデスクトップ境界でウィンドウをやり取りするためには、情報処理装置Ａ６０１の仮想デスクトップ画面は、実デスクトップ画面の左側に配置する必要があるので、接続管理部は、画面共有サーバーに対して、仮想デスクトップ画面の位置を左側に移動させる。
【０２３３】
次に接続管理部は、ステップＳ１８０２で、情報処理装置Ｂ６０２の画面共有クライアントが自身の画面共有サーバーに接続するよう要求する。情報処理装置Ｂ６０２の接続管理部は、この要求を受信するとクライアントを情報処理装置Ａ６０１の画面共有サーバーに接続させ、ステップＳ１８０３で、接続開始を通知する。これにより相互接続が行われる。
【０２３４】
情報処理装置Ｂ６０２上で表示されているウィンドウＡを、仮想デスクトップ画面に移動させると、仮想デスクトップ画面に表示された部分は、ウィンドウＡの画面データがステップＳ１８０４で送信されることにより、情報処理装置Ａ６０１上では、共有画面として、情報処理装置Ｂ６０２の仮想デスクトップ画面と同一の配置で表示される。
【０２３５】
次に、情報処理装置Ａ６０１上で起動しているアプリケーションＢのウィンドウをドラッグして、ウィンドウが全て仮想デスクトップ画面上に表示されるよう、左側に移動させると、ウィンドウＢの画面データがステップＳ１８０５で送信されることにより、図３４のように、情報処理装置Ｂ６０２に、アプリケーションＢの画面が共有画面として表示される。
【０２３６】
このようにすることで、２つのＰＣ間で、ウィンドウをマウス操作で移動させることにより、アプリケーションのウィンドウを相互に共有することが可能となる。
【０２３７】
更に、ドラッグ＆ドロップでファイル転送を行ったり、アプリケーションのウィンドウにドラッグ＆ドロップしてファイル転送を行った後、アプリケーションで受信ファイルを実行させることも可能となる。
【０２３８】
または、アプリケーションウィンドウや実行プログラムのアイコンに、ファイルをドラッグ＆ドロップすることによって、ドラッグ側のＰＣにあるファイルを、ドロップ先のＰＣでファイル共有してアプリケーションで開くことも可能となる。
【０２３９】
すなわち、一方のＰＣが共有画面を遠隔操作している場合に、２ＰＣが独立同時操作を行えないことと除けば、２つの別々のＰＣを、あたかも１つのＰＣであるかのように扱えるようにすることが出来る。
【０２４０】
図３４で示した情報処理装置Ａ６０１における画面の配置を、図３７に示すように逆にすることも可能である。具体的に、仮想デスクトップ画面は常に実デスクトップ画面の右側に配置して、画面共有するようにしてもよい。共有画面を受ける時は左側、画面を共有して見せる場合は右側と固定したい場合は、このようにしてもよい。この例の場合、図３６の動作フローにおいて、接続制御部が仮想デスクトップ画面の位置を変更する機能を省くことによって実現出来る。
【０２４１】
次に、１つの情報処理装置で、複数の情報処理装置の画面共有を行う例について説明する。なお、画面共有サーバーは、仮想デスクトップ画面の位置を制御できるものとする。
【実施例７】
【０２４２】
以下の全ての実施例において、符号７０１、７０２、７０３、７０４は、実デスクトップ画面を示し、符号７２１、７２２、７２３、７２４、９５２、９５３、９５４、９５５、９５６は、仮想デスクトップ画面を示す。また、符号８０１、８０２、８０３、８０４は、何らかのアプリケーションのウィンドウを示す。符号９０１、９０２、９０３、９０４は共有画面を示す。
【０２４３】
図３８にシステム構成と画面例を示す。図３８に示されるように、情報処理装置Ａ６０１と、情報処理装置Ｂ６０２と、情報処理装置Ｃ６０３の３つの情報処理装置で行われる。また、情報処理装置Ｂ６０２、Ｃ６０３上では画面共有サーバーが起動している。情報処理装置Ｃ６０３では、仮想デスクトップ画面７２３は実デスクトップ画面７０３の左側に配置している。
【０２４４】
情報処理装置Ａ６０１では、画面共有クライアントのみが起動していて、共有画面９０１、９０２はそれぞれ情報処理装置Ｂ６０２上のアプリケーションＡのウィンドウ８０１、情報処理装置Ｃ６０３上のアプリケーションＢのウィンドウ８０２である。
【０２４５】
このような構成において、図３９のように、情報処理装置Ａ６０１を操作することにより、共有画面９０１に表示された情報処理装置Ｂ６０２上のファイル５０３を、共有画面９０２に表示された情報処理装置Ｃ６０３上のアプリケーションウィンドウにドラッグ＆ドロップする場合の動作を説明する。
【０２４６】
まず、ドロップ先の共有画面９０２として表示されるアプリケーションが、ファイラーであるとする。この場合、情報処理装置Ｂ６０２から情報処理装置Ｃ６０３へ、直接ファイル転送を実行する場合、上記画面共有システムに、上述したファイル転送方法を追加することで実現できる（図１０参照）。
【０２４７】
次に、ドロップ先の共有画面９０２として表示されるアプリケーションが、一般のアプリケーションウィンドウであるとする。この場合に情報処理装置Ｂ６０２から情報処理装置Ｃ６０３へ、直接ファイル転送を実行し、ドロップ先のアプリケーションで受信ファイルを開くことも実現できる（図３０参照）。
【０２４８】
また、ドロップ先の共有画面９０２として表示されるアプリケーションＢが、一般のアプリケーションウィンドウであるとし、情報処理装置Ｃ６０３が情報処理装置Ｂ６０２のファイルをファイル共有して、ドロップ先のアプリケーションで共有ファイルを開くということも実現できる（図３６参照）。
【０２４９】
次は、図４０に示されるように、情報処理装置Ｂ６０２、Ｃ６０３は共に右側に仮想デスクトップ画面７２２、７２３を配置して、情報処理装置Ａ６０１上、左側から共有画面９０１、９０２を表示させるようにする。
【０２５０】
図４１に示されるように、情報処理装置Ａ６０１を操作することにより、共有画面９０１に表示された情報処理装置Ｃ６０３上のファイル５０３を、共有画面９０２に表示された情報処理装置Ｂ６０２上のアプリケーションウィンドウにドラッグ＆ドロップして、
ファイル転送を行ったり、ファイル転送後アプリケーションに実行させたり、もしくは、
情報処理装置Ｃ６０３のファイルを情報処理装置Ｂ６０２でファイル共有して、情報処理装置Ｂ６０２のアプリケーションで実行させるようにしてもよい。
【０２５１】
このような複数の情報処理装置での様々な接続形態を、図４２、４３、４４を用いて説明する。図４２は、１台の情報処理装置で複数の仮想デスクトップ画面を作り、複数の画面共有を行うことを可能にした場合の接続例を示している。
【０２５２】
情報処理装置Ｂ６０２では２つの仮想デスクトップ画面７２２、７２５を生成し、仮想デスクトップ画面７２２には情報処理装置Ａ６０１の画面共有クライアントが接続し、仮想デスクトップ画面７２５には情報処理装置Ｃ６０３の画面共有クライアントが接続していて、それぞれアプリケーションＡのウィンドウ８０１に対応する共有画面９０１と、アプリケーションＢのウィンドウ８０２に対応する共有画面９０２を共有している。
【０２５３】
図４３は、１つの画面共有サーバーに２つの画面共有クライアントが接続し、接続を共有する例である。情報処理装置Ｂ６０２上で画面共有サーバーが起動しており、アプリケーションＡのウィンドウ８０１を共有している。
【０２５４】
そこに、情報処理装置Ａ６０１、Ｃ６０３の２台が画面共有クライアントでこのサーバーに接続している。よって、情報処理装置Ａ６０１からも、情報処理装置Ｃ６０３からも情報処理装置Ｂ６０２のアプリケーションＡのウィンドウを閲覧し、アプリケーションＡを操作することが出来る。情報処理装置Ｂ６０２、Ｃ６０３はそれぞれ、ローカルにあるファイルを共有画面にドラッグ＆ドロップさせて情報処理装置Ｂ６０２のアプリケーションＡに実行させたり、情報処理装置Ａ６０１・Ｂ６０２間、情報処理装置Ｂ６０２・Ｃ６０３間でそれぞれファイル転送を行うことも可能である。
【０２５５】
図４４は、情報処理装置Ａ６０１と情報処理装置Ｂ６０２、情報処理装置Ａ６０１と情報処理装置Ｃ６０３がそれぞれ相互接続している場合を示す。
【０２５６】
図４４において、情報処理装置Ａ６０１上には、実デスクトップ画面７０１と、仮想デスクトップ画面７２１、７２４が表示されている。また、仮想デスクトップ画面７２４には、アプリケーションＤのウィンドウ８０４と、共有画面９０４が表示され、実デスクトップ画面７０１には、共有画面９０１、９０３が表示されている。情報処理装置Ｃ６０３には、アプリケーションＣのウィンドウ８０３が表示されている。
【０２５７】
情報処理装置Ａ６０１上に表示されている共有画面９０１（情報処理装置Ｂ６０２のアプリケーションＡのウィンドウ８０１の共有画面）を仮想デスクトップ画面７２２に移動し、情報処理装置Ｃ６０３の画面共有クライアントで表示できるようにしてもよい。
【０２５８】
即ち、情報処理装置Ｂ６０２のアプリケーションＡは、情報処理装置Ｂ６０２の共有画面９０２を介して、情報処理装置Ｃ６０３に画面共有する（２重共有される）ようにしてもよい。その場合に、情報処理装置Ｃ６０３と情報処理装置Ｂ６０２が、情報処理装置Ａ６０１を介することなく直接ファイル転送を行うことが出来るようにしてもよい。
【０２５９】
以上説明した以外の組み合わせを実施しても良い。
【実施例８】
【０２６０】
次に、図３５で説明した接続管理部を用いた接続相手を選択する処理について説明する。接続管理部は、上述したように画面共有クライアント・画面共有サーバーの接続を管理する。また、接続管理部は、接続を許可する相手を登録する手段、及び接続相手を選択する手段を持つ。
【０２６１】
その接続相手を選択する処理を、例えば、情報処理装置Ａ６０１，情報処理装置Ｂ６０２，情報処理装置Ｃ６０３，情報処理装置Ｄ，情報処理装置Ｅはお互いに他のＰＣのＩＰアドレスやＰＣの名前を登録している環境で選択する処理として、以下説明する。
【０２６２】
図４５のシーケンス図、及び図４６の画面遷移説明図を参照しながら説明する。今、情報処理装置Ｂ６０２において画面共有サーバーは起動しているが、クライアントは接続していないものとする。情報処理装置Ａ６０１にアプリケーションＡを共有画面で見せようとしている場面を想定する。
【０２６３】
まず、情報処理装置Ｂ６０２を操作して、アプリケーションＡのウィンドウを右側に移動し、仮想デスクップ画面７２２に表示されるようにする（図４６の（１）から（２））。すると、情報処理装置Ｂ６０２の接続管理部は、画面共有の開始を検出し、登録されたクライアントリストを表示する。すなわち、情報処理装置Ａ６０１，情報処理装置Ｃ６０３，情報処理装置Ｄ，情報処理装置Ｅが選択肢として表示される。そこで情報処理装置Ｂ６０２のユーザーは、情報処理装置Ａ６０１を選択する。
【０２６４】
すると、情報処理装置Ｂ６０２の接続管理部は情報処理装置Ａ６０１に対して、情報処理装置Ｂ６０２に接続するように、ステップＳ１９０１で情報処理装置Ａ６０１に接続指示する。この指示を受けた情報処理装置Ａ６０１の接続管理部は、ステップＳ１９０２で、画面共有クライアントを情報処理装置Ｂ６０２に接続させる。接続が完了すると、図４６（３）のように、アプリケーションＡのウィンドウが共有される。
【０２６５】
更に、情報処理装置Ａ６０１の接続管理部は、情報処理装置Ｂ６０２との相互接続を開始する。まず、仮想デスクトップ画面７２１の位置が、初期状態では実デスクトップ画面７０１の右側に設定されていたものを、実デスクトップ画面７０１の左側に配置するよう変更する。
【０２６６】
次に、情報処理装置Ｂ６０２に対して、情報処理装置Ａ６０１に接続するように、ステップＳ１９０３で指示する。情報処理装置Ｂ６０２の接続制御部は、ステップＳ１９０４で、情報処理装置Ａ６０１に接続することにより相互接続が完了する。
【０２６７】
ここで、情報処理装置Ｂ６０２上のウィンドウ８０１を左側に移動して、仮想デスクトップ画面７２２に表示させると、図４６（４）のように、情報処理装置Ｂ６０２上に、共有画面として表示される。
【０２６８】
なお、上記処理では相互接続を行ったが、相互接続は行わないようにしても良い。
【０２６９】
次に、大画面などの特別な画面に表示する場合の方法について説明する。接続制御部は、大画面表示可能な情報処理装置を、特別な識別子を付けて登録する手段を有する。例えば、情報処理装置Ａ６０１はプロジェクタを接続して大画面に表示しているとする。ＢからＥの各情報処理装置の接続制御部は、情報処理装置Ａ６０１が大画面を備えていることを登録する。
【０２７０】
今、図４６と同じように、情報処理装置Ｂ６０２を操作して、アプリケーションＡのウィンドウ８０１を右側に移動し、仮想デスクップ画面に表示されるようにすると（図４６の（１）から（２））、情報処理装置Ｂ６０２の接続管理部は、画面共有の開始を検出し、図４８に示されるような、登録されたクライアントリストを表示する。
【０２７１】
すなわち、「大画面」，情報処理装置Ｂ６０２を示す「Ｍｒ．Ｂ」，情報処理装置Ｄを示す「Ｍｒ．Ｄ」，情報処理装置Ｅを示す「Ｍｒ．Ｅ」が選択肢として表示される。そこで情報処理装置Ｂ６０２のユーザーは、大画面表示を選択する。情報処理装置Ｂ６０２の接続管理部は大画面表示に登録されている情報処理装置は、情報処理装置Ａ６０１であることをクライアントリストのデータから取得する。そして、情報処理装置Ｂ６０２の接続管理部は、プロジェクタを接続している情報処理装置Ａ６０１に対して、情報処理装置Ｂ６０２に接続するよう指示する。
【０２７２】
この指示を受けた情報処理装置Ａ６０１の接続管理部は、画面共有クライアントを情報処理装置Ｂ６０２に接続させる。接続が完了すると、図４６（３）のように、アプリケーションＡのウィンドウ８０１が、プロジェクタによって大きな画面で投影され、その画面が例えば会議の参加者の間で共有して見えるようになる。
【実施例９】
【０２７３】
次に、上下左右に仮想デスクトップ画面を生成する場合について、図４９、図５０、図５１とを用いて説明する。図４９は、情報処理装置Ａ６０１の画面説明図である。上下左右にそれぞれ仮想デスクトップ画面９５２、９５３、９５４、９５５を生成し、それぞれ画面共有サーバーが起動して、各仮想デスクトップ画面に表示されたウィンドウを共有できる状態になっている。図５０は、画面遷移図である。図５１は、処理を示すシーケンス図である。
【０２７４】
情報処理装置Ａ６０１の接続管理部は、情報処理装置Ｂ６０２，Ｃ６０３，Ｄ，Ｅに対する仮想デスクトップ画面をそれぞれ順に、上、左、下、右と登録する。
【０２７５】
今、情報処理装置Ａ６０１を操作して、プロジェクタが接続されていて大画面表示が可能な情報処理装置Ｃ６０３にアプリケーションＡのウィンドウ８０１を表示しようとしている場面を例に説明する。
【０２７６】
情報処理装置Ｃ６０３で共有するための仮想デスクトップ画面は、実デスクトップ画面の左側であると登録してあるので、ウィンドウを、左側に移動する（図５０の（１）から（２））。接続管理部は、左側の仮想デスクトップ画面は、情報処理装置Ｃ６０３に画面を共有表示するよう登録してあることを取得し、ステップＳ２１０１で、情報処理装置Ｃ６０３の接続管理部に対して、情報処理装置Ａ６０１に接続するよう指示する。
【０２７７】
指示を受信した情報処理装置Ｃ６０３は、ステップＳ２１０２で、画面共有クライアントを情報処理装置Ａ６０１に接続させる。情報処理装置Ｃ６０３の画面共有クライアントが接続してくると、情報処理装置Ａ６０１の接続管理部は、情報処理装置Ｃ６０３用に登録された左側の仮想デスクトップ画面上で起動している画面共有サーバーに接続するよう接続を制御する。接続が完了すると、図５０（３）のように、アプリケーションＡのウィンドウ８０１が共有される。
【０２７８】
更に、情報処理装置Ｃ６０３の接続管理部は、情報処理装置Ａ６０１との相互接続を開始する。もし、この時点で仮想デスクトップ画面の配置が、実デスクトップ画面の右側以外にあった場合、相互共有を行うため、実デスクトップ画面の右側に配置するよう変更する。
【０２７９】
次のステップＳ２１０３で、情報処理装置Ｃ６０３は、情報処理装置Ａ６０１に対して、情報処理装置Ｃ６０３に接続するよう指示する。情報処理装置Ａ６０１の接続制御部は、ステップＳ２１０４で、情報処理装置Ｃ６０３に接続することにより相互接続が完了する。
【０２８０】
ここで、情報処理装置Ｃ６０３上のアプリケーションＢのウィンドウ８０２を左側に移動して、仮想デスクトップ画面に表示させると、図５０（４）のように、情報処理装置Ａ６０１上に、共有画面として表示される。なお、上記処理において、相互接続は行わないようにしても良い。
【実施例１０】
【０２８１】
次に、情報処理装置Ａ６０１が、接続していない他の情報処理装置Ｂ６０２，Ｃ６０３，及びＤ６０４にアプリケーションＡのウィンドウを共有画面で表示させる処理について、図５２、図５３、図５４を用いて説明する。図５２は、処理を示すシーケンス図であり、図５３は、各情報処理装置の画面を示す図である。図５４はリストである。
【０２８２】
まず、情報処理装置Ａ６０１を操作して、アプリケーションＡのウィンドウ８０１を右側に移動し、仮想デスクップ画面７２１に表示されるようにする。すると、情報処理装置Ａ６０１の接続管理部は、画面共有の開始を検出し、図５４に示すような、登録されたクライアントリストを表示する。すなわち、情報処理装置Ｂ６０２，情報処理装置Ｃ６０３，情報処理装置Ｄ６０４の氏名，及び全員に表示する選択肢がリストにして表示される。そこで情報処理装置Ａ６０１のユーザーは、全員を選択する。なお、氏名は例えばＩＰアドレスなどと関連付けて予め登録されている。
【０２８３】
すると、情報処理装置Ａ６０１の接続管理部は現在の接続管理部で記憶している他の情報装置、すなわち情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４に対してそれぞれ順に、情報処理装置Ａ６０１に接続するよう指示する。この指示を受けた情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４の接続管理部は、ステップＳ２２０１、ステップＳ２２０３、ステップＳ２２０５で、それぞれ画面共有クライアントに接続を指示し、各情報処理装置は、ステップＳ２２０２、ステップＳ２２０４、ステップＳ２２０６で情報処理装置Ａ６０１に接続する。接続が完了すると、図５３のように、情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４の画面には、情報処理装置Ａ６０１で実行しているアプリケーションＡのウィンドウ８０１が共有される。
【０２８４】
更に、図４９のように、情報処理装置Ａ６０１は情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４とそれぞれ相互接続を行い、情報処理装置Ａ６０１が全員と共有している状態で、例えば情報処理装置Ｂ６０２が自身の起動しているアプリケーションのウィンドウを左側に移動させると、情報処理装置Ｂ６０２の仮想デスクトップに表示された部分が情報処理装置Ａ６０１の画面右側から表示されるようにすることも可能である。
【０２８５】
また、情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４からアプリケーションＡのウィンドウ８０１を操作されないように、操作権を制御して、画面共有サーバーは情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４からの操作イベントを受け付けないようにしても良い。
【実施例１１】
【０２８６】
次に、上述した内容において、ある仮想デスクトップ画面に移動すると全員に共有表示される処理について、図５５、図５６を用いて説明する。
【０２８７】
情報処理装置Ａ６０１の接続管理部は、情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４に対する仮想デスクトップ画面をそれぞれ順に、上、左、下と登録し、右側を全員に表示と登録する。
【０２８８】
全員で共有するための仮想デスクトップ画面は、図５４に示されるように、実デスクトップ画面の右側であると登録してあるので、ウィンドウを、右側に移動する。接続管理部は、右側の仮想デスクトップ画面９５６は、全員に画面を共有表示するよう登録してあることを取得し、情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４の接続管理部に対して順に、ステップＳ２３０１、ステップＳ２３０３、ステップＳ２３０５で、情報処理装置Ａ６０１に接続するよう指示する。指示を受信した各情報処理装置はステップＳ２３０２、ステップＳ２３０４、ステップＳ２３０６で情報処理装置Ａ６０１に接続する。情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４からの接続が完了すると、図５３のように、アプリケーションＡのウィンドウが共有される。
【０２８９】
更に、図４９で示したように、情報処理装置Ａ６０１は情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４とそれぞれ相互接続を行い、情報処理装置Ａ６０１が全員と共有している状態で、例えば情報処理装置Ｂ６０２が自身の起動しているアプリケーションのウィンドウを左側に移動させると、情報処理装置Ｂ６０２の仮想デスクトップに表示された部分が情報処理装置Ａ６０１の画面右側から表示されるようにすることも可能である。
【０２９０】
また、情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４からアプリケーションＡのウィンドウ８０１を操作されないように、操作権を制御して、画面共有サーバーは情報処理装置Ｂ６０２，Ｃ６０３，Ｄ６０４からの操作イベントを受け付けないようにしても良い。
【０２９１】
以上説明した処理では、アプリケーションのウィンドウを検出して、そのウィンドウが表示されている領域のみを画面共有の共有対象とする実施方法であったが、画面共有クライアントで、画面共有クライアントのウィンドウを、デスクトップ領域を透明とする透過ウィンドウにする処理について、図５７、図５８を用いて説明する。
【０２９２】
図５７にシーケンス、図５８に画面共有クライアントの画面遷移の例を示す。図５８の画面９８１に示されるように、接続前の情報処理装置Ａ６０１のデスクトップ画面上にはアプリケーションＢのウィンドウ８０２が表示されているとする。
【０２９３】
情報処理装置Ｂ６０２のデスクトップの背景色は、黒色に近い色（１６進数で表記したＲＧＢ値：Ｒ＝０ｘ０Ｂ，Ｇ＝０ｘ０４，Ｂ＝０ｘ０８）であるとする。アプリケーションＡのウィンドウ８０１をデスクトップ右側に移動させ、情報処理装置Ａ６０１に表示させようとしているとする。
【０２９４】
図５８では、情報処理装置Ｂ６０２の仮想デスクトップ画面は分かりやすいように白色の網掛け表示しているが、実デスクトップ画面と同じく、背景色はＲＧＢ：０Ｂ０４０８で表わされる色であるとする。
【０２９５】
まず、情報処理装置Ｂ６０２は情報処理装置Ａ６０１とアプリケーションＡのウィンドウ８０１を共有するために仮想デスクトップ画面７２２を生成する。デスクトップ背景を淡色にする必要があるので、壁紙が設定してあれば、その設定を無効にし、壁紙が表示されないようにする。
【０２９６】
次に、情報処理装置Ｂ６０２は、ステップＳ２４０１で、情報処理装置Ａ６０１の画面共有クライアントを自身の画面共有サーバーに接続するように指示を出す。情報処理装置Ａ６０１は指示された通り、ステップＳ２４０２で、画面共有クライアントで情報処理装置Ｂ６０２の画面共有サーバーに接続し、図５８の情報処理装置Ｂ６０２の画面上には情報処理装置Ａ６０１の仮想デスクトップ画面７２２が共有画面として表示される。
【０２９７】
この状態だと、情報処理装置Ｂ６０２のデスクトップ画面のほとんどが情報処理装置Ａ６０１のデスクトップの背景色（ＲＧＢ：０Ｂ０４０８）で塗りつぶされている。
【０２９８】
情報処理装置Ｂ６０２は、クライアントが接続したことを確認すると、情報処理装置Ｂ６０２自身のデスクトップの背景色を、ステップＳ２４０３で情報処理装置Ａ６０１に通知する。すなわちＲＧＢ：０Ｂ０４０８という情報を送信する。
【０２９９】
情報処理装置Ａ６０１は、この情報を受信すると、画面共有クライアントの画面をこのＲＧＢ：０Ｂ０４０８を透明色とした透過ウィンドウにすることにより、情報処理装置Ａのデスクトップ部分が透明になるように表示することが可能となる。
【０３００】
すなわち、図５８の画面９８３のように、情報処理装置Ｂ６０２のデスクトップそのものは共有表示されず、アプリケーションＡのウィンドウ８０１のみが共有表示されるようになる。
【０３０１】
また、情報処理装置Ａ６０１自身が起動しているアプリケーションＢのウィンドウ８０２も、隠れずに表示されるようになる。
【０３０２】
上述した説明において、仮想画面生成部１３１は、仮想画面生成手段に対応する。画面データ取得部１０３は、共有画面取得手段に対応する。画面データ送信部１０４は、共有画面送信手段と選択手段に対応する。画面データ取得部１１３は、共有画面受信手段に対応する。画面データ表示部１１４は、画面表示手段に対応する。ウィンドウ管理部１３０、ウィンドウ制御部１３２は、解除手段に対応する。Ｄ＆Ｄ検出部１２０、１２１は、ドラッグアンドドロップ手段に対応する。入力イベント取得部１１６は、入力情報取得手段に対応する。入力イベント送信部１１５は、入力情報送信手段に対応する。入力イベント発生部１０５は、入力情報発生手段に対応する。入力イベント受信部１０６は、入力情報受信手段に対応する。
【０３０３】
また、ステップＳ５０１は、仮想画面生成段階に対応する。ステップＳ５０６は、共有画面取得段階に対応する。ステップＳ５０７は、共有画面送信段階に対応する。ステップＳ６０２は、共有画面受信段階に対応する。ステップＳ６０３は、共有画面表示段階に対応する。ステップＳ７０２は、共有画面移動変更判断段階に対応する。ステップＳ７０３は、共有画面情報取得段階に対応する。ステップＳ７０４は、共有画面情報送信段階に対応する。ステップＳ８０１は、共有画面情報受信段階に対応する。ステップＳ８０５は、共有画面同期段階に対応する。ステップＳ１４０１は、完全共有判断段階に対応する。ステップＳ１４０３は、通常画面表示段階に対応する。
【図面の簡単な説明】
【０３０４】
【図１】情報処理装置のハードウェア構成図である。
【図２】一般的なファイル転送機能付き画面共有システムの説明図である。
【図３】ドラッグ＆ドロップでファイル転送可能な画面共有システムの説明図である。
【図４】ドラッグ＆ドロップをする様子を示す図である。
【図５】ドラッグ＆ドロップでファイル転送する処理を示すフローチャートである。
【図６】ドラッグ＆ドロップでファイル転送する処理を示すシーケンス図である。
【図７】ドラッグ＆ドロップをする様子を示す図である。
【図８】ドラッグ＆ドロップでファイル転送する処理を示すシーケンス図である。
【図９】実施例１の構成を示す図である。
【図１０】ドラッグ＆ドロップをする様子を示す図である。
【図１１】実施例１の処理を示すシーケンス図である。
【図１２】実施例２の構成を示す図である。
【図１３】実施例２の画面動作を示す図である。
【図１４】実施例２の画面共有サーバーの処理を示すフローチャートである。
【図１５】実施例２の画面共有クライアントの処理を示すフローチャートである。
【図１６】実施例２においてウィンドウを移動した場合の画面例を示す図である。
【図１７】実施例２の画面共有クライアントの遠隔操作動作を示すフローチャートである。
【図１８】実施例２の画面共有サーバーの遠隔操作動作を示すフローチャートである。
【図１９】実施例２の画面動作例を示す図である。
【図２０】実施例２の画面共有サーバーのウィンドウ管理部の処理を示すフローチャートである。
【図２１】実施例２の画面共有サーバーのウィンドウ管理部の処理を示すフローチャートである。
【図２２】実施例２の画面動作例を示す図である。
【図２３】実施例２の画面共有サーバーのウィンドウ管理部の処理を示すフローチャートである。
【図２４】実施例２の画面共有サーバーのウィンドウ管理部の処理を示すフローチャートである。
【図２５】実施例２の画面共有サーバーの処理を示すフローチャートである。
【図２６】実施例２の画面動作を示す図である。
【図２７】実施例３の画面共有サーバーの処理を示すフローチャートである。
【図２８】実施例３の画面動作を示す図である。
【図２９】実施例４の画面共有クライアント・サーバー共通の処理を示すフローチャートである。
【図３０】実施例５の画面動作を示す図である。
【図３１】実施例５の処理を示すシーケンス図である。
【図３２】実施例５の画面共有クライアントの処理を示すシーケンス図である。
【図３３】実施例５の画面動作を示す図である。
【図３４】実施例６の画面動作を示す図である。
【図３５】実施例６の構成を示す図である。
【図３６】実施例６の接続管理部の処理を示すシーケンス図である。
【図３７】実施例６の別の画面動作を示す図である。
【図３８】実施例７の構成と画面を示す図である。
【図３９】実施例７の画面動作を示す図である。
【図４０】実施例７の別の構成と画面を示す図である。
【図４１】実施例７の別の画面動作を示す図である。
【図４２】実施例７の別の構成と画面を示す図である。
【図４３】実施例７の別の構成と画面を示す図である。
【図４４】実施例７の別の構成と画面を示す図である。
【図４５】実施例８の接続管理部の処理を示すシーケンス図である。
【図４６】実施例８の画面動作を示す図である。
【図４７】実施例８の別の接続管理部の処理を示すシーケンス図である。
【図４８】リストを示す図である。
【図４９】実施例９の画面動作を示す図である。
【図５０】実施例９の画面遷移を示す図である。
【図５１】実施例９の接続管理部の処理を示すシーケンス図である。
【図５２】実施例１０の処理を示すシーケンス図である。
【図５３】実施例１０の画面遷移を示す図である。
【図５４】リストを示す図である。
【図５５】実施例１１の画面動作を示す図である。
【図５６】実施例１１の処理を示すシーケンス図である。
【図５７】実施例１１の処理を示すシーケンス図である。
【図５８】実施例１１の画面遷移を示す図である。
【符号の説明】
【０３０５】
２０  演算処理装置
２１  インタフェース装置
２２  入力装置
２３  表示装置
２４  ドライブ装置
２５  記録媒体
２６  補助記憶装置
２７  メモリ装置
１０２、１６２  画面共有サーバー
１０３、１１３  画面データ取得部
１０４  画面データ送信部
１０５  入力イベント発生部
１０６  入力イベント受信部
１０７、１１７  ファイル受送信部
１０８、１１２  プログラムメイン部
１０９、１１１、１６３  ネットワークＩ／Ｆ
１１４  画面データ表示部
１１５  入力イベント送信部
１１６  入力イベント取得部
１１８、１５２  画面共有クライアント
１２０、１２１  Ｄ＆Ｄ検出部
１３０  ウィンドウ管理部
１３１  仮想画面生成部
１３２  ウィンドウ制御部
１５０  クライアント間通信部
１５１  モジュール群
５０１、５０２、５２１  ファイラー
５０３、５０５  ファイル
５００、５０４、５３０、５３１、５３５、５４８  画面
５３２、９０１、９０２、９０３、９０４  共有画面
５３３、５４５、５４６、８０１、８０２、８０３、８０４  ウィンドウ
５４０  ローカル画面
５４７  接続管理部
５４９  画面共有マネージャー
６０１  情報処理装置Ａ
６０２  情報処理装置Ｂ
６０３  情報処理装置Ｃ
７０１、７０２、７０３  実デスクトップ画面
７２１、７２２、７２３、７２４、７２５、９５２、９５３、９５４、９５５  仮想デスクトップ画面
【図１】
2006172193.tif 000003
【図２】
2006172193.tif 000004
【図３】
2006172193.tif 000005
【図５】
2006172193.tif 000006
【図６】
2006172193.tif 000007
【図８】
2006172193.tif 000008
【図９】
2006172193.tif 000009
【図１１】
2006172193.tif 000010
【図１２】
2006172193.tif 000011
【図１４】
2006172193.tif 000012
【図１５】
2006172193.tif 000013
【図１７】
2006172193.tif 000014
【図１８】
2006172193.tif 000015
【図２０】
2006172193.tif 000016
【図２１】
2006172193.tif 000017
【図２３】
2006172193.tif 000018
【図２４】
2006172193.tif 000019
【図２５】
2006172193.tif 000020
【図２７】
2006172193.tif 000021
【図２９】
2006172193.tif 000022
【図３１】
2006172193.tif 000023
【図３２】
2006172193.tif 000024
【図３５】
2006172193.tif 000025
【図３６】
2006172193.tif 000026
【図４５】
2006172193.tif 000027
【図４７】
2006172193.tif 000028
【図４８】
2006172193.tif 000029
【図５１】
2006172193.tif 000030
【図５２】
2006172193.tif 000031
【図５４】
2006172193.tif 000032
【図５６】
2006172193.tif 000033
【図５７】
2006172193.tif 000034
【図４】
2006172193.tif 000035
【図７】
2006172193.tif 000036
【図１０】
2006172193.tif 000037
【図１３】
2006172193.tif 000038
【図１６】
2006172193.tif 000039
【図１９】
2006172193.tif 000040
【図２２】
2006172193.tif 000041
【図２６】
2006172193.tif 000042
【図２８】
2006172193.tif 000043
【図３０】
2006172193.tif 000044
【図３３】
2006172193.tif 000045
【図３４】
2006172193.tif 000046
【図３７】
2006172193.tif 000047
【図３８】
2006172193.tif 000048
【図３９】
2006172193.tif 000049
【図４０】
2006172193.tif 000050
【図４１】
2006172193.tif 000051
【図４２】
2006172193.tif 000052
【図４３】
2006172193.tif 000053
【図４４】
2006172193.tif 000054
【図４６】
2006172193.tif 000055
【図４９】
2006172193.tif 000056
【図５０】
2006172193.tif 000057
【図５３】
2006172193.tif 000058
【図５５】
2006172193.tif 000059
【図５８】
2006172193.tif 000060