(57)【要約】  本発明は、第１のコンピューティング装置と第２のコンピューティング装置との間でファイルを転送するための方法を提供する。上記方法は、上記第１のコンピューティング装置に関連する第１のユーザインターフェースを提供するステップと、上記第２のコンピューティング装置に記憶されたファイルに関連する少なくとも１つのオブジェクトを表示するように設けられる遠隔スクリーンインターフェースを上記第１のユーザインターフェース上に表示するステップと、上記第１のコンピューティング装置のユーザが上記オブジェクトを上記遠隔スクリーンインターフェースの所定のエリアに移動させることに応答して、上記少なくとも１つのオブジェクトに関連する上記ファイルを上記第１のコンピューティング装置に転送するステップとを含む。
2010539567.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピューティング装置と第２のコンピューティング装置との間でファイルを転送するための方法において、
上記方法は、
上記第１のコンピューティング装置に関連する第１のユーザインターフェースを提供するステップと、
上記第２のコンピューティング装置に記憶されたファイルに関連する少なくとも１つのオブジェクトを表示するように設けられる遠隔スクリーンインターフェースを上記第１のユーザインターフェース上に表示するステップと、
上記第１のコンピューティング装置のユーザが上記オブジェクトを上記遠隔スクリーンインターフェースの所定のエリアに移動させることに応答して、上記少なくとも１つのオブジェクトに関連する上記ファイルを上記第１のコンピューティング装置に転送するステップとを含む方法。
【請求項２】
上記所定のエリアは、上記遠隔スクリーンインターフェースの少なくとも１つの縁に沿って位置する請求項１記載の方法。
【請求項３】
上記所定のエリアは、上記遠隔スクリーンインターフェースを内側に囲む境界ボックスである請求項２記載の方法。
【請求項４】
上記境界ボックスは、上記遠隔スクリーンインターフェースのそれぞれの縁に沿って１ピクセル幅の領域を備える請求項３記載の方法。
【請求項５】
上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置に関連する第２のユーザインターフェースの少なくとも１つの部分を複製する請求項１から４のうちのいずれか１つの請求項記載の方法。
【請求項６】
上記転送されたファイルに関連する第２のオブジェクトを上記第１のユーザインターフェースに表示するステップをさらに含む請求項１から５のうちのいずれか１つの請求項記載の方法。
【請求項７】
上記第２のオブジェクトは、上記第１のオブジェクトと同一である請求項６記載の方法。
【請求項８】
上記転送されたファイルをロードし／実行するステップをさらに含み、上記ロードされた／実行されたファイルに関連するデータが上記第１のユーザインターフェースに表示される請求項１から７のうちのいずれか１つの請求項記載の方法。
【請求項９】
少なくとも１つの上記オブジェクト及び実行された／ロードされたファイルを上記第１のユーザインターフェースに、上記オブジェクトが上記所定のエリアに入った領域に近接して表示するステップをさらに含み、上記オブジェクトが上記遠隔スクリーンインターフェースから上記第１のユーザインターフェースに途切れなく渡されるように出現する請求項５から８のうちのいずれか１つの請求項記載の方法。
【請求項１０】
上記オブジェクトは、上記関連するファイルを表すアイコンである請求項１から９のうちのいずれか１つの請求項記載の方法。
【請求項１１】
上記オブジェクトを移動させる上記ステップは、ユーザのジェスチャ、スタイラス、及びマウスのうちの少なくとも１つを用いて、上記オブジェクトを上記所定のエリアにドラッグすることを含む請求項１から１０のうちのいずれか１つの請求項記載の方法。
【請求項１２】
上記第１のコンピュータ及び第２のコンピュータは、仮想ディスプレイプロトコルを用いて通信して、上記遠隔スクリーンインターフェースを提供する請求項１から１１のうちのいずれか１つの請求項記載の方法。
【請求項１３】
上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置によって提供される対話型のフレームバッファの画像である請求項１から１２のうちのいずれか１つの請求項記載の方法。
【請求項１４】
第１のコンピューティング装置と第２のコンピューティング装置との間でファイルを転送するためのシステムにおいて、
上記システムは、
上記第１のコンピューティング装置に関連し、かつ上記第２のコンピューティング装置に記憶されたファイルに関連する少なくとも１つのオブジェクトを表示する遠隔スクリーンインターフェースを表示するように設けられた第１のユーザインターフェースと、
上記第１のコンピューティング装置のユーザが上記オブジェクトを上記遠隔スクリーンインターフェースの所定のエリアに移動させることに応答して、少なくとも１つのオブジェクトに関連する上記ファイルを上記第１のコンピューティング装置に転送するように設けられた転送モジュールとを備えるシステム。
【請求項１５】
上記所定のエリアは、上記遠隔スクリーンインターフェースの少なくとも１つの縁に沿って位置する請求項１４記載のシステム。
【請求項１６】
上記所定のエリアは、上記遠隔スクリーンインターフェースを内側に囲む境界ボックスである請求項１５記載のシステム。
【請求項１７】
上記境界ボックスは、上記遠隔スクリーンインターフェースのそれぞれの縁に沿って１ピクセル幅の領域を備える請求項１６記載のシステム。
【請求項１８】
上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置に関連する第２のユーザインターフェースの少なくとも１つの部分を複製する請求項１４から１７のうちのいずれか１つの請求項記載のシステム。
【請求項１９】
上記転送されたファイルに関連する第２のオブジェクトは、上記第１のユーザインターフェースに表示される請求項１４から１８のうちのいずれか１つの請求項記載のシステム。
【請求項２０】
上記第２のオブジェクトは、上記第１のオブジェクトと同一である請求項１９記載のシステム。
【請求項２１】
上記転送されたファイルをロードし／実行するように設けられた処理モジュールをさらに備え、上記ロードされた／実行されたファイルに関連するデータが上記第１のユーザインターフェースに表示される請求項１４から２０のうちのいずれか１つの請求項記載のシステム。
【請求項２２】
コンピュータシステムのコンピュータ読み取り可能な媒体に実装されたときに、上記コンピュータシステムに請求項１から１３のうちのいずれか１つの請求項記載の方法を実行させる少なくとも１つの命令を備えるコンピュータプログラム。
【請求項２３】
請求項２２記載のコンピュータプログラムを提供するコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つ又はそれ以上のコンピューティング装置の間で電子ファイルを転送するシステム及び方法に関し、特に、対話型のデスクトップインターフェースを提供するコンピュータに／からマルチメディアファイルを転送するシステム及び方法に関するが、これに限らない。
【背景技術】
【０００２】
２つ又はそれ以上のコンピュータの間で電子ファイルを転送することがしばしば必要である。ファイル転送を達成するために使用されるさまざまな転送プロトコルが存在する。一般的な通信プロトコルとは異なり、ファイル転送プロトコルは、ビットのストリームを、典型的にネットワークを介して、ソースのコンピューティングシステムから宛先又は目標のコンピューティングシステムに送信するように設計される。ファイルは、ファイルシステムにおける単一ユニットとして目標のコンピューティングシステムに、任意の関連するメタデータ（例えば、ファイルサイズ、ファイル名など）とともに記憶される。
【０００３】
このような転送プロトコルの１つは、「ファイル転送プロトコル」又は「ＦＴＰ」であり、これは、ＴＣＰ／ＩＰネットワークを介してファイルを転送するために一般的に使用されている。ＦＴＰのファイル転送に含まれる２つのコンピュータ、すなわちサーバコンピュータ及びクライアントコンピュータが存在する。ある構成では、クライアントコンピュータは、クライアントコンピュータのユーザが、ファイルをサーバコンピュータにアップロードする又はサーバコンピュータからダウンロードする、ファイル名を編集する、ファイルを削除するなどの多数のファイル操作オペレーションを実行することを可能にするグラフィックのユーザインターフェースを表示する。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Margaret R．Minsky, "Manipulating simulated objects with real-world gestures using a force and position sensitive screen", SIGGRAPH Computer Graphics, 18 (3), pp. 195-203, 1984. ISSN0097-8930. doi: http://doi.acm.org/10.1145/800031.808598
【発明の概要】
【発明が解決しようとする課題】
【０００５】
これらのタイプのファイル転送技術の欠点は、複雑な行動がファイル転送（すなわち、アップロード又はダウンロード）を開始するために典型的に必要とされることである。例えば、ユーザは、ファイルを位置付け、かつファイルがどこに送信されるべきかを指定するために、非常に長いコード／命令を入力する必要がある。
【課題を解決するための手段】
【０００６】
第１の態様では、本発明は、第１のコンピューティング装置と第２のコンピューティング装置との間でファイルを転送するための方法を提供し、上記方法は、上記第１のコンピューティング装置に関連する第１のユーザインターフェースを提供するステップと、上記第２のコンピューティング装置に記憶されたファイルに関連する少なくとも１つのオブジェクトを表示するように設けられる遠隔スクリーンインターフェースを上記第１のユーザインターフェース上に表示するステップと、上記第１のコンピューティング装置のユーザが上記オブジェクトを上記遠隔スクリーンインターフェースの所定のエリアに移動させることに応答して、上記少なくとも１つのオブジェクトに関連する上記ファイルを上記第１のコンピューティング装置に転送するステップとを含む。
【０００７】
本明細書の文脈では、用語「ファイル」は、広く解釈されること、及びコンピューティングシステムによって利用可能である任意のデータの任意のブロックをその範囲に含むことを意図している。例えば、ファイルは、マルチメディアファイル（例えば、オーディオファイル、ビデオファイル、データファイルなど）を含んでもよい。さらに、ファイルは、符号化されたファイル又は暗号化されたファイルであってもよい。
【０００８】
一実施形態では、上記所定のエリアは、上記遠隔スクリーンインターフェースの少なくとも１つの縁（エッジ又は外縁）に沿って位置する。例えば、上記所定のエリアは、上記遠隔スクリーンインターフェースを内側に囲む境界ボックス（bounding box）であってもよい。一実施形態では、上記境界ボックスは、上記遠隔スクリーンインターフェースのそれぞれの縁に沿って１ピクセル幅の領域を備える。これは有利に、ユーザが所望のオブジェクトを所定のエリアに単純にドラッグして、ファイル転送を達成することを可能にする。
【０００９】
一実施形態では、上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置に関連する第２のユーザインターフェースの少なくとも１つの部分を複製する。上記遠隔スクリーンインターフェースは、上記第２のコンピュータによって提供されるフレームバッファのデータに基づいて生成されてもよい。一実施形態では、上記遠隔スクリーンインターフェースは、有利に、上記ファイル転送を上記第１のコンピュータによって制御するための対話型のインターフェースとして動作してもよい。
【００１０】
一実施形態では、上記方法は、上記転送されたファイルに関連する第２のオブジェクトを上記第１のユーザインターフェースに表示するステップをさらに含む。上記第２のオブジェクトは、上記第１のオブジェクトと同一であってもよい。例えば、上記オブジェクトは、上記ファイル転送を達成するために遠隔スクリーンインターフェース上で操作されるファイルに関連するアイコンであってもよい。
【００１１】
一実施形態では、上記方法は、上記転送されたファイルをロードし／実行するステップをさらに含み、上記ロードされた／実行されたファイルに関連するデータが上記第１のユーザインターフェースに表示される。一実施形態では、上記方法は、少なくとも１つの上記オブジェクト及び実行された／ロードされたファイルを上記第１のユーザインターフェースに、上記オブジェクトが上記所定のエリアに入った領域に近接して表示するステップをさらに含み、上記オブジェクトが上記遠隔スクリーンインターフェースから上記第１のユーザインターフェースに途切れなく渡されるように出現する。
【００１２】
一実施形態では、上記オブジェクトを移動させる上記ステップは、ユーザのジェスチャ、スタイラス、及びマウスのうちの少なくとも１つを用いて、上記オブジェクトを上記所定のエリアにドラッグすることを含む。上記ユーザのジェスチャは、例えば、ユーザによって実行される手又は指の移動であってもよい。
【００１３】
一実施形態では、上記第１のコンピュータ及び第２のコンピュータは、仮想ディスプレイプロトコル（virtual display protocol）を用いて通信して、上記遠隔スクリーンインターフェースを提供する。例えば、上記仮想ディスプレイプロトコルは、仮想ネットワーク制御（ＶＮＣ）プロトコルを含んでもよい。
【００１４】
一実施形態では、上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置によって提供される対話型のフレームバッファの画像である。
【００１５】
第２の態様によれば、本発明は、第１のコンピューティング装置と第２のコンピューティング装置との間でファイルを転送するためのシステムを提供し、上記システムは、上記第１のコンピューティング装置に関連し、かつ上記第２のコンピューティング装置に記憶されたファイルに関連する少なくとも１つのオブジェクトを表示する遠隔スクリーンインターフェースを表示するように設けられた第１のユーザインターフェースと、上記第１のコンピューティング装置のユーザが上記オブジェクトを上記遠隔スクリーンインターフェースの所定のエリアに移動させることに応答して、少なくとも１つのオブジェクトに関連する上記ファイルを上記第１のコンピューティング装置に転送するように設けられた転送モジュールとを備える。
【００１６】
一実施形態では、上記所定のエリアは、上記遠隔スクリーンインターフェースの少なくとも１つの縁に沿って位置する。上記所定のエリアは、上記遠隔スクリーンインターフェースを内側に囲む境界ボックスであってもよい。一実施形態では、上記境界ボックスは、上記遠隔スクリーンインターフェースのそれぞれの縁に沿って１ピクセル幅の領域を備える。
【００１７】
一実施形態では、上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置に関連する第２のユーザインターフェースの少なくとも１つの部分を複製する。上記転送されたファイルに関連する第２のオブジェクトは、上記第１のユーザインターフェースに表示されてもよい。上記第２のオブジェクトは、上記第１のオブジェクトと同一であってもよい。
【００１８】
上記システムは、上記転送されたファイルをロードし／実行するように設けられた処理モジュールをさらに備えてもよく、上記ロードされた／実行されたファイルに関連するデータが上記第１のユーザインターフェースに表示される。
【００１９】
第３の態様によれば、本発明は、コンピュータシステムのコンピュータ読み取り可能な媒体に実装されたときに、上記コンピュータシステムに第１の態様に係る方法を実行させる少なくとも１つの命令を備えるコンピュータプログラムを提供する。
【００２０】
第４の態様によれば、本発明は、第３の態様に係るコンピュータプログラムを提供するコンピュータ読み取り可能な媒体を提供する。
【００２１】
本発明の特徴及び利点が、添付の図面を参照して単なる例としての実施形態の説明から明らかとなるであろう。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係るコンピューティング装置の間でファイルを転送するシステムの概略図である。
【図２】本発明の実施形態に係る図１のシステムを用いてファイルを転送する方法のステップを示すフローチャートである。
【図３】遠隔スクリーンインターフェースを表示するユーザインターフェースのスクリーンショットである。
【図４】図３に示した遠隔スクリーンインターフェースを更新するイベントハンドリング処理のフローを示す。
【図５】本発明の実施形態に係る運動量のグラフのコラボレーション図である。
【図６】システム及び方法の実施形態の例示的な実装を示すスクリーンショットである。
【図７】システム及び方法の実施形態の例示的な実装を示すスクリーンショットである。
【図８】システム及び方法の実施形態の例示的な実装を示すスクリーンショットである。
【図９】システム及び方法の実施形態の例示的な実装を示すスクリーンショットである。
【図１０】本発明の実施形態に係るレイアウトオブジェクトのためのコラボレーション図である。
【発明を実施するための形態】
【００２３】
以下の説明では、本発明の実施形態が、（圧縮されたビデオ及び画像ファイルなどの）マルチメディアファイルを、ローカルエリアネットワーク（ＬＡＮ）の形式で通信ネットワークを介して遠隔に接続された２つのコンピュータの間で転送するシステム及び方法の文脈で説明される。しかしながら、本発明は、本明細書で説明される例示的なアプリケーションに制限されないこと、及び任意の形式の電子ファイルを任意の数及び任意の構成のコンピューティングシステムの間で転送することに等しく適用可能であることが理解されるであろう。
【００２４】
図１及び図２を参照すると、マルチメディアファイルが、それぞれ表面実装のタッチスクリーンディスプレイ１０９を含むパーソナルコンピュータ１０２（以下、「テーブルトップコンピュータ」という。）、及びラップトップコンピュータ１０４の形式である、２つのコンピューティング装置の間で転送される。以下で説明する実施形態では、ラップトップコンピュータ１０４は、転送するためのマルチメディアファイルを提供する「ホスト」コンピュータとして機能する一方、テーブルトップコンピュータは、ファイルを受信するように構成された「クライアント」コンピュータとして機能する。
【００２５】
コンピュータ１０２，１０４は、ＬＡＮ１０６の形式の通信ネットワークを介して接続され、かつＴＣＰ／ＩＰプロトコルなどのパケット交換プロトコルを用いて通信する。テーブルトップコンピュータ１０２は、表面実装ディスプレイ１０９上に提供される第１のユーザインターフェース１１１を含む。第１のユーザインターフェースは、テーブルトップコンピュータ１０２によって記憶されたマルチメディアファイルを表示し、かつファイル及びそれらに関連するオブジェクト／アイコンを操作するコマンドを受信するように設けられたグラフィカルユーザインターフェース（ＧＵＩ）である。本実施形態ではラップトップコンピュータ１０４によって生成されたマイクロソフトウィンドウズ（登録商標）ファイルエクスプローラのウィンドウである対話型の遠隔スクリーンインターフェース１１３（以下、「遠隔スクリーン」という。）がさらに、第１のユーザインターフェース１１１上に表示される（図２のステップ２０２）。ファイルエクスプローラのウィンドウは、ラップトップコンピュータ１０４に記憶されたマルチメディアファイルに関連するアイコンの形式でオブジェクトを含む。遠隔スクリーン１１３を表示する第１のユーザインターフェース１１１のスクリーンショットの例が図３に示される。
【００２６】
マルチメディアファイルをラップトップコンピュータ１０４からテーブルトップコンピュータ１０２に転送するために、テーブルトップコンピュータ１０２のユーザは、転送されるべきファイルに関連するアイコンを（スタイラス、マウス、手などを用いて）遠隔スクリーン１１３の所定のエリアにドラッグする又ははじく（ステップ２０４）。（「はじくこと（flicking）」は、非特許文献１で説明されており、参照により本明細書に含まれる。）本明細書で説明される実施形態では、所定のエリアは、境界ボックスであり、境界ボックスは、遠隔スクリーン１１３を内側に囲み、かつ一般に、図３において矢印「Ａ」によって示される。アイコンが境界ボックスに入ったことを決定すると、ラップトップコンピュータ１０４は、アイコンに関連するマルチメディアファイルをテーブルトップコンピュータ１０２にローカルエリアネットワーク１０６を介して自動的に転送する（ステップ２０６）。
【００２７】
上述した方法を実装するように設けられたシステムの構成要素の詳細な説明が、ここで提供される。
【００２８】
上記で議論したように、第１のコンピューティング装置は、とりわけテーブルトップコンピュータ１０２のユーザによる鑑賞及び操作のためにマルチメディアファイルを受信しかつ表示するように機能する第１のユーザインターフェースを提供するテーブルトップコンピュータ１０２の形式である。
【００２９】
この機能性を実行するために、テーブルトップコンピュータ１０２は、マザーボード１１０、中央処理装置１１２、ランダムアクセスメモリ１１４、ハードディスク１１６、及びネットワークハードウェア１１８を含むコンピュータハードウェアを備える。テーブルトップコンピュータ１０２はまた、画像（すなわち、第１のユーザインターフェース）をテーブルトップの表面上に投影するプロジェクタの形式でディスプレイ１０９を含む。１人又はそれ以上のユーザは、第１のユーザインターフェース１１１上に表示されたオブジェクトを操作するために、入力を介して第１のユーザインターフェース１１１と相互作用することができる。インターフェース１１１への入力は、画像が投影されるテーブルトップの接触感知面（touch sensitive surface）によって提供される。ハードウェアに加えて、テーブルトップコンピュータ１０２は、ハードディスク上に存在し、かつハードウェアと協働して、ソフトウェアアプリケーションが実行される環境を提供する（マイクロソフトコーポレーションによって製造されているマイクロソフトウィンドウズ（登録商標）ＸＰオペレーティングシステムなどの）オペレーティングシステムを含む。
【００３０】
この点で、テーブルトップコンピュータ１０２のハードディスク１１６は、仮想ディスプレイプロトコルにしたがって動作する仮想ネットワークコンピューティング（ＶＮＣ）クライアントアプリケーションの形式でクライアント通信モジュールを有する。ＶＮＣクライアントアプリケーションは、テーブルトップコンピュータ１０２が準拠したＶＮＣサーバアプリケーション（例えば、ＲｅａｌＶＮＣ、ＴｉｇｈｔＶＮＣ、Ｘ１１ｖｎｃなど）を有する任意の数のホストコンピュータと通信することを可能にする。具体的には、ＶＮＣクライアントアプリケーションは、遠隔スクリーン１１３を生成しかつ表示するために、（現在説明している実施形態では、ラップトップコンピュータ１０４である）ホストコンピュータから受信されるフレームバッファの画像データを利用するように設けられる。複数のホストコンピュータが接続される場合、それぞれのフレームバッファの画像は、ユーザインターフェース１１１に表示されたそれ自体の遠隔スクリーンに出現する。ＶＮＣクライアントアプリケーションはまた、ＶＮＣパスワード認証方法をサポートし、それによって、設定されたパスワードが構成ファイルにセーブされ、かつ３ＤＥＳ暗号などのチャレンジ−レスポンス機構によって認証される。一実施形態では、ＶＮＣクライアントアプリケーションは、ロー符号化（raw encoding）、コピーレクタングル符号化（copy rectangle encoding）、ライズアンドランレングス符号化（rise and run-length encoding）（ＲＲＥ）、及びＣｏＲＲＥ更新機構をサポートする。テーブルトップコンピュータ１０２はまた、ラップトップコンピュータ１０４から送信されるマルチメディアファイルを受信するための（ＴＣＰ／ＩＰソケットなどの）標準的なソフトウェア及びハードウェアを含む受信モジュールを含む。
【００３１】
第２のコンピューティング装置１０４（すなわち、「ホストコンピュータ」）は、ラップトップコンピュータ１０４の形式である。ラップトップコンピュータ１０４は本質的に、テーブルトップコンピュータ１０２と同一のハードウェア（すなわち、マザーボード、中央処理装置、ランダムアクセスメモリ、ハードディスク又は他の同様の記憶装置、ディスプレイ、及びユーザ入力）を備える。ラップトップコンピュータ１０４はまた、マイクロソフトウィンドウズ（登録商標）ＸＰオペレーティングシステムを利用する。ラップトップコンピュータ１０４のハードディスクは、ＶＮＣサーバアプリケーションの形式でホスト通信モジュールを有する。ＶＮＣサーバアプリケーションは主として、ラップトップコンピュータ１０４が、そのスクリーン（説明している実施形態では、ラップトップコンピュータ１０４に記憶されたファイルに関連するオブジェクトを表示するマイクロソフトウィンドウズファイルエクスプローラのウィンドウである。）をテーブルトップコンピュータ１０２と遠隔スクリーン１１３によって共有することを可能にするように機能する。ウィンドウズアプリケーションプログラミングインターフェース「ＷｉｎＡＰＩ」プログラムの形式である決定モジュールはまた、いつファイル転送イベントが要求されるかを決定するために、ラップトップのハードディスクにロードされる。本明細書で説明される実施形態では、ＷｉｎＡＰＩプログラムは、オブジェクトがラップトップのスクリーンディスプレイの縁の上にドラッグされたかを決定するコードを含む。ＷｉｎＡＰＩプログラムからの肯定の指示に応答して、オブジェクトに関連するマルチメディアファイルが、テーブルトップコンピュータ１０２にＬＡＮ１０６を介して通信により送信される。この転送を実行するサンプルのコードが「付録Ｂ」で提供される。
【００３２】
追加のメタデータがまた、ファイルとともに送信されて、転送されたファイルに関連する第２のオブジェクトが第１のユーザインターフェース１１１上に表示されることを可能にする。一実施形態では、第２のオブジェクトは、第１のオブジェクトと同一のである。例えば、ファイルがＪＰＥＧ画像ファイルである場合、第１のオブジェクト及び第２のオブジェクトは、圧縮された画像のサムネイルを表示するアイコンであってもよい。
【００３３】
クライアント通信モジュール並びにホスト通信モジュール及び決定モジュールは、遠隔スクリーン１１３を提供するように動作し、かつオブジェクトがラップトップディスプレイスクリーンの所定のエリア「Ａ」に入ると、マルチメディアファイルの転送を指示するように動作する。一実施形態では、処理は、ラップトップコンピュータ１０４との接続をテーブルトップコンピュータ１０２にロードされるＶＮＣアプリケーションを利用して確立しかつ認証し、かつフレームバッファ更新リクエストに応答してフレームバッファの更新を待機する第１のステップを含む。フレームバッファの更新が到着するとき、システムメモリに記憶された隠されたフレームバッファは更新され、かつすべての部分更新の境界ボックスが収集される。フレームバッファ更新リクエストが完了するとき、更新されたピクセルデータの単一の長方形のブロックは、（幅寸法及び高さ寸法のそれぞれにおいて半分にすることによって）徐々により小さいバージョンを生成することによって、ミップマップテクスチャに処理され、更新された領域の正確な表現が、局所的に表示されるフレームバッファ「写真」のサイズに関わらず表示されることを可能にする。当業者には容易に理解されるように、ミップマップは、表面のテクスチャを表し、かつレンダリングの速度を増加させ、アーチファクトを減少させるために使用されるテクスチャを伴うビットマップ画像の最適化された集合である。この処理が完了すると、低い優先度のイベントが、テクスチャ及びミップマップの更新への参照とともに主要な待ち行列に追加される。これは、遠隔スクリーン上の更新されたフレームバッファの領域を局所的に表示するために実行される。
【００３４】
上述した方法のためのイベントハンドリング処理を示すフローチャートが、図４に示される。（例えば、３次元ゲームなどのための）従来のイベントハンドリング処理とは異なり、本発明の実施形態のイベントハンドリング処理は、連続的に実行されない。代わりに、イベントハンドリング処理は、処理ステップを実行する前にイベントを待機する。これは、ディスクの画像のロード及びそれらのミップマップテクスチャへの変換を処理する実行スレッドが、利用可能な最大のＣＰＵ時間を与えられる環境を提供する。連続的に再描画して動的な環境を反映する従来の処理と対照的に、図４に示したイベントハンドリング処理は、相互作用が発生していない間（及びより小さなスケールでは、イベントの間）には、動作しない。これは有利に、処理が、相互作用への最小の割り込みでバックグラウンドにおいてテクスチャをロードすることを可能にする。処理は、画像を含む新しいドライブが検出されたとき、及びフレームを用いる新しい画像が捕捉されたときの両方で、テクスチャを生成しかつロードするので、システムは、テクスチャが前処理されかつテクスチャメモリにロードされる任意の時間をブロックしない。並行スレッドでテクスチャを前処理することによって、システムは、相互作用における顕著な中断なしに、新しい画像をロードすることができる。
【００３５】
上述した実施形態についての代替の実施形態では、第１のコンピューティング装置１０２が、ホストコンピューティング装置として構成される。この実施形態では、第１のコンピューティング装置（以下、「ホストコンピュータ」という。）は、ホスト通信モジュール及び決定モジュールを備え、かつファイルを１つ又はそれ以上の第２のコンピューティング装置（すなわち、クライアントコンピュータ）に転送するように設けられる。クライアントコンピュータはそれぞれ、ホストコンピュータが位置する部屋の様々な壁に位置する立体「データウォール（data wall）」ディスプレイの形式でディスプレイユニットを含む。
【００３６】
上述した方法／システムとさらに対照的に、遠隔スクリーンは、第１のユーザインターフェース上に生成されない。代わりに、所定のエリアは、ホストコンピュータのユーザインターフェースの端を囲む境界ボックスである。決定モジュールが、ユーザインターフェース上に提供されたオブジェクトが境界ボックス上へドラッグされた、又ははじかれたと決定することに応答して、決定モジュールは、オブジェクトが境界ボックスに入った点に物理的に最も近いデータウォールを有するクライアントコンピュータに、オブジェクトに関連するファイルを転送する。その後、ファイル及び／又は転送されたファイルに関連するオブジェクトは、クライアントコンピュータのデータウォールに表示されてもよい。境界制限を決定するサンプルのコードが、この詳細な説明に続く「付録Ａ」で提供される。
【００３７】
図５を参照して、ここで決定モジュールが詳細に説明される。オブジェクトが所定のエリアに入ったときに決定するタスクを実行するために、決定モジュールは、運動量のグラフ５００において、それぞれのオブジェクトのための位置、速度ベクトル、及び加速度ベクトルとともに、それぞれのオブジェクトへのポインタを維持する。オブジェクトの位置が更新されるごとに、決定モジュールは、運動量のグラフ５００に記憶された情報を利用して、オブジェクトが所定のエリア（本明細書で説明される実施形態では、境界ボックスである。）に存在するかを決定する。オブジェクトが境界ボックス内部に存在することが決定された場合、転送ルーチンは、オブジェクトに関連するファイルを転送するために呼び出される。一実施形態では、決定モジュールによって提供されるアニメーションプログラムは、転送されるファイル／オブジェクトが、クライアントコンピュータのディスプレイ上の推定された位置から移動し、アイコンがディスプレイを満たすようにアイコンを拡大することを見せる３次元アニメーションを提供する。アニメーションプログラムはまた、立体画像ファイル、及び動く「回転木馬」スライドショーをサポートしてもよいことが予想される。
【００３８】
ここで、上述した方法／システムの例示的な実装が、図６乃至９のスクリーンショットを参照して説明されるであろう。
【００３９】
例１「提示のために遠隔ディスプレイに転送する」（図６）
【００４０】
この例示的な実施形態では、（この実施形態では、ホストコンピュータとして動作する）テーブルトップコンピュータのユーザが、テーブルトップのユーザインターフェース６００上に現在表示されている画像を、多くの聴衆に「壁掛け（wall mount）」ディスプレイ（図示せず。）を用いて提示することを望む。壁掛けディスプレイは、クライアントコンピュータに関連するプロジェクタスクリーンによって提供される。プロジェクタスクリーンに画像を表示するために、ユーザは、壁掛けディスプレイに対して最も物理的に近くに位置するユーザインターフェース６００の縁に、画像に関連するオブジェクト６０２をドラッグする又ははじく。オブジェクトがその縁の上の境界ボックス６０４に入るとき、画像に関連するファイルがクライアントコンピュータに送信され、かつプロジェクタ上への表示のためにロードされる。
【００４１】
例２「スライドショー」（図７）
【００４２】
（再び、ホストコンピュータとして動作する）テーブルトップコンピュータのユーザが、写真画像７０２をテーブルトップのユーザインターフェース７００から画像のスライドショーを実行する適切なソフトウェアを含むデジタル画像フレームの形式のクライアントコンピュータに転送することを望む。スライドショーで提示されるべき画像７０２は、ユーザインターフェースの縁に渡され、その結果、それらは境界ボックス７０４に入る。境界ボックス上に画像７０２をドラッグすることは、決定モジュールに、これらの画像をスライドショーに含めるようにデジタル画像フレームに指示させる。反対に、境界ボックスから外に画像をドラッグすることは、決定モジュールに、これらの画像６０２をスライドショーから除去するようにデジタル画像フレームに指示させる。
【００４３】
例３「オーディオメッセージを送信する」（図８）
【００４４】
この状況では、テーブルトップコンピュータのユーザは、マルチメディアメッセージ（例えば、オーディオ、ビデオ、又は組み合わせられたオーディオ−ビデオ）を、テーブルトップのユーザインターフェース８００上に表示されたオブジェクトに関連する人に送信する。例えば、オブジェクトは人の写真画像であってもよい。（例えば、画像上に留まる（dwell）ことによって）写真画像８０５上でジェスチャすることは、テーブルトップコンピュータにロードされた記録プログラムに、付属のマイクロフォンを用いて記録を開始させる。そのマイクロフォンは、（ＵＲＬ  ｈｔｔｐ：／／ｗｗｗ．ｐｏｒｔａｕｄｉｏ．ｃｏｍでインターネットから利用可能な）クロスプラットフォームのポートオーディオ（ＰｏｒｔＡｕｄｉｏ）ＡＰＩを用いてアクセスされる。所望のメッセージがユーザによって記録されると、ジェスチャは再び、（ＷＡＶファイルなどのマルチメディアファイルとしてディスク上にセーブされた）メッセージをオブジェクトに添付させる。同時に、記憶されたマルチメディアファイルは、マルチメディアファイルの伝送を管理することに関与するもう１つのコンピュータに（例えば、「付録Ｂ」で提供されたものと同様であるが、人のための識別子を含んだヘッダを有するコードを用いて、）送信される。
【００４５】
コンピュータは、人を示すそれぞれの画像ファイルに続いて、セーブされたマルチメディア添付ファイルをテーブルトップコンピュータに（再び、「付録Ｂ」のサンプルのコードと同様の方法を用いて）送信する。ユーザインターフェース８００上では、オーディオアイテムの表現８０６は、（画像を反転する（裏返す）ことによって表示可能な）写真画像の裏面で見られる。
【００４６】
反対に、ユーザは、マルチメディアメッセージを受信してもよい。この実施形態では、ユーザインターフェース８００は、受信されたマルチメディアメッセージをメッセージを送信したユーザに関連する写真画像８０５の裏面に自動的に添付するであろう。受信されたメッセージは、受信されたメッセージを示す異なる色で写真画像に添付されてもよい。マルチメディアメッセージは、画像８０５上でジェスチャする又は留まることによって再生されてもよい。
【００４７】
これを達成するために、テーブルトップコンピュータは、伝送の管理に関与するクライアントコンピュータからのメッセージを聞く。初期状態の「人」画像及びメディア添付ファイルをロードした後、新しいメディアアイテムをそれらが添付されるべき人のための識別子とともに受信するＴＣＰ「サーバ」ソケットがセットアップされる。その後、それらは、写真画像８０５の裏面に置かれるオブジェクトになり、かつ画像を反転することによって見られる。
【００４８】
さらに詳細に、写真画像などのユーザインターフェース８００に位置するオブジェクトは、それらに関連するレイアウトを有してもよい（図１０参照。）。このレイアウトは、子オブジェクトの集合（ｃｏｌｌ）を含む。オブジェクトがインターフェース上で移動されるごとに、通信モジュールは、オブジェクトが、裏面が可視にされたオブジェクトに添付されるべきかを確認する。オブジェクトが添付されることになる場合、オブジェクトは、子オブジェクトの集合に追加され、その後、第２のコンピューティング装置に送信される。同様に、オブジェクトが除去されることになるとき、「除去」メッセージが第２のコンピューティング装置に送信される。添付されたメディアの内容に加えて、オブジェクトが添付されたオブジェクトのための識別子がまた、第２のコンピューティング装置に送信される。さらに、それぞれのオブジェクトは、オブジェクトが添付されたマルチメディアファイルをそれに送信する異なる第２のコンピューティング装置を有してもよい。
【００４９】
例４「ローカルインターフェース上で表示するためにクライアントコンピュータのメディアアイテムを検索する」（図９）
【００５０】
２人が（この実施形態では、クライアントコンピュータとして動作する）テーブルトップコンピュータで会合して、写真画像９０５の形式のいくつかのメディアアイテムについて議論する。画像９０５は、初期状態では、１人の人のラップトップコンピュータ（すなわち、ホストコンピュータ）に位置している。ラップトップコンピュータは、（上記で議論した）ＶＮＣサーバアプリケーション、及び決定モジュールを有する。ラップトップコンピュータは、ファイルエクスプローラのウィンドウなどのファイルウィンドウを表示して、議論のための画像を含むフォルダを開くように指示される。テーブルトップコンピュータは、ラップトップにＴＣＰ／ＩＰ接続を用いて接続される。
【００５１】
テーブルトップコンピュータのユーザインターフェース９００上では、ラップトップスクリーンの小型バージョン（すなわち、フレームバッファの画像を表示する「遠隔スクリーンインターフェース」）が、第１のユーザインターフェースに表示される任意の他のオブジェクトのように移動され、回転され、かつサイズ変更されることができる写真オブジェクトの内部で可視である。この実施形態では、遠隔スクリーンインターフェース９０２は、対話型になる２つの方法を有する。第１の方法は、代替のスタイラス、ペンなどを用いて、遠隔スクリーンインターフェース９０２を対話型にする（すなわち、単に第１のユーザインターフェースのオブジェクトとして動作するのではないようにする）ことを含む。もう１つの方法は、上記で議論したように、画像が反転されることを要求する。対話型になると、そうでなければ遠隔スクリーンなどを移動させるであろう遠隔スクリーン９０２の操作は、遠隔スクリーン９０２上のマウスカーソルを移動させるであろう。カーソルの更新は、フレームバッファのオブジェクトのスケール、回転、及び位置を考慮して、第２のユーザインターフェース（すなわち、ラップトップのディスプレイ）のスクリーン座標系に変換される。さらに、相互作用の点が（この場合、アイコンの形式である）表示されたオブジェクトの境界を離れる場合、カーソルの更新は、第２のユーザインターフェースに留められる。
【００５２】
決定モジュールは、第２のユーザインターフェースのそれぞれの縁に沿って４つの幅が１ピクセルのウィンドウを生成して、境界ボックス９０４を形成する。アイコンをラップトップコンピュータ上の任意の他のアプリケーションから（例えば、ウィンドウズファイルエクスプローラから）スクリーンの縁にドラッグすることは、そのアイコンのファイル名が、オペレーティングシステムからＯＬＥ（オブジェクトのリンクと埋め込み）を用いて検索されることを可能にする。アイコンが１ピクセルの境界のうちの１つの上に（すなわち、フレームバッファの画像を介して）ドラッグされると、ドラッグされたアイコンに対応するファイルがディスクからリードされ、かつ通信媒体（例えば、ＴＣＰネットワークソケット）を介して送信される。一実施形態では、画像９０５が境界ボックス上に最初にドラッグされた第２のユーザインターフェース上のロケーションが、テーブルトップコンピュータに返送され、かつ画像をロードする位置を決定するために使用される。もう１つの実施形態では、テーブルトップのユーザインターフェース９００上の直前に受信された相互作用の位置（すなわち、現在縁の上である、又はフレームバッファにないオブジェクト）が、転送されたファイルをロードする中心点として使用される。この方法でロードすることは、処理を、アイコンがフレームバッファ画像を囲む境界ボックスを横断するときに、アイコンが可視のメディアアイテムに変換され、かつ新しいオブジェクトとしてテーブル上にロードされるように、ユーザに見せる。決定モジュールがメディアアイテムを送信する場所を知るために、もう１つのステップが含まれる。フレームバッファオブジェクトが生成され、かつラップトップコンピュータ上で動作している（任意の）ＶＮＣサーバに成功裏に接続されたとき、メッセージが決定モジュールに送信される。今後のアイコンのドラッグは、この「登録」メッセージを送信した最近のコンピュータに（試みられた送信が失敗するまで）送信される。
【００５３】
本発明の実施形態は、有利に、ファイルが２つ又はそれ以上のコンピュータの間で、最小限のユーザ命令又は２つのシステムの特定の知識を用いて、簡単にかつ効果的に転送されることを提供する。実施形態は、特に、テーブルトップコンピュータ（すなわち、テーブルのような表面に提供されたタッチスクリーンディスプレイを含むコンピュータ）について有利であり、それによって、テーブルトップスクリーン上に表示されたオブジェクトに関連するファイルが、ファイル転送を達成するためのスクリーンの所定のエリアにオブジェクトを単純にドラッグする又ははじくことによって転送される。
【００５４】
要求されないが、図を参照して説明された実施形態は、開発者による使用のために、アプリケーションプログラミングインターフェース（ＡＰＩ）を用いて、又は一連のライブラリとして実装されてもよく、かつ端末若しくはパーソナルコンピュータのオペレーティングシステム、又はポータブルコンピューティング装置のオペレーティングシステムなどの別のソフトウェアアプリケーションの内部に含まれてもよい。一般に、プログラムモジュールは、特定の機能を実行する又は実行を支援するルーチン、プログラム、オブジェクト、構成要素、及びデータファイルを含むので、ソフトウェアアプリケーションの機能性は、多数のルーチン、オブジェクト、及び構成要素にわたって分散されてもよく、実施形態と同一の機能性、及び本明細書で主張されるより広範な発明を達成することが理解されるであろう。このような変形例及び変更例は、当業者の範囲内である。
【００５５】
本明細書における先行技術文献への参照は、上記文献がオーストラリアにおける技術の共通の一般的な知識の一部を形成することを認めることではない。
【００５６】
［表１］
付録Ａ
/**
*運動量のための位置更新手続き。
*￥ｒｅｔｕｒｎ  ｔｒｕｅ  アニメーションが終了した場合。
*/
bool Momentum::rel_update(unsigned ms)
{
//与えられた初速度及び加速度を経時的に変位させるための古典物理学の公式
//￥ｆ＄ｓ＝ｕｔ＋￥ｆｒａｃ｛１｝｛２｝ａｔ＾２￥ｆ＄
//を使用する。
float dt = 0.001*(ms - lastms);
lastms = ms;
if (r->selectedBy() != user) {
//他の人がそれに接触すると、我々は停止する。
if (r->selectedBy() >= 0)
return true;
//我々が非選択になると、我々は停止するときに、我々はまだ枠線色、
//アクセス制限、及び非選択を必要とする。
killselect = true;
}
//我々が同じユーザによって再び接触されたかを確認し、そうであれば、停止する。
if (r->clickPos != clickPos)
return true;
//摩擦／抗力に起因する減速度は、＿速度＿のｘ／ｙ成分の反対方向に
//方向付けられる。大きさはちょうどｄｅｃｅｌ−−摩擦／抗力に起因
//する（定数の）減速度である。
float vtheta = xv == 0.0 ? M_PI/2.0 : atanf(fabs(yv / xv));
float accel_x = (xv < 0 ? 1.0 : -1.0) * cosf(vtheta) * decel;
float accel_y = (yv < 0 ? 1.0 : -1.0) * sinf(vtheta) * decel;
//我々がブラックホールの近傍であるときに、大きさ
//ＢＬＡＣＫＨＯＬＥ＿ＡＣＣＥＬのブラックホールの中心へ向かう成分を
//加算することによって、加速度ベクトルを変更する。
if (r->blackholeDist() < 1.0) {
/*ブラックホールのワープの前に、我々はスクリーン位置を使用することに留意する。*/
float dx = r->env->blackhole->getPC().getScreen().x 
- r->getPC().getScreen().x;
float dy = r->env->blackhole->getPC().getScreen().y 
- r->getPC().getScreen().y;
float theta = dx == 0.0 ? M_PI/2.0 : atanf(fabs(dy / dx));
accel_x += (dx < 0 ? -1.0 : 1.0) 
* RConfig::BLACKHOLE_ACCEL 
* cosf(theta) 
* (dx * xv < 0.0 ? 1.5 : 1.0);
accel_y += (dy < 0 ? 1.0 : -1.0) 
* RConfig::BLACKHOLE_ACCEL 
* sinf(theta) 
* (dy * yv > 0.0 ? 1.5 : 1.0);
}
//加速度ベクトルから速度及び変位を更新する。
float xvdiff = accel_x * dt;
float yvdiff = accel_y * dt;
float xdiff = xv * dt + 0.5 * accel_x * dt * dt;
float ydiff = yv * dt + 0.5 * accel_y * dt * dt;
xv = (fabs(xvdiff) >= fabs(xv) && r->blackholeDist() >= 1.0) ?
0 :
xv + xvdiff;
yv = (fabs(yvdiff) >= fabs(yv) && r->blackholeDist() >= 1.0) ?
0 :
yv + yvdiff;
if (!finite(xv) || !finite(yv)) {
xv = yv = 0.0f;
}
//１０ピクセル／秒未満のときに停止する。−−なぜ１０か？＝＞我々がブラック
//ホールの中心によって「捕捉された」とき、フレームの再描画もまた停止する。
if  (r->blackholeDist() < RConfig::BLACKHOLE_TRAPDIST ||
(r->blackholeDist() >= 1.0 && fabs(xv) <= 20 && fabs(yv) <= 20)) {
if (killselect)
r->unSelect(user);
if (r->blackholeDist() >= 1.0)
r->settle();
return true;
}
//我々の所望の位置を記憶する。
x0 = x0 + xdiff;
y0 = y0 + ydiff;
//その後、最も近いスクリーン／ピクセルのロケーションに移動し、境界に制限する。
r->moveto(static_cast < int >(roundf(x0)),
static_cast < int >(roundf(y0)));
if  (r->getPC().getRealScreen().x + 3 >= r->env->getSurface()->w
&& RConfig::DATAWALL_SEND && !sent) {
//トリガがスクリーンの右側で送信される。
sent = true;
datawall_send(r);
} else if (r->getPC().getRealScreen().x <= 3 
&& RConfig::MAGICMIRROR_SEND && !sent) {
//トリガがスクリーンの左側で送信される。
sent = true;
datawall_send(r, true);
}
return false;
}
/**運動量アニメーションのトリガを制御する手続き。*/
void Mover::updatePositions() {
if (positions.size() == RConfig::VELOCITY_WINDOW)
positions.pop_back();
positions.push_front(std::make_pair(current_time, current_xy_position));
}
MoveTracker* Mover::release() {
if  (!RConfig::DO_MOMENTUM
|| positions.size() < RConfig::VELOCITY_WINDOW
|| r->hasLink())
return ResourceGesture::release();
float dx = positions.front().second.x - positions.back().second.x;
float dy = positions.front().second.y - positions.back().second.y;
float dt = (positions.front().first - positions.back().first) / 1000.0f;
float vel_sq = (dx * dx  +  dy * dy) / (dt * dt);
if (vel_sq > RConfig::ESCAPE_VELOCITY && r != r->env->blackhole) {
r->env->addAnimation(new Momentum(r,
dx / dt, dy / dt,
positions.front().second.x,
positions.front().second.y));
}
return ResourceGesture::release();
}
【００５７】
［表２］
付録Ｂ
struct SendfileHeader {
char id_string[4]; /*＝“ＦＸＹ￥０”*/
uint16_t x, y, pathsize;
uint32_t filesize;
};
/**
*ディスク上のファイルをアドレスがＨＯＳＴ環境変数に存在する
*遠隔のコンピュータに送信する。
*
*￥ｐａｒａｍ  ｐａｔｈｓｔｒ  送信するファイルのディスク上のパス。
*￥ｐａｒａｍ  ｘｐｏｓ  ＯＬＥドラッグイベントが発生した
*                        カーソル位置のｘ値。
*￥ｐａｒａｍ  ｙｐｏｓ  カーソル位置のｙ値。
*/ 
bool SendFile(const char* pathstr, int xpos, int ypos) {
if (!init)
init = GetVars(HOST, PORT);
std::string path = pathstr;
unsigned which = GetSide();
//上又は左であれば、変更は必要ない。
if (which == W_RIGHT)
xpos = SCREEN_WIDTH;
if (which == W_BOTTOM)
ypos = SCREEN_HEIGHT;
SendfileHeader head;
strcpy(head.id_string, "XFY");
head.x = htons(xpos);
head.y = htons(ypos);
head.pathsize = htons(path.size());
FILE *f = 0;
unsigned long filesize = 0;
if (!peer) {
if (!(peer = tcpopen(HOST.c_str(), PORT)))
return false;
sentpaths.clear();
}
head.filesize = 0;
if (sentpaths.find(path) == sentpaths.end()) {
f = fopen_size(path.c_str(), &filesize, "rb");
head.filesize = htonl(filesize);
sentpaths.insert(path); //失敗に関わらず。
}
//ヘッダを送信する。
if (tcpsend(peer,
reinterpret_cast<const char*>(&head),
sizeof(head)))
return reset();
//ファイル名を送信する。
if (tcpsend(peer, path.data(), path.size()))
return reset();
if (f) {
enum {BUFSZ = 4096}; //小さいバッファ。
char buf[BUFSZ];
size_t nread;
size_t toread = filesize;
//ファイルを送信する。
while (toread > 0 
&& (nread = fread(buf, 1,
toread < BUFSZ 
? toread 
: BUFSZ, f))) {
if (tcpsend(peer, buf, nread))
return reset();
toread -= nread;
}
fclose(f);
}
//tcpclose(peer); 存続を試みる。
return true;
}
/**
*ｓｔｇｍｅｄに表されたＯＬＥデータを処理する。
*/ 
BOOL handle_ole(STGMEDIUM &stgmed, int xpos, int ypos) {
TCHAR file_name[_MAX_PATH + 1];
std::vector<std::string> files;
HDROP hdrop = (HDROP)GlobalLock(stgmed.hGlobal);
if (hdrop) {
UINT num_files = DragQueryFile(hdrop, (UINT)-1, NULL, 0);
for (UINT i = 0; i < num_files; ++i) {
ZeroMemory(file_name, _MAX_PATH + 1);
DragQueryFile(hdrop, i, (LPTSTR)file_name,
_MAX_PATH + 1);
files.push_back(file_name);
}
GlobalUnlock(hdrop);
}
ReleaseStgMedium(&stgmed);
for (unsigned i = 0; i < files.size(); ++i) {
if (!SendFile(szFileName, xpos, ypos)) {
/*エラーを処理する。*/
break;
}
}
return NOERROR;
}
【図１】
2010539567.tif 000003
【図２】
2010539567.tif 000004
【図３】
2010539567.tif 000005
【図４】
2010539567.tif 000006
【図５】
2010539567.tif 000007
【図６】
2010539567.tif 000008
【図７】
2010539567.tif 000009
【図８】
2010539567.tif 000010
【図９】
2010539567.tif 000011
【図１０】
2010539567.tif 000012
【手続補正書】
【提出日】平成21年8月17日(2009.8.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のコンピューティング装置と第２のコンピューティング装置との間でファイルを転送するための方法において、
上記方法は、
上記第１のコンピューティング装置に関連する第１のパーベイシブユーザインターフェースを提供するステップと、
上記第２のコンピューティング装置に記憶されたファイルに関連する少なくとも１つのオブジェクトを表示するように設けられる遠隔スクリーンインターフェースを上記第１のパーベイシブユーザインターフェース上に表示するステップと、
上記第１のコンピューティング装置のユーザが上記オブジェクトを上記遠隔スクリーンインターフェースの所定のエリアに移動させることに応答して、上記少なくとも１つのオブジェクトに関連する上記ファイルを上記第１のコンピューティング装置に転送するステップと、
上記第１のパーベイシブユーザインターフェースにおいて操作するのに適したフォーマットで転送されたファイルを表示するステップとを含む方法。
【請求項２】
上記所定のエリアは、上記遠隔スクリーンインターフェースの少なくとも１つの縁に沿って位置する請求項１記載の方法。
【請求項３】
上記所定のエリアは、上記遠隔スクリーンインターフェースを内側に囲む境界ボックスである請求項２記載の方法。
【請求項４】
上記境界ボックスは、上記遠隔スクリーンインターフェースのそれぞれの縁に沿って１ピクセル幅の領域を備える請求項３記載の方法。
【請求項５】
上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置に関連する第２のユーザインターフェースの少なくとも１つの部分を複製する請求項１から４のうちのいずれか１つの請求項記載の方法。
【請求項６】
上記転送されたファイルに関連する第２のオブジェクトを上記第１のユーザインターフェースに表示するステップをさらに含む請求項１から５のうちのいずれか１つの請求項記載の方法。
【請求項７】
上記第２のオブジェクトは、上記第１のオブジェクトと同一である請求項６記載の方法。
【請求項８】
上記転送されたファイルをロードし／実行するステップをさらに含み、上記ロードされた／実行されたファイルに関連するデータが上記第１のユーザインターフェースに表示される請求項１から７のうちのいずれか１つの請求項記載の方法。
【請求項９】
少なくとも１つの上記オブジェクト及び実行された／ロードされたファイルを上記第１のユーザインターフェースに、上記オブジェクトが上記所定のエリアに入った領域に近接して表示するステップをさらに含み、上記オブジェクトが上記遠隔スクリーンインターフェースから上記第１のユーザインターフェースに途切れなく渡されるように出現する請求項５から８のうちのいずれか１つの請求項記載の方法。
【請求項１０】
上記オブジェクトは、上記関連するファイルを表すアイコンである請求項１から９のうちのいずれか１つの請求項記載の方法。
【請求項１１】
上記オブジェクトを移動させる上記ステップは、ユーザのジェスチャ、スタイラス、及びマウスのうちの少なくとも１つを用いて、上記オブジェクトを上記所定のエリアにドラッグすることを含む請求項１から１０のうちのいずれか１つの請求項記載の方法。
【請求項１２】
上記第１のコンピュータ及び第２のコンピュータは、仮想ディスプレイプロトコルを用いて通信して、上記遠隔スクリーンインターフェースを提供する請求項１から１１のうちのいずれか１つの請求項記載の方法。
【請求項１３】
上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置によって提供される対話型のフレームバッファの画像である請求項１から１２のうちのいずれか１つの請求項記載の方法。
【請求項１４】
第１のコンピューティング装置と第２のコンピューティング装置との間でファイルを転送するためのシステムにおいて、
上記システムは、
上記第１のコンピューティング装置に関連し、かつ上記第２のコンピューティング装置に記憶されたファイルに関連する少なくとも１つのオブジェクトを表示する遠隔スクリーンインターフェースを表示するように設けられた第１のパーベイシブユーザインターフェースと、
上記第１のコンピューティング装置のユーザが上記オブジェクトを上記遠隔スクリーンインターフェースの所定のエリアに移動させることに応答して、少なくとも１つのオブジェクトに関連する上記ファイルを上記第１のコンピューティング装置に転送するように設けられた転送モジュールとを備え、
上記転送されたファイルは、上記第１のパーベイシブユーザインターフェースにおいて操作するのに適したフォーマットで表示されるシステム。
【請求項１５】
上記所定のエリアは、上記遠隔スクリーンインターフェースの少なくとも１つの縁に沿って位置する請求項１４記載のシステム。
【請求項１６】
上記所定のエリアは、上記遠隔スクリーンインターフェースを内側に囲む境界ボックスである請求項１５記載のシステム。
【請求項１７】
上記境界ボックスは、上記遠隔スクリーンインターフェースのそれぞれの縁に沿って１ピクセル幅の領域を備える請求項１６記載のシステム。
【請求項１８】
上記遠隔スクリーンインターフェースは、上記第２のコンピューティング装置に関連する第２のユーザインターフェースの少なくとも１つの部分を複製する請求項１４から１７のうちのいずれか１つの請求項記載のシステム。
【請求項１９】
上記転送されたファイルに関連する第２のオブジェクトは、上記第１のユーザインターフェースに表示される請求項１４から１８のうちのいずれか１つの請求項記載のシステム。
【請求項２０】
上記第２のオブジェクトは、上記第１のオブジェクトと同一である請求項１９記載のシステム。
【請求項２１】
上記転送されたファイルをロードし／実行するように設けられた処理モジュールをさらに備え、上記ロードされた／実行されたファイルに関連するデータが上記第１のユーザインターフェースに表示される請求項１４から２０のうちのいずれか１つの請求項記載のシステム。
【請求項２２】
コンピュータシステムのコンピュータ読み取り可能な媒体に実装されたときに、上記コンピュータシステムに請求項１から１３のうちのいずれか１つの請求項記載の方法を実行させる少なくとも１つの命令を備えるコンピュータプログラム。
【請求項２３】
請求項２２記載のコンピュータプログラムを提供するコンピュータ読み取り可能な媒体。
【国際調査報告】
2010539567.tif 000013
2010539567.tif 000014
2010539567.tif 000015