JP2009540428A - ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップすること - Google Patents

ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップすること Download PDF

Info

Publication number
JP2009540428A
JP2009540428A JP2009514255A JP2009514255A JP2009540428A JP 2009540428 A JP2009540428 A JP 2009540428A JP 2009514255 A JP2009514255 A JP 2009514255A JP 2009514255 A JP2009514255 A JP 2009514255A JP 2009540428 A JP2009540428 A JP 2009540428A
Authority
JP
Japan
Prior art keywords
drop
drag
application
component
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009514255A
Other languages
English (en)
Other versions
JP4482615B2 (ja
Inventor
ソウル エルトン
エム.カーター−シュヴェントラー カール
ワイ.アブドー ナディム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009540428A publication Critical patent/JP2009540428A/ja
Application granted granted Critical
Publication of JP4482615B2 publication Critical patent/JP4482615B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet

Abstract

本発明は、オブジェクトをローカルモジュールとリモートモジュールとの間でドラッグアンドドロップするための方法、システム及びコンピュータプログラム製品に適用する。ターミナルサーバコンポーネントはドラッグアンドドロップ操作における当事者の機能性をシミュレートして、オブジェクトをローカルモジュールとリモートモジュールとの間及びその逆の間でドラッグアンドドロップすることを容易にする。ターミナルサーバコンポーネントは、ローカルに通信してドラッグアンドドロップ操作に参加するモジュールと連動する。ターミナルサーバコンポーネントはターミナルサーバセッションを介してメッセージを送り、ターミナルサーバセッションの他端にある相手方ターミナルサーバコンポーネントに対し適切なドラッグアンドドロップ情報を中継する。

Description

コンピュータシステム及び関連技術は、社会の多くの面に影響を与える。実際に、コンピュータの情報処理能力は、我々の生活及び仕事の方法を一変させた。コンピュータシステムは今や一般に、コンピュータシステム出現以前には人の手で遂行した各種の仕事(例えば、文書処理、日程計画、及びデータベース管理)を遂行する。一般的には、これら各種の仕事を遂行するため、コンピュータシステムは対応する多数のアプリケーションを含む。例えば、文書処理を実行するために、コンピュータシステムは文書処理アプリケーションを含むことができるし、計算表を扱うのにコンピュータシステムは表計算アプリケーションを含むことができる。
スタンドアロン型計算環境において、コンピュータシステムにおいてある異なるタスクを遂行するアプリケーションの間でオブジェクトを移動することができることはしばしば有用である。例えば、文書処理アプリケーションで作成した文章の一部を、画像又は図面に関する説明文としてプレゼンテーションプログラムの中に移動することは有用であろう。アプリケーションの間のオブジェクトの移動を可能にするため、コンピュータシステムによっては、コンピュータシステムにあるアプリケーションが共通の方法で通信することのできるメモリの一部(例えば、クリップボード)を含む。こうして、一つのアプリケーションがメモリの一部と連動してオブジェクトを記憶すると、次に別のアプリケーションがメモリのその一部と連動してそのオブジェクトを取り出す。こうしてアプリケーションは(直接には矛盾なくオブジェクトを交換することのできないものであっても)メモリの一部を通じてオブジェクトを交換することができる。
多くのスタンドアロン型計算環境は、目視の手掛かりと組み合わせた入力装置を用いて対応するアプリケーションの間でオブジェクトを直接転送するさらに便利な能力を含む。アプリケーションの間の直接転送に関する一つの一般的機構は「ドラッグアンドドロップ」である。ドラッグアンドドロップを容易にするため、ユーザはアプリケーションの中で一つのオブジェクト(例えば、文書、画像又はスプレッドシートセルの一部)を特定する。例えば、ユーザは、マウスを用いて文章の一部を強調する。目視の手掛かり、例えば、背景照明は、その文章を選択したことをユーザに示すのに使用することができる。
ユーザは入力装置を操作して特定オブジェクトを選択する。例えば、ユーザはマウスを操作して特定の文章の上にマウスを移動し、マウスの左ボタンを押すことができる。次いで、ユーザは更に入力装置を操作して、そのオブジェクトを別のアプリケーションへと移動する。例えば、マウス左ボタンを押したまま、ユーザはマウスを操作してカーソルを別のアプリケーションの上に移動(ドラッグ)することができる。別のアプリケーションの上に来たら、ユーザは左ボタンを解放することができる。マウスボタンを解放する動作によりオブジェクトが別のアプリケーションに移動(又はその中にドロップ)させられる。
別の環境においては、コンピュータシステムを互いに、及び別の電子装置に結合して、有線及び無線双方のコンピュータネットワークを形成する。このコンピュータネットワークを介してコンピュータ及び別の電子装置は電子データを転送することができるその結果、コンピュータシステムの上で遂行される多数の仕事(例えば、音声通信、電子メールの利用、家庭電化製品の制御、ウェブ走査検索、及び文書印刷)は、多数のコンピュータシステム及び/又は別の電子装置の間の有線及び/又は無線コンピュータネットワークを介した通信(例えば、電子メッセージの交換)を含む。
一部のアプリケーションはローカルで稼働し、別のアプリケーションは、例えば、ターミナルサーバにおいて、リモートで稼働するネットワーク環境においては、異なるタスクを遂行するアプリケーションの間でオブジェクトを移動することができれば有用であることが多い。ターミナルサーバは、クライアントコンピュータシステムがリモートで実行することのできるアプリケーションを保持するコンピュータシステムである。入力は、クライアントコンピュータシステムで入力され(例えば、リモートデスクトッププロトコル(「RDP」)のようなプロトコルのITU T.120群準拠のプロトコルを使用するネットワークの上でターミナルサーバにあるアプリケーションに転送する。このアプリケーションは、この入力をあたかもその入力がターミナルサーバにおいて入力されたように処理する。このアプリケーションは、受け取る入力に応答して出力を生成し、その出力をネットワーク(これもT.120準拠のプロトコルなど)の上でクライアントコンピュータシステムに転送する。クライアントコンピュータシステムはその出力データを表示する。こうして、処理は実際にはターミナルサーバで生じるが、クライアントコンピュータシステムにおいて入力を受領し出力を表示する。
ローカルアプリケーションとリモートアプリケーションとの間でオブジェクトの移動を可能にするため、一部のネットワークコンピュータシステムは、スタンドアロン型環境において使用するのと同様のクリップボード機能を含む。メモリの一部(即ちクリップボード)を割り当てて、コンピュータシステムにあるアプリケーションが共通の方法で連動することができる。このようにして、ローカルアプリケーションはメモリの一部と連動してオブジェクトを記憶し、次いで、リモートアプリケーションがメモリの一部と連動してそのオブジェクトを受け取る、又は逆も同様である。こうして、アプリケーションは(異なるコンピュータシステム上で稼働するものであっても)メモリの一部を通じてオブジェクトを交換することができる。
しかしながら、多くのネットワークコンピュータシステムはローカルアプリケーションとリモートアプリケーションとの間及び逆の間でオブジェクトをドラッグアンドドロップする能力に欠ける。即ち、クライアントとサーバのターミナルサーバコンポーネントは、一般的には、ターミナルサーバセッションを介してドラッグアンドドロップオブジェクトを転送し、ドロップソース又はドロップターゲットと会話してドラッグアンドドロップを容易にする構成とはなっていない。例えば、サーバコンポーネントは一般的には、(クライアントシステムにある)リモートデスクトップウインドウの外のマウスカーソルの移動がドラッグアンドドロップ操作に連結しているか、又はユーザが別の理由でマウスを動かしているかを判定する方法がない。
本発明は、ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップするための方法、システム及びコンピュータプログラム製品に適用される。いくらかの実施形態において、オブジェクトをローカルアプリケーションからリモートアプリケーションにドラッグアンドドロップする。クライアントコンポーネントは、デスクトップウインドウカーソルがリモートアプリケーションに関するウインドウの外側から内側に移動したことを検出する。そのクライアントコンポーネントは、未処理のドラッグアンドドロップ操作を示すドロップ通知を受け取る。このドロップ通知は、ドラッグアンドドロップオブジェクトをリモートアプリケーションに転送する旨を通知する。クライアントコンポーネントは、ドラッグアンドドロップオブジェクトをデスクトップウインドウカーソルの座標位置とともに転送する要求を、ターミナルサーバセッションを介してサーバコンピュータシステムに送付する。
サーバコンポーネントはこの要求を受領し、ドラッグアンドドロップオブジェクトを転送する通知をリモートアプリケーションに送付する。サーバコンポーネントは、このドラッグアンドドロップオブジェクトを転送する要求の受領に応じて、ドラッグアンドドロップオブジェクトに関する要求をリモートアプリケーションから受け取ることを含め、ローカルアプリケーションの代わりに代理ドロップソースとして作用する。サーバコンポーネントは、オブジェクトをドラッグアンドドロップする要求を、ターミナルサーバセッションを介してクライアントコンポーネントに送付する。
クライアントコンポーネントは、サーバコンピュータシステムからターミナルサーバセッションを介してドラッグアンドドロップオブジェクトに関する要求を受け取る。クライアントコンポーネントは、ドラッグアンドドロップオブジェクトに関する要求をローカルアプリケーションに転送することと、ローカルアプリケーションからドラッグアンドドロップオブジェクトを受け取ることを含めて、リモートアプリケーションの代わりに代理ドロップターゲットとして作用する。クライアントコンポーネントは、ターミナルサーバセッションを介してドラッグアンドドロップオブジェクトをサーバコンピュータシステムに送付する。
サーバコンポーネントはドラッグアンドドロップオブジェクトをクライアントコンポーネントからターミナルサーバセッションを介して受け取る。サーバコンポーネントは、ドラッグアンドドロップオブジェクトをリモートアプリケーションに送付することを含め、ローカルアプリケーションの代わりに代理ドロップソースとして作用する。
別の実施形態においては、オブジェクトをリモートコンピュータからローカルコンピュータに対しドラッグアンドドロップする。クライアントコンポーネントは、デスクトップウインドウカーソルがリモートアプリケーションの境界の内側から外側に移動したことを検出する。クライアントコンポーネントは、ターミナルサーバセッションを介してメッセージをサーバコンポーネントに送付する。このメッセージは、サーバコンポーネントに対し、デスクトップウインドウカーソルがリモートアプリケーションのためのアプリケーションウインドウの境界の内側から外側に移動した旨を知らせる。
サーバコンポーネントは、クライアントコンポーネントからのメッセージを、ターミナルサーバセッションを介して受け取る。サーバコンポーネントは、デスクトップウインドウカーソルの移動が未処理のドラッグアンドドロップ操作と連結していることを検出する。
クライアントコンポーネントは、ローカルアプリケーションからドラッグアンドドロップオブジェクトに関するクエリーを受け取ることを含め、リモートアプリケーションの代わりに代理ドロップソースとして作用する。このクエリーは、ローカルアプリケーションにおいてはドロップ通知の表示であって、ローカルアプリケーションに対しドラッグアンドドロップオブジェクトを転送することを表す。クライアントコンポーネントは、ドラッグアンドドロップオブジェクトに関する要求を、ターミナルサーバセッションを介してサーバコンポーネントに送付する。
サーバコンポーネントは、その要求を受け取る。サーバコンポーネントは、リモートアプリケーションに対しドラッグアンドドロップオブジェクトに関する要求を送付すること、及びリモートアプリケーションからドラッグアンドドロップオブジェクトを受け取ることを含め、ローカルアプリケーションの代わりに代理ドロップターゲットとして作用する。サーバコンポーネントは、ターミナルサーバセッションを介してドラッグアンドドロップオブジェクトをクライアントコンピュータシステムに送付する。
クライアントコンポーネントは、ドラッグアンドドロップオブジェクトを受け取る。クライアントコンポーネントは、ドラッグアンドドロップオブジェクトをローカルアプリケーションに対して送付することを含め、リモートアプリケーションの代わりに代理ドロップソースとして作用する。
要約を作成して、詳細な説明の中で下記において更に記述する考え方の要点を簡略に紹介する。本要約は、請求項に記載された主題事項の重要な特徴又は不可欠な特徴を特定することも、請求項に記載された主題事項の範囲を判定する補助として使用することも目的とはしていない。
追加の特徴及び利点は、以下の記述において説明するが、一部は記述から明白であるか、又はこの中の教訓の実践により習得されるであろう。本発明の特徴及び利点は、付属請求項において特別に指摘する指示及び組み合わせを用いて実現し獲得される。本発明の特徴は、以下の記述及び付属請求項からさらに完全に明らかになるか、若しくは以下に述べる本発明の実践により習得されるであろう。
上に列挙したこと及び別の利点及び特徴を取得することのできる方法で記述するため、上に簡単に記述した内容の更に詳細な記述を、付属図面に示す具体的実施形態を参照して示す。これらの図面は、典型的な実施形態を記述するのみであって、範囲を限定するものと見なすべきではない。実施形態を、付加的な特異性及び詳細と共に、付属図面を用いて記述し説明する。
本発明は、ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップするための方法、システム及びコンピュータプログラム製品に適用する。実施形態によっては、オブジェクトをローカルアプリケーションからリモートアプリケーションにドラッグアンドドロップする。クライアントコンポーネントは、デスクトップウインドウカーソルがリモートアプリケーションのためのウインドウの外側から内側に移動したことを検出する。クライアントコンポーネントは、未処理のドラッグアンドドロップ操作を示すドロップ通知を受け取る。このドロップ通知は、ドラッグアンドドロップオブジェクトをリモートアプリケーションに対して転送する旨を通知する。クライアントコンポーネントは、ドラッグアンドドロップオブジェクトを転送する要求を、デスクトップウインドウカーソルの座標位置とともに、ターミナルサーバセッションを介してサーバコンピュータシステムに送付する。
サーバコンポーネントはこの要求を受け取り、ドラッグアンドドロップオブジェクトを転送する通知をリモートアプリケーションに回送する。サーバコンポーネントは、ドラッグアンドドロップオブジェクトを転送する要求を受け取ると、リモートアプリケーションからドラッグアンドドロップオブジェクトに関する要求を受け取ることを含め、ローカルアプリケーションの代わりに代理ドロップソースとして作用する。サーバコンポーネントは、ドラッグアンドドロップオブジェクトに関する要求を、ターミナルサーバセッションを介してクライアントコンポーネントに送付する。
クライアントコンポーネントは、ドラッグアンドドロップオブジェクトに関する要求をサーバコンピュータシステムからターミナルサーバセッションを介して受け取る。クライアントコンポーネントは、ドラッグアンドドロップオブジェクトに関する要求をローカルアプリケーションに送付すること、及びローカルアプリケーションからドラッグアンドドロップオブジェクトを受け取ることを含め、リモートアプリケーションの代わりに、代理ドロップターゲットとして作用する。クライアントコンポーネントは、ターミナルサーバセッションを介してドラッグアンドドロップオブジェクトをサーバコンピュータシステムに送付する。
サーバコンポーネントはドラッグアンドドロップオブジェクトをクライアントコンポーネントからターミナルサーバセッションを介して受け取る。サーバコンポーネントは、リモートアプリケーションにドラッグアンドドロップオブジェクトを送付することを含め、ローカルアプリケーションの代わりに代理ドロップソースとして作用する。
別の実施形態において、オブジェクトをリモートコンピュータからローカルコンピュータにドラッグアンドドロップする。クライアントコンポーネントは、デスクトップウインドウカーソルがリモートアプリケーションの境界の内側から外側に移動したことを検出する。クライアントコンポーネントは、ターミナルサーバセッションを介してメッセージをサーバコンポーネントに送付する。このメッセージは、サーバコンポーネントに対し、デスクトップウインドウカーソルがリモートアプリケーションのためのアプリケーションウインドウの境界の内側から外側に移動した旨を知らせる。
サーバコンポーネントは、ターミナルサーバセッションを介してクライアントコンポーネントからのメッセージを受け取る。サーバコンポーネントは、デスクトップウインドウカーソルの移動は未処理のドラッグアンドドロップ操作と連結していることを検出する。
クライアントコンポーネントは、ローカルアプリケーションからドラッグアンドドロップオブジェクトに関するクエリーを受け取ることを含め、リモートアプリケーションの代わりに代理ドロップソースとして作用する。このクエリーは、ローカルアプリケーションにおいてはドロップ通知の表示であって、ローカルアプリケーションに対しドラッグアンドドロップオブジェクトを転送することを表す。クライアントコンポーネントは、ターミナルサーバセッションを介して、オブジェクトをドラッグアンドドロップする要求をサーバコンポーネントに送付する。
サーバコンポーネントは、その要求を受け取る。サーバコンポーネントは、リモートアプリケーションに対しドラッグアンドドロップオブジェクトに関する要求を送付すること、及びリモートアプリケーションからドラッグアンドドロップオブジェクトを受け取ることを含め、ローカルアプリケーションの代わりに代理ドロップターゲットとして作用する。サーバコンポーネントは、ドラッグアンドドロップオブジェクトを、ターミナルサーバセッションを介してクライアントコンピュータシステムに送付する。
クライアントコンポーネントは、ドラッグアンドドロップオブジェクトを受け取る。クライアントコンポーネントは、ドラッグアンドドロップオブジェクトをローカルアプリケーションに送付することを含め、リモートアプリケーションの代わりに代理ドロップソースとして作用する。
本発明の実施形態は、以下に詳細を説明するように、コンピュータハードウェアを含めて特殊目的又は多目的コンピュータを含む。本発明の範囲内の実施形態には、その中に記憶するコンピュータ実行可能命令又はデータ構造体を担い又は有するためのコンピュータ読取可能媒体をも含む。このようなコンピュータ読取可能媒体は、多目的又は特殊目的コンピュータがアクセスすることのできる任意の利用可能な媒体であり得る。限定ではなく一例として、コンピュータ読取可能媒体は、コンピュータ実行可能命令の形態の所望のプログラムコード手段又はデータ構造体を記憶するのに使用することができて、多目的又は特殊目的コンピュータがアクセスすることができるRAM、ROM、EEPROM、CD−ROM、又は別の光ディスク記憶装置、磁気ディスク記憶装置、又は任意の別の記憶装置のような、コンピュータ読取可能記憶媒体を含むことができる。
本記述及び以下の請求項において、「ネットワーク」とは、コンピュータシステム及び/又はモジュールの間で電子データの転送を可能にする一つ以上のデータリンクと定義される。ネットワーク又は別の通信接続(有線、無線、若しくは有線又は無線の組み合わせの何れか)の上で情報をコンピュータに転送又は提供するとき、コンピュータはその接続をコンピュータ読取可能媒体とみなす。したがって、限定ではなく一例として、コンピュータ読取可能媒体は、多目的又は特殊目的コンピュータがアクセスすることのできるネットワーク又はデータリンクを含むことができる。
コンピュータ実行可能命令は、例えば多目的コンピュータ、特殊目的コンピュータ、又は特殊目的処理装置に、一定の機能又は機能のグループを実行させる命令及びデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語のような中間フォーマットであってもよく、又はソースコードでさえあってもよい。内容は、構造的特徴及び/又は方法論的な行動に固有の言語で記述してはいないけれども、付属請求項に定義する内容は必ずしも記述する特徴又は上述の行為に限定されないと了解すべきである。寧ろ、記述する特徴及び処理は、請求項の実施に関する見本の形として開示する。
当業者は、本発明が、個人用コンピュータ、デスクトップコンピュータ、ラップトップ型コンピュータ、携帯端末、多重プロセッサシステム、マイクロプロセッサベース又はプログラム可能の家電製品、ネットワークPC,ミニコンピュータ、大型コンピュータ、携帯情報端末、ポケットベル、及び類似のものを含む多数の形式のコンピュータシステムを有するネットワーク計算環境において実用されることを理解するであろう。本発明は、(有線データリンク、無線データリンク、又は有線データリンクと無線データリンクの組み合わせの何れかを用いる)ネットワークを通じて連結されたローカルコンピュータシステムとリモートコンピュータシステムの双方がタスクを実行する分散型システム環境においても実用される。分散型システム環境においては、プログラムモジュールをローカルとリモート双方のメモリ記憶装置の中に置いてもよい。
本記述及び以下の請求項において、「ドロップターゲット」とは、ドラッグアンドドロップ操作の対象であるオブジェクトを受け取るべきモジュールと定義する。
本記述及び以下の請求項において、「ドロップソース」とは、ドラッグアンドドロップ操作の対象であるオブジェクトの起源となるべきモジュールと定義する。
本記述及び以下の請求項において、「代理ドロップターゲット」とは、ドロップソースと同一のセッションに関連し、ドロップソースとドロップターゲットとの間で仲介的に作用するモジュールと定義する。代理ドロップターゲットは、実際のドロップターゲット機能をシミュレートして、ターミナルサーバセッションを介したドラッグアンドドロップ操作を容易にすることができる。いくつかの実施形態において、代理ドロップターゲットは、ドロップターゲット機能をシミュレートしてターミナルサーバセッションの管理に参加するターミナルサーバセッションコンポーネントである。
本記述及び以下の請求項において、「代理ドロップソース」とは、ドロップソースと同一のセッションに関連し、ドロップソースとドロップターゲットとの間で仲介的に作用するモジュールと定義する。代理ドロップソースは、実際のドロップソース機能をシミュレートして、ターミナルサーバセッションの上のドラッグアンドドロップ操作を容易にすることができる。いくつかの実施形態において、代理ドロップソースは、ドロップソース機能をシミュレートしてターミナルサーバセッションの管理に参加するターミナルサーバセッションコンポーネントである。
本記述及び以下の請求項において、ネットワーク通信を経由して交換しドラッグアンドドロップ操作を容易にするメッセージは、一般的に以下のように定義する:
START_DRAG_DROPメッセージ:代理ドロップターゲットから代理ドロップソースへのドラッグアンドドロップモーダルループを始動することを示す表示。このメッセージには、提供できるフォーマットデータの名称及びIDを含むことができる。
START_DRAG_DROP_RESPONSEメッセージ:代理ドロップソースからのドラッグアンドドロップモーダルループをドロップターゲットのために開始したことを示す表示。
UPDATE_DROP_EFFECTメッセージ:ドロップターゲットに関する更新ドロップ効果、即ち、ドロップターゲットがデータを用いて行いたいことを示す。
STOP_DRAG_DROPメッセージ:代理ドロップターゲットから代理ドロップソースへのドラッグアンドドロップ操作を停止することを示す表示。
DO_DRAG_DROPメッセージ:代理ドロップターゲットから代理ドロップソースへのドロップ操作を始動する表示。ドロップメッセージ:ネットワーク通信を経由して送付されたDO_DRAG_DROPメッセージの表示は、オブジェクトのリンクと埋め込み(OLE)を経由してドロップターゲットに送付することができる。ドロップメッセージに応答して、ドロップターゲットは代理データオブジェクトを要求しGetData方法を呼び出すことができる。
DO_DRAG_DROP_RESPONSEメッセージ:ドラッグアンドドロップ操作が完了したことを知らせる代理ドロップソースからの表示(例えば、DO_DRAG_DROPメッセージに応答して送付する)。
FORMAT_DATA_REQUESTメッセージ:ドロップターゲットがデータを要求するとき、代理データオブジェクトが代理ドロップターゲットに送付する。
FORMAT_DATA_RESPONSEメッセージ:代理ドロップソースが代理データオブジェクトに送付するものであり、要求される任意のデータを含む。
その他のメッセージもネットワークを経由して交換し、ドラッグアンドドロップ操作を容易にすることができる。
図1Aは、オブジェクトをローカルモジュールからリモートモジュールにドラッグアンドドロップするのを容易にする例示的コンピュータアーキテクチャ100、コンピュータシステム101(即ち、クライアント)及びコンピュータシステム111(即ちサーバ)を示す。コンピュータシステム101及び111は、例えば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)のようなネットワーク、又はインターネットにさえも接続することができる。したがって、コンピュータシステム101及び111にある各種のコンポーネントは、ネットワークに接続する別のコンポーネントと同様に、互いにデータを送受信することができる。したがって、コンポーネントは、データ関連のメッセージを作成し、データ関連のメッセージをネットワーク(例えば、インターネットプロトコル(IP)データグラム及び伝送制御プロトコル(TCP)、リモートデスクトッププロトコル(RDP)、ハイパーテキスト転送プロトコル(HTTP)、単純メール転送プロトコル(SMTP)、独立コンピューティング・アーキテクチャ(ICA)など)の上で交換することができる。
描写するようにコンピュータシステム101はアプリケーション102、クライアントモジュール106、及びユーザインタフェース104を含み、コンピュータシステム111はアプリケーション112とサーバモジュール116を含む。コンピュータシステム101とコンピュータシステム111とは、ネットワークの上に開設するターミナルサーバセッション131(例えばRDPセッション)を経由して互いに連絡する。クライアントコンポーネント106とサーバコンポーネント116は、同時に使用してターミナルサーバセッション131の管理を容易にすることができる。例えば、ユーザインタフェース104において受け取るユーザ入力をコンピュータシステム101からコンピュータシステム111に送付すること、ユーザ入力をコンピュータシステム111にある適切なリモートアプリケーションに転送すること、コンピュータシステム111にあるリモートアプリケーションからの出力を受け取ること、そのリモートアプリケーション出力をコンピュータシステム111からコンピュータシステム101に転送すること、及びリモートアプリケーション出力をユーザインタフェース104に出力することである。このようにして、(ユーザインタフェース104から)リモートアプリケーションに関しては、コンピュータシステム101において入力を受け付けし出力を提示する一方で、処理は実際のところコンピュータシステム111において生起する。
仮想チャンネルを使用して、ターミナルサーバセッションの機能を(例えば、RDPプロトコルを拡張することにより)拡張し、アプリケーションがアプリケーション固有のデータをターミナルサーバセッション(例えば、RDP接続)上で転送することができるようにする。こうして、入出力データに加えて、別の型のデータを仮想チャンネルの上で交換することができる。例えば、仮想チャンネル121は、ドラッグアンドドロップオブジェクトをコンピュータシステム101からコンピュータシステム111に転送する構成のチャンネルとすることができる。仮想チャンネル121は、クライアントコンポーネント106にあるドラッグアンドドロップスレッドをクライアントコンポーネント116にあるドラッグアンドドロップスレッドに接続、及び逆の接続をすることができる。したがって、クライアントコンポーネント106とサーバコンポーネント116とは同時に使用して、仮想チャンネル121の上で、コンピュータシステム101及びコンピュータシステム111にある然るべきアプリケーションの間でデータをドラッグアンドドロップすることができる。
図1Bは、ローカルモジュールからリモートモジュールに対するドラッグアンドドロップ操作を描写する例示的デスクトップウインドウ123を示す。描写するように、デスクトップウインドウ123は、ユーザインタフェース104の一部であってアプリケーションウインドウ102W及びリモートデスクトップ113を含む。アプリケーションウインドウ102Wはアプリケーション102と対応するので、アプリケーションに102のためのユーザ入力を受領し、アプリケーションに102からの出力をユーザに提示する構成となっている。リモートデスクトップ113は、コンピュータシステム111から遠隔の任意のアプリケーションのためのアプリケーションウインドウを含む。例えば、アプリケーションウインドウ112Wはアプリケーション112と対応するので、アプリケーションに112のためのユーザ入力を受領しアプリケーションに112からの出力をユーザに対して提示する構成となっている。
図2A〜2Cは、ローカルモジュールからリモートモジュールに対しオブジェクトをドラッグアンドドロップするための例示的方法200の流れ図を示す。方法200を、コンピュータアーキテクチャ100の中のコンポーネント及びデータに関して記述する。
方法200は、ドラッグアンドドロップオブジェクトをローカルアプリケーションウインドウから選択する処理を含む(処理201)。例えば、コンピュータシステム101のユーザは、オブジェクト126をアプリケーションウインドウ102Wの内側から選択することができる。オブジェクト126は、例えば、テキスト、グラフィック、又は音声データの一部、スプレッドシートのセル、データベース項目、電子メッセージ、などのようなコンピュータシステムにある事実上選択可能な任意のオブジェクトである。
方法200は、デスクトップウインドウカーソルを変更して、ドラッグアンドドロップオブジェクトを選択したことを視覚的に表す処理を含む(処理202)。例えば、オブジェクト126を選択した後、カーソル133を変更して、ドロップ効果標識134を含ませることができる。ドロップ効果には、移動、コピー、リンク、宛先ハイパーリンクの作成、及び選択オブジェクトへのショートカットの作成の何れをも含むことができる。カーソル133は、異なる方法で変更又は補完して異なるドロップ効果を表示することができる。例えば、ドロップ効果標識134を表示して、そのドロップ効果がコピーであることを示すことができる。
ドロップ効果は、アプリケーションに対し利用可能なドロップ効果の中から選択することができる。カーソル133がデスクトップウインドウ123の異なるウインドウ間で移行するにつれ、表示されるドロップ効果標識を変更することができる。例えば、カーソル133がアプリケーションウインドウ102Wの境界の内側にあるときは、アプリケーション102(例えば、コピー)の規定値ドロップ効果を表示することができる。カーソル133がアプリケーションウインドウの境界の外側にあるときは、デスクトップウインドウ123(例えば、オペレーティングシステム)のための規定値ドロップ効果を表示することができる。例えば、デスクトップウインドウ123では、ドラッグアンドドロップ機能を全くサポートしないことがあるので、カーソル133は、ユーザインタフェース104のこの領域にあるとき「不可」記号に変形する。アプリケーションウインドウ112Wに入ると、アプリケーション112のための(例えば、コピーの)規定値ドロップ効果を表示することができる。
方法200は、デスクトップウインドウカーソルが、リモートアプリケーションのためのアプリケーションウインドウの境界の外側から内側に移動したことを検知するクライアントコンポーネントの処理を含む(処理203)。例えば、クライアントコンポーネント106は、カーソル133がアプリケーションウインドウ112Wの境界の外側から内側に移動したことを検知することができる。(図1Bの点線は、アプリケーションウインドウ102Wから、デスクトップウインドウ123及びリモートデスクトップ113を通って、アプリケーションウインドウ112Wに到るカーソル133の経路を示す。)
処理201、202、及び203は、ローカルアプリケーションからリモートアプリケーションに対してオブジェクトを転送するドラッグアンドドロップ操作の設定に含めることができる。カーソル134がアプリケーションウインドウ112Wの上にあるとき、クライアントコンポーネント106はDragEnter方法を呼び出すことができる。DragEnter方法を通じて、クライアントコンポーネント106(ドロップターゲット代理として作用している)は、元のアプリケーション102に対しそれがオブジェクト126を受け入れることができるか否かを表示することができる。DragEnter方法のパラメータは以下のフォーマットとすることができる。
HRESULT DragEnter(
IDataObject* pDataObject,
//ソースデータ・オジェクト(例えば、オブジェクト126)
DWORD dwKeyState
//キーボードとマウスの状態
POINTL pt,
// カーソル位置
DWARD* pdwDropEffect
// 結果のドロップ効果
DragEnter方法を通じて、目標(又は代理目標)は、pdwDropEffectパラメータを更新することによりそれが見込まれるドロップを受け入れることができるか否かを表示することができる。このパラメータは、当初にソースが容認するドロップ効果一式を含むことができる。結果のドロップ効果は、一部はデータオブジェクトが供給するフォーマットに基づくので現在のキーボードとマウスの状態によっても影響も受け、またマウス位置の影響を受ける可能性もある。
続いて、クライアントコンポーネント106は、START_DRAG_DROPメッセージを、仮想チャンネル121(例えば、クリップボード仮想チャンネル)を介してサーバコンポーネント116に送付することができる。START_DRAG_DROPメッセージは、オブジェクト126の内容及びアプリケーション102の許容ドロップ効果を記述するフォーマット名を含むことができる。このメッセージを送付した後、コンピュータシステム101にある入力ハンドラはドラッグアンドドロップ操作を開始したとの通知を(例えば、オペレーティングシステム・イベントを通じて)受け取る。このイベントに応答して、入力ハンドラはキーボード接続および入力同期を無効にすることができる。ドロップ開始の前に、フォーマットデータに関する要求を満足することができることを確認するため、オブジェクト126を記憶することができる。
サーバコンポーネントにおいてSTART_DRAG_DROPメッセージを受け取るとき、オブジェクト126の内容及びアプリケーション102の許容ドロップ効果を記述するフォーマット名を抽出する。それに応じて、代理データオブジェクト136を作成し、サーバコンポーネント116のためのウインドウを作成する。このウインドウは透明(又は隠し)とすることができるので、極めて小さいサイズ(例えば、1×1ピクセルサイズ)とすることができる。ウインドウはピントを合わせてZオーダの最高部に上げることができる。こうして、入力をウインドウに導いて(クリップして)入力をサーバコンポーネント116に導くことができる。したがって、デスクトップウインドウ123を大幅に変更することなく入力をサーバコンポーネント116に導くことができる。例えば、1×1透明ウインドウはユーザが感知することができない可能性がある。
受け取ったマウスダウンイベントに応答して、サーバコンポーネント116(代理ドロップソース)はDoDragDrop方法を呼び出す。DoDragDrop方法のパラメータは、以下のフォーマットとすることができる。
HRESULT DoDragDrop(
IDataObject* pDataObject,
//ソースデータ・オブジェクト
IDropSource* pDropSource,
//ドロップソースインタフェース
DWORD dwAllowedDropEffects,
//許容ドロップ効果
DWORD* dwFinalDropEffects,
//最終ドロップ効果
DoDragDrop方法は、ドラッグアンドドロップ操作を容易にするため使用するモーダルループの中に含めることができる。一般的に、ドラッグアンドドロップ操作を開始するため、コンポーネントは適切なパラメータを有するDoDragDropを呼び出す。DoDragDropは、SetCapture APIを用いてマウスを捕捉し、その後、ループに入る。
入力をサーバコンポーネント116に転送するため、入力ハンドラは、マウスダウンイベントをクライアントコンポーネント106に対し送付し、マウスはサーバコンポーネント116のための(小さくて透明な可能性のある)ウインドウにクリップされているので、マウスダウンイベントはサーバコンポーネント116の入力待ち行列に送付されることで終了する。マウスダウンイベントの受領を使用して、Object Linking and Embedding(OLE)隠しウインドウを構成し、システム全体のマウスイベントメッセージを受け取ることができる。START_DRAG_DROP_RESPONSEの受け取りはブーレアンフラグの切り換えを起動する。これは、クライアントコンポーネント106にある方法を実行の前にチェックする。これは、サーバコンポーネント116が作動中のときメッセージを送付する可能性を増加する。
カーソル133をアプリケーションウインドウ112Wの上でドラッグしているとき、DragOver方法を呼び出す。DoDragDrop方法のパラメータは、以下のフォーマットとすることができる。
HRESULT DragOver(
DWORD dwKeyState,
// キーボードとマウスの状態
POINTL pt,
// カーソル位置
DWORD* pdwDropEffect,
// 結果のドロップ効果
DragOverに対する呼び出しの間、現在のマウス位置、マウスボタン状態、及びキーボード状態の変更に関してチェックすることができる。変更を検出すると、クライアントコンポーネントのための入力ハンドラは、適切なマウス移動、マウスボタン上下、又はキーボードボタン上下のメッセージをサーバコンポーネント116に対して送付する。
サーバコンポーネント116(代理ドロップソース)は、QueryContinueDrag方法を連続して呼び出すことができる。QueryContinueDrag方法のパラメータは、以下のフォーマットとすることができる。
HRESULT QueryContinueDrag(
BOOL fEscapePressed.
// ESCが押されているときTRUE
DWORD dwKeyState,
// キーボードとマウスの状態
QueryContinueDrag方法を使用して、ドロップソース(又は代理ドロップソース)に対しキーボードとマウスの現在状態に関して通知することができる。この入力に基づいて、ドロップソース(又は代理ドロップソース)は、ドラッグの継続、ドラッグの取消、又はドロップの開始許可を決定することができる。ドロップソースは、HRESULT戻り値を通じて、その決定を通知する。例えば、S_OKは継続を表示し、DRAGDROP_S_CANCELは取消を表示し、DRAGDROP_S_DROPはドロップの開始許可を表示することができる。カーソル133がアプリケーションウインドウ112Wの上にある間は、取消又はドロップ操作は始まっていないので、QueryContinueDragはS_OKを戻すことができる。
サーバコンポーネント116は、GiveFeedback 方法を呼び出して、アプリケーショショ112のドロップ効果(移動、コピー、リンク、など)をクライアントコンポーネント106に戻すことができる。GiveFeedback方法のパラメータは、以下のフォーマットとすることができる。
HRESULT GiveFeedback (
DWORD dwDropEffect,
// 現在の目標(例えば、アプリケーション112)
//ドロップ効果
一般的に、GiveFeedback方法は、ドロップソース(又は代理ドロップソース)に現在のドロップ効果を通知するので、ドロップソースは適切な視覚的フィードバックを与えることができる。視覚的フィードバックはHRESULT戻り値を通じて示される。S_OKの値はそのドロップソースがカーソルを適切に設定していることを意味する一方で、DRAGDROP_S_USEDEFAOULTCURSORSはソースがOLE提供の規定値カーソルを使用することで十分であることを示す。
サーバコンポーネント116がGiveFeedbackを呼び出すとき、アプリケーション112のドロップ効果は、UPDATE_DROP_EFFECTメッセージの中で、仮想チャンネル121を介してサーバコンポーネント116からクライアントコンポーネント106に送付される。クライアントコンポーネント106は、そのドロップ効果を記憶し、そのドロップ効果を(例えば、DropOver方法を起動することにより)アプリケーション102に戻す。
コンピュータシステム101におけるマウス及びキーボードの状態に基づいて、アプリケーション102は最終的に、ドラッグ操作を取り消すか又はドロップの発生を許可するかを決定する。したがって、実施形態によっては、ドラッグ操作が取り消される(したがってドロップは発生しない)。取消が起こると、クライアントコンポーネント106(代理ドロップターゲット)は、例えば、
HRESULT DragLeave()
のフォーマットのDragLeave方法を通じて通知される。
サーバコンポーネント116のためのイベントハンドラは、STOP_DRAG_DROPメッセージの中で示される取消結果を記憶することができる。したがって、次回にQuerryContinueDragを呼び出すとき、これはDRAGSTOP_S_CANCELを戻して、コンピュータシステム111でドラッグ操作を終了させる。
別の実施形態においてはドロップが生起する。したがって、方法200は、ドロップ操作を開始する処理をも含む(処理204)。例えば、アプリケーション102は、ドロップ操作をおこなってオブジェクト126をアプリケーション112に送付することができる。ユーザは入力装置を操作してドロップを開始する。例えば、ユーザは、カーソル133がアプリケーションウインドウの上にある間にマウスの左ボタンを離すことができる。
方法200は、ドラッグアンドドロップオブジェクトがリモートアプリケーションに転送されることを示すドロップ通知を受ける処理を含む(処理205)。例えば、クライアントコンポーネント106は、未処理のドラッグアンドドロップ操作の一部としてオブジェクト126をアプリケーション102に送付することを示すドロップ通知を受けることができる。方法200は、ドラッグアンドドロップオブジェクトを、デスクトップカーソルウインドウの座標位置と共に転送する要求を送る処理を含む(処理206)。例えば、ドロップ通知の受領に応答して、クライアントコンポーネント106はDO_DRAG_DROPメッセージをサーバコンポーネント116に送り、オブジェクト126をアプリケーション112に転送するよう要求することができる。DO_DRAG_DROPメッセージは、仮想チャンネル121を介して送り、カーソル133の座標位置を含むことができる。
方法200は、ドラッグアンドドロップオブジェクトとデスクトップウインドウカーソルの位置座標を転送する要求を受け取る処理を含む(処理207)。例えば、サーバコンポーネント116は、オブジェクト126のアプリケーション112への転送を要求するDO_DRAG_DROPメッセージを受け取ることができる。DO_DRAG_DROPメッセージがサーバコンポーネント116に到着するとき、イベントハンドラの中にドロップが発生するとの通知を記憶する。したがって、QuerryContinueDragを次回に呼び出すとき、QuerryContinueDragは、DRAGSTOP_S_DROP(ドロップが発生するとの表示)を戻す。しかし、この値を戻す前に、GIVE_FOCUSメッセージをクライアントコンポーネント106に送付することができる。
GIVE_FOCUSメッセージを受け取ると、クライアントコンポーネント106はSetForegroundWindow APIを呼び出すことにより入力にピントを合わせることができる。
サーバコンポーネント116は、仮想チャンネル121を介してDO_DRAG_DROP_RESPONSEメッセージをクライアントコンポーネント106に送ることができる。
方法200は、ドラッグアンドドロップオブジェクトの転送通知を相手方アプリケーションに送付する処理を含む(処理208)。例えば、サーバコンポーネント116は、オブジェクト126に関するドロップ通知を(例えば、アプリケーションウインドウ112Wの上にある)カーソル133の座標位置に基づいてアプリケーション112に転送することができる。方法200は、ドラッグアンドドロップオブジェクトを送付する通知を受け取る処理を含む(処理209)。例えば、アプリケーション112は、オブジェクト126に関するドロップ通知をサーバコンポーネント116から受け取ることができる。
方法200は、ドラッグアンドドロップオブジェクトを要求する処理を含む(処理210)。例えば、アプリケーション112はサーバコンポーネント116に対しオブジェクト126を要求することができる。方法200は、相手方アプリケーションからドラッグアンドドロップオブジェクトに関する要求を受け取る処理を含む(処理211)。例えば、サーバコンポーネント116は、オブジェクト126に関する要求をアプリケーション112から受け取ることができる。サーバコンポーネント116は、代理オブジェクト136の上にGetDataコールを検出することができる。
方法200は、ドラッグアンドドロップオブジェクトに関する要求をクライアントコンポーネントに送る処理を含む(処理212)。例えば、サーバコンポーネント116は仮想チャンネル121を介してFORMAT_DATA_REQUESTメッセージをクライアントコンポーネント106に送付することができる。FORMAT_DATA_REQUESTメッセージは、アプリケーション112のためにオブジェクト126を要求する。方法200は、サーバコンポーネントからドラッグアンドドロップオブジェクトに関する要求を受け取る処理を含む(処理213)。例えば、クライアントコンポーネント106は、仮想チャンネル121を介してサーバコンポーネント116からFORMAT_DATA_REQUESTメッセージを受け取ることができる。
方法200は、ドラッグアンドドロップオブジェクトに関する要求をローカルアプリケーションに転送する処理を含む(処理214)。例えば、クライアントコンポーネント106は、オブジェクト126に関する要求をアプリケーション102に転送することができる。方法200は、ドラッグアンドドロップオブジェクトに関する要求を受け取る処理を含む(処理215)。例えば、アプリケーション102は、オブジェクト126に関する要求を受け取ることができる。
実施形態によっては、FORMAT_DATA_REQUESTメッセージのためのイベントハンドラは、DragEnter方法に記憶するドラッグアンドドロップオブジェクトに関する参照を使用してGetDataコールを実行する。フォーマットデータを回収すると、適切に符号化する。
方法200は、ドラッグアンドドロップオブジェクトを送る処理を含む(処理216)。例えば、戻されるフォーマット及びドロップ効果を受領の後、アプリケーション102はオブジェクト126をクライアントコンポーネント106に送ることができる。方法200は、ローカルアプリケーションからドラッグアンドドロップオブジェクトを受け取る処理を含む(処理217)。例えば、クライアントコンポーネント106は、アプリケーション102からオブジェクト126を受け取ることができる。
方法200は、ドラッグアンドドロップオブジェクトをサーバコンポーネントに対し送付する処理を含む(処理218)。例えば、クライアントコンポーネント106は、オブジェクト126からのデータを含むFORMAT_DATA_RESPONSEメッセージを、サーバコンポーネント116に仮想チャンネル121を介して送付することができる。 方法200は、クライアントコンポーネントからドラッグアンドドロップオブジェクトを受け取る処理を含む(処理219)。例えば、サーバコンポーネント116は、オブジェクト126からのデータを含むFORMAT_DATA_RESPONSEメッセージを、クライアントコンポーネント106から仮想チャンネル121を介して受け取ることができる。
方法200は、ドラッグアンドドロップオブジェクトをリモートアプリケーションに転送する処理を含む(処理220)。例えば、サーバコンポーネント116は、データをオブジェクト126からアプリケーション112に転送することができる。方法200は、ドラッグアンドドロップオブジェクトを受け取る処理を含む(処理221)。例えば、アプリケーション112は、データをオブジェクト126から受け取ることができる。したがって、選択するドロップ効果に応じて、オブジェクト126からのデータは、アプリケーション102からアプリケーション112に移動、コピー、リンク、ハイパーリンク、又はショートカットされる。
実施形態によっては、適切に符号化されたデータを、FORMAT_DATA_RESPONSEメッセージの中で、続けて有線を介して送信する。サーバコンポーネント116におけるこのFORMAT_DATA_RESPONSEメッセージの受け取りに際し、適切なイベントハンドラを呼び出しフォーマットされたデータを抽出して復号化する。イベントハンドラが実行を完了すると、フォーマットされたデータはドロップターゲットに戻されて、ローカルドロップターゲットのDrop方法コールは完了する結果となる。
Dropコールが完了するとき、DoDragDropループは終結してドロップ効果が(例えば、サーバコンポーネント116に)戻される。ドラッグアンドドロップオブジェクトはPerformedDropEffect及びLogicalPerformedDropEffectに関しクエリーされる。これら二つのフォーマットは、最終のドロップ効果及びDoDragDrop HERESULTと共に、DO_DRAG_DROP_RESPONSEメッセージの中で、クライアントコンポーネント106にローカルに送付される。クライアントコンポーネント106は、これらの結果をその代理ドロップ方式に戻す。DO_DRAG_DROP_RESPONSEメッセージの受け取りに際して、クライアントコンポーネント106にあるイベントハンドラはその結果を記憶する。クライアントコンポーネント106の代理ドロップ方式は、戻されたフォーマットを用いてオブジェクト126を初期化しドロップ効果及びHRESULTをOLEサブシステムに戻して、実行を継続する。
クライアントコンポーネント106(代理ドロップターゲット)及びサーバコンポーネント116(代理ドロップソース)は、各種の異なる方法で構成して、方法200の実装を容易にすることができる。
例えば、クライアントコンポーネント106(代理ドロップターゲット)は、ドラッグアンドドロップモーダルループを開始する時期を表示する構成とすることができる。クライアントコンポーネント106は、START_DRAG_DROPメッセージを、仮想チャンネル121を介してサーバコンポーネント116に送付することができる。START_DRAG_DROPが処理されるとき、サーバコンポーネント116(代理ドロップソース)は、アプリケーション112(ドロップターゲット)に対してドラッグアンドドロップモーダルループを開始することができる。
クライアントコンポーネント106は、アプリケーション102(ドロップソース)がサポートすることのできるフォーマットのリストを送付する構成とすることもできる。DragEnter方法のパラメータのうち一つは、アプリケーション102が提供することのできるデータを含むデータオブジェクトに対するポインタである。フォーマットエニュメレータを用いて、フォーマット名をこのデータオブジェクトから抽出し、符号化し、次いでパラメータとしてSTART_DRAG_DROPメッセージに送付して、サーバコンポーネント116が代理データオブジェクトを作成することができるようにする。
クライアントコンポーネント106は、リモートのマウス位置、キー状態及びキーボード状態を更新する構成とすることもできる。ドラッグアンドドロップモーダルループを開始する直前に、サーバコンポーネント116は、START_DRAG_DROPメッセージを、仮想チャンネル121を介して送付することができる。クライアントコンポーネント106がこのメッセージを受け取るとき、クライアントコンポーネント106のDragOver方法は解放されて、現在のマウス位置、マウスキー状態及びキーボード状態の更新をサーバコンポーネント116に送付する。マウス及びキーボード双方のキー状態は、DragOver方法に渡されるパラメータから獲得する。これらの更新は、入力フォーカス及びマウスキャプチャを有するアプリケーション102を補う。
クライアントコンポーネント106は、サーバコンポーネント116から受け取る最新のドロップ効果を戻す構成とすることもできる。サーバコンポーネント116は、アプリケーション112がドロップ効果を変更するときは何時でも、UPDATE_DROP_EFFECTメッセージをクライアントコンポーネント106に送付することができる。DropOver処理の一部として、更新ドロップ効果はコンピュータシステム101のOLEサブシステムに戻され、アプリケーション102に対し現在のドロップ効果に関して通知する。
クライアントコンポーネント106は、現在のドラッグ操作の状態に関して、サーバコンポーネント116を更新する構成とすることもできる。DragLeave方法が呼び出されると、アプリケーション102は、ドラッグアンドドロップ操作を取り消すと決定している。したがって、アプリケーション112は、同じことをして自分のDragLeave方法を呼び出さなければならない。クライアントコンポーネント106は、適切な情報をサーバコンポーネント116に中継してアプリケーション112に自分のDragLeave方法を呼び出させる。
クライアントコンポーネント106は、ドロップが発生するとオブジェクト126に対するポインタを記憶する構成とすることもできる。ドロップが行われると、次いでアプリケーション112はオブジェクト126を要求することができる。オブジェクト126を戻せることを保証する補助のため、クライアントコンポーネント106は、ドロップコールで受け取ったオブジェクト126に対するポインタを記憶することができる。したがって、オブジェクトに対する要求をFORMAT_DATA_REQUESTメッセージの形で受け取るとき、クライアントコンポーネント106は、セーブしたオブジェクト126に向かってGetDataコールを実行することにより適切なフォーマットを提供し、そのデータをFORMAT_DATA_RESPONSメッセージへ戻すことができる。
サーバコンポーネント116は、正しいフォーマット名を公示する代理データオブジェクトを作成する構成とすることができる。START_DRAG_DROPメッセージパラメータのうち一つは、アプリケーション112が提供することのできるフォーマットのリストである。リモートモーダルループを開始する前に、代理データオブジェクトを作成し、これらのフォーマット名で投入する。次いで、作成したデータオブジェクトを、コンピュータシステム111のOLEサブシステムに、DoDragDropコールの中のパラメータとして渡す。こうして、リモートセッション内部のドロップターゲットは、ドロップが発生するとフォーマットをクエリーしてデータを取り出すことができる。
サーバコンポーネント116は、現在のドロップ効果をクライアントコンポーネント106に中継する構成とすることもできる。アプリケーション112がコンピュータシステム111のOLEサブシステムに戻すドロップ効果は、GiveFeedbackコールの一部としてクライアントコンポーネント106に渡される。このドロップ効果を、仮想チャンネル121を介してコンピュータシステム101にUPDATE_DROP_EFFECTメッセージに渡して、そのDragOver方法を呼び出すときクライアントコンポーネント106がこのドロップ効果を戻すことができるようにする。
サーバコンポーネント116は、クライアントコンポーネント106が命令するとき、取消又はドロップを開始する構成とすることもできる。コンピュータ101においてドロップ又は取消の操作を行うとき、クライアントコンポーネント106のDrop又はDropLeave方法を呼び出すことができる。これが生じるとき、サーバコンポーネント116にメッセージを送付して、次回にQueryContinueDragを呼び出す際、コンピュータシステム111のOLEサブシステムに正しいHRESULTを戻すことができるようにする。STOP_DRAG_DROPメッセージを受け取るとDRAGDROP_S_CANCELメッセージを戻す。DO_DRAG_DROPメッセージを受け取ると、DRAGDROP_S_DROPメッセージを戻す。さもなければ、S_OKを戻し、モーダルループは継続する。
代理オブジェクト136を、START_DRAG_DROPメッセージを受け取るとき作成することができる。代理オブジェクト136は、オブジェクト126が公示するのと同一のフォーマットを戻すことにより、実質的にオブジェクト126を模倣する。代理オブジェクト136がデータを要求するときは、FORMAT_DATA_REQUESTメッセージをコンピュータシステム101に送付する。クライアントコンポーネント106は次いでオブジェクト126からデータを取り出してそのデータをFORMAT_DATA_RESPONSEメッセージへ送り返すことができる。
したがって、本発明の実施形態は、リモートモジュールからローカルモジュールにオブジェクトをドラッグアンドドロップすることを容易にすることができる。
図3Aは、リモートデスクトップモジュールからローカルデスクトップモジュールへのオブジェクトのドラッグアンドドロップを容易にすることができるコンピュータアーキテクチャの例300を示す。コンピュータシステム301(例えば、クライアント)及びコンピュータシステム311(例えばサーバ)。コンピュータシステム301及びコンピュータシステム311は、例えば、「LAN」(Local Area Network))、「WAN」(Wide Area Network)、又はインターネット、のようなネットワークに接続することができる。したがって、コンピュータシステム301及びコンピュータシステム311における様々なコンポーネントは、ネットワークに接続する他のコンポーネントと同様、互いにデータを送受信することができる。したがって、コンポーネントは、メッセージ関連のデータを作成し、メッセージ関連のデータをネットワーク(例えば、「IP」(Internet Protocol))、データグラム及び、「TCP」(Transmission Control Protocol)、「RDP」(Remote Desktop Protocol)、「HTTP」(Hypertext Transfer Protocol)、「SMTP」(Simple Mail Transfer Protocol、「ICA」(Independent Computing Architecture)のようなIPデータグラムを使用する他の上層プロトコル、など)を介して交換することができる。
図に示すように、コンピュータシステム301は、アプリケーション302、クライアントモジュール306、及びユーザインタフェース304を含み、コンピュータシステム111は、アプリケーション312、及びサーバモジュール316を含む。コンピュータシステム301及びコンピュータシステム311は、ネットワーク上に設立されるターミナルサーバセッション331(例えば,RDPセッション)を経由して互いに通信する。クライアントコンポーネント306及びサーバコンポーネント316は同時に使用して、ターミナルサーバセッション331の管理を容易にすることができる。例えば、ユーザインタフェース304で受け取るユーザ入力をコンピュータシステム301からコンピュータシステム311に転送すること、ユーザ入力をコンピュータシステム311にある適切なリモートアプリケーションに転送すること、リモートアプリケーションからの出力をコンピュータシステム311において受け取ること、リモートアプリケーションの出力をコンピュータシステム311からコンピュータシステム301に転送すること、及びリモートアプリケーションの出力をユーザインタフェース304で出力することである。このように、(ユーザインタフェース304の観点から)リモートアプリケーションに対し、コンピュータシステム301において入力を受け取り、出力を提示する一方で、処理は実際にコンピュータシステム311において発生する。
仮想チャンネル321は、ドラッグアンドドロップオブジェクトをコンピュータシステム311からコンピュータシステム301に転送する構成のチャンネルであることができる。仮想チャンネル321は、クライアントコンポーネント306にあるドラッグアンドドロップスレッドをサーバコンポーネント316にあるドラッグアンドドロップスレッドに接続すること及びその逆を行うことができる。したがって、クライアントコンポーネント306及びサーバコンポーネント316を同時に使用して、コンピュータシステム301にある適切なアプリケーションとコンピュータシステム311にある適切なアプリケーションとの間の仮想チャンネル321を介して、ドラッグアンドドロップデータを転送することができる。
図3Bは、ローカルモジュールからリモートモジュールへのドラッグアンドドロップ操作を描写するデスクトップウインドウの例323を示す。図に示すように、デスクトップウインドウ323はユーザインタフェース304の一部であって、アプリケーションウインドウ302W及びリモートデスクトップ313を含む。アプリケーションウインドウ302Wは、アプリケーション302に対応し、アプリケーション302に対するユーザ入力を受け取りアプリケーション302からの出力をユーザに提示する構成となっている。リモートデスクトップ313は、コンピュータシステム311からリモートである任意のアプリケーションに対するアプリケーションウインドウを含む。例えば、アプリケーションウインドウ312Wはアプリケーション312に対応し、アプリケーション312に対するユーザ入力を受け取りアプリケーション312からの出力をユーザに提示する構成となっている。
図4A−4Cは、リモートモジュールからローカルモジュールに対してオブジェクトをドラッグアンドドロップするための方法の例400の流れ図を示す。方法400を、コンピュータアーキテクチャ300内のコンポーネント及びデータに関して記述する。
方法400は、リモートアプリケーションウインドウからドラッグアンドドロップオブジェクトを選択する処理を含む(処理401)。例えば、コンピュータシステム301のユーザはアプリケーションウインドウ312W内部からオブジェクト326を選択することができる。オブジェクト326は、例えば、テキスト、グラフィックス、又は音声データの一部、スプレッドシートのセル、データベース項目、電子メッセージ、などのようなコンピュータシステムにある事実上選択可能な任意のオブジェクトである。
方法400は、デスクトップウインドウカーソルを変更してドラッグアンドドロップオブジェクトを選択することを視覚的に表現する処理を含む(処理402)。例えば、オブジェクト326を選択した後、カーソル333を変更して、ドロップ効果標識334を含むことができる。ドロップ効果には、移動、コピー、リンク、ハイパーリンクの作成、及び選択オブジェクトへのショートカットの作成の何れをも含むことができる。カーソル333は、異なる方法で変更又は補完して異なるドロップ効果を表示することができる。例えば、ドロップ効果標識334を表示して、そのドロップ効果が移動することを示すことができる。
ドロップ効果は、アプリケーションに対し利用可能なドロップ効果から選択することができる。カーソル333がデスクトップウインドウ323の異なるウインドウの間で移行するにつれ、表示されるドロップ効果標識を変更することができる。例えば、カーソル333がアプリケーションウインドウ312Wの境界の内側にあるときは、アプリケーション312に対する(例えば、移動の)規定値ドロップ効果を表示することができる。カーソル333が任意のアプリケーションウインドウの境界の外側にあるときは、デスクトップウインドウ323(例えば、オペレーティングシステム)に対する規定値ドロップ効果を表示することができる。例えば、デスクトップウインドウ323に対しては、ドラッグアンドドロップ機能を全くサポートしないことがあるので、カーソル333は、ユーザインタフェース304のこの領域にあるとき「不可」記号に変形する。アプリケーションウインドウ302Wに入ると、アプリケーション302に対する(例えば、移動の)規定値ドロップ効果を表示することができる。
方法400は、デスクトップウインドウカーソルが、リモートアプリケーションウインドウの境界の外側から内側に移動したことを検知するクライアントコンポーネントの処理を含む(処理403)。例えば、クライアントコンポーネント306は、カーソル333がアプリケーションウインドウ302Wの境界の外側から内側に移動したことを検知することができる。(図3Bの点線は、アプリケーションウインドウ312Wから、リモートデスクトップ313及びデスクトップウインドウ323を通って、アプリケーションウインドウ302Wに到るカーソル333の経路を示す。)
方法400は、デスクトップウインドウカーソルが移動したことを示すメッセージを送付する処理を含む(処理404)。例えば、クライアントコンポーネント306は、MOUSE_HAS_LEFTメッセージをサーバコンポーネント316に仮想チャンネル321を介して送付することができる。このMOUSE_HAS_LEFTメッセージは、カーソル333がアプリケーションウインドウ312Wの外側(及び/又はリモートデスクトップ313の外側)に移動したことを示す。方法400は、デスクトップウインドウカーソルが移動したことを示すメッセージを受け取る処理を含む(処理405)。例えば、サーバコンポーネント316はMOUSE_HAS_LEFTメッセージを、仮想チャンネル321を介してクライアントコンポーネント306から受け取ることができる。
方法400は、デスクトップウインドウカーソルの移動は、未処理のドラッグアンドドロップ操作に関連すると判定する処理を含む(処理406)。例えば、サーバコンポーネント316は、カーソルがアプリケーションウインドウ313の外側へ移動することは、オブジェクト326に対するドラッグアンドドロップ操作に関連すると判定することができる。サーバコンポーネント316は、共通オブジェクトモデル(「COM」)APIを呼び出して、実際のドラッグアンドドロップ操作が未処理のものであるか又はマウスが別の理由で移動されるのか否かをクエリーすることができる。
処理401、402、403、404及び405を、リモートモジュールからローカルモジュールに対するドラッグアンドドロップ操作の設定の一部として含むことができる。例えば、ユーザがマウスボタンをクライアントウインドウの中で押下するとき、入力ハンドラウインドウがマウスをキャプチャする。マウスをドラッグする間、繰り返しマウスをチェックして、未だに入力ハンドラウインドウ上にあるか否かを判定することができる。マウスが入力ハンドラウインドウ上にない場合は、ドラッグがリモートモジュールからローカルモジュールに対して開始されている可能性がある。マウスがリモートモジュールを離れたことを検出した後、MOUSE_HAS_LEFTメッセージをサーバコンポーネント316に仮想チャンネルを介して送付する。
このメッセージの受け取りに際して、サーバコンポーネント316は移行して代理ドロップターゲットとなる。代理ドロップターゲットへの移行は、少なくとも二つの異なる機構を用いて達成することができる。一つの機構は、アルファブレンドされたドラッグアンドドロップウインドウを最大にしてセッションスクリーン物的財産全部を満たし、次いでそのアルファブレンドされたドラッグアンドドロップウインドウをZオーダのトップに強制することを含む。別の機構は、OLE API呼び出すことを含む。
代理ドロップターゲットサーバへの移行の後、コンポーネント316はリモートセッション内で代理ドロップターゲットとして作用することができる。例えば、代理ドロップターゲットになるに際して、サーバコンポーネント316に対するDragEnter方法を呼び出すことができる。このDragEnter方法は、オブジェクト326を記憶させ、START_DRAG_DROPメッセージをクライアントコンポーネント306に送付させる。
START_DRAG_DROPメッセージはクライアントコンポーネント306上でイベントハンドラが処理することができる。このイベントハンドラは、フォーマット名及び許容ドロップ効果を抽出することができる。これに応じ、クライアントコンポーネント306は、DO_MODAL_LOOPイベントを開始して、コンピュータシステム301に対する入力ハンドラに、ローカルのドラッグアンドドロップループを開始することを通知する。DO_MODAL_LOOPイベントを受け取ると、入力ハンドラは代理オブジェクト328を構築してドラッグアンドドロップ通知イベントをクライアントコンポーネント306にリダイレクトする。こうして、クライアントコンポーネント306を代理ドロップソースに移行させる。
ドラッグアンドドロップ通知イベントを、ドラッグアンドドロップスレッドの上のイベントシンクを無効にし、クライアントコンポーネント306対して特別に作成するイベントシンクを有効にすることによりリダイレクトすることができる。DoDragDropモーダルループを開始する前に、ドラッグアンドドロップスレッドに合図して、ループをまさに開始しようとしていることを通知する。これに応じて、クライアントコンポーネント306は、START_DRAG_DROP_RESPONSEメッセージをサーバコンポーネント316に送付することができる。START_DRAG_DROP_RESPONSEメッセージを受け取ると、サーバコンポーネント316は、例えば、DO_DRAG_DROP及びSTOP_DRAG_DROPメッセージのようなドラッグアンドドロップメッセージをクライアントコンポーネント306に自由に送付することができる。
しかしながら、マウスをアプリケーションウインドウ302W内であちこちドラッグしているとき、様々なマウス及びキーボードイベントが関係することがある。QueryContinueDragをアプリケーション312(リモートアプリケーション)の上で使用して、この情報に対する更新を獲得することができる。現在の入力状態を有するサーバコンポーネント316を更新するには、入力ハンドラが適切なマウスボタンを上げ下げするよう、及びキーボードボタンを上げ下げするよう送付する。UPDATE_DROP_EFFECTメッセージを活用することにより、GiveFeedback方法をクライアントコンポーネント306の上で呼び出し、アプリケーション302が戻すドロップ効果を用いてサーバコンポーネント316を更新する。コンピュータシステム311において、ドロップ効果を記憶し、後にサーバコンポーネント316が呼び出すDragOver方法に戻す。
コンピュータシステム301におけるマウス及びキーボードの状態に基づいて、アプリケーション312はドラッグ操作を取り消すか又はドロップの発生を許すかを最後的に決定することができる。このように、実施形態によっては、ドラッグ操作を取り消す(したがってドロップは生じない)。取消が行われると、サーバコンポーネント316(代理ドロップソース)には、DragLeave方法を通じて通知する。
取消に応じて、サーバコンポーネント316はクライアントコンポーネント306にSTOP_DRAG_DROPメッセージを送付することもできる。STOP_DRAG_DROPメッセージを送付した後、オブジェクト326を解放することができる。クライアントコンポーネント306に対するイベントハンドラは、STOP_DRAG_DROPメッセージの中に示す取消結果を記憶することができる。こうして次回にQueryContinueDragを呼び出すと、これはDRAGDROP_S_CANSELを戻して、コンピュータシステム301においてドラッグ操作を終了させる。
別の実施例においては、ドロップが生じる。ユーザがローカルアプリケーションウインドウ302W上でマウスをあちこち動かすとき、ユーザはマウスボタンを解放することがある。マウスボタンが解放されると、クライアントコンポーネント306は、その解放をサーバコンポーネント316に仮想チャンネル321を介して通知する。これに応じて、サーバコンポーネント316は、クライアントコンポーネント306にDO_DRAG_DROPメッセージを送付して、アプリケーション302に対するオブジェクト326の転送を要求する。サーバコンポーネント316は、DO_DRAG_DROPメッセージの表示をアプリケーション302に送付することができる。クライアントコンポーネント306は、DO_DRAG_DROP_RESPONSEメッセージをサーバコンポーネント316に仮想チャンネル321を介して送付することができる。
方法400は、ドラッグアンドドロップオブジェクトに関するクエリーを送付する処理を含む(処理407)。例えば、DO_DRAG_DROPメッセージの表示に応答して、アプリケーション302は、代理オブジェクト328に関してクエリーすることができる。方法400は、ドラッグアンドドロップオブジェクトに関するクエリーをローカルアプリケーションから受け取る処理を含む(処理t408)。例えば、クライアントコンポーネント306は、アプリケーション302からオブジェクト326に関するクエリーを受け取ることができる。
方法400は、サーバコンポーネントにドラッグアンドドロップオブジェクトに関する要求を送付する処理を含む(処理409)。例えば、クライアントコンポーネント306は、FORMAT_DATA_REQUESTメッセージをサーバコンポーネント316に仮想チャンネル321を介して送付することができる。FORMAT_DATA_REQUESTメッセージは、アプリケーション312に対してオブジェクト326を要求する。方法400は、クライアントコンポーネントからドラッグアンドドロップオブジェクトに関する要求を受け取る処理を含む(処理410)。例えば、サーバコンポーネント316は、FORMAT_DATA_REQUESTメッセージを、クライアントコンポーネント306から仮想チャンネル321を介して受け取ることができる。
方法400は、ドラッグアンドドロップオブジェクトに関する要求をリモートアプリケーションに転送する処理を含む(処理411)。例えば、サーバコンポーネント316はオブジェクト326に関する要求をアプリケーション312に転送することができる。方法400は、ドラッグアンドドロップオブジェクトに関する要求を受け取る処理を含む(処理412)。例えば、アプリケーション312はサーバコンポーネント316からオブジェクト326に関する要求を受け取ることができる。
方法400は、ドラッグアンドドロップオブジェクトを送付する処理を含む(処理413)。例えば、アプリケーション312は、オブジェクト326をサーバコンポーネント316に送付することができる。方法400は、ドラッグアンドドロップオブジェクトをリモートアプリケーションから受け取る処理を含む(処理414)。例えば、サーバコンポーネント316は、アプリケーション312からオブジェクト326を受け取ることができる。
方法400は、ドラッグアンドドロップオブジェクトをクライアントコンポーネントに送付する処理を含む(処理415)。例えば、サーバコンポーネント316は、FORMAT_DATA_RESPONSEメッセージを、オブジェクト326からのデータを含めて、クライアントコンポーネント306に仮想チャンネル321を介して送付することができる。方法400は、サーバコンポーネントからドラッグアンドドロップオブジェクトを受け取る処理を含む(処理416)。例えば、クライアントコンポーネント306は、FORMAT_DATA_RESPONSEメッセージを、オブジェクト326からのデータを含めて、サーバコンポーネント306から仮想チャンネル321を介して受け取ることができる。
方法400は、ドラッグアンドドロップオブジェクトをローカルアプリケーションに転送する処理を含む(処理417)。例えば、クライアントコンポーネント306は、オブジェクト326からのデータをアプリケーション312に転送することができる。方法400は、ドラッグアンドドロップオブジェクトを受け取る処理を含む(処理418)。例えば、アプリケーション302は、オブジェクト306からのデータをクライアントコンポーネント306から受け取ることができる。したがって、選択するドロップ効果にしたがって、オブジェクト326からのデータは、アプリケーション312からアプリケーション302に、移動、コピー、リンク、ハイパーリンク又はショートカットされる。
クライアントコンポーネント306(代理ドロップソース)及びサーバコンポーネント316(代理ドロップターゲット)を各種の異なる方法で構成して方法400の実装を容易にすることができる。
例えば、クライアントコンポーネント306(代理ドロップソース)は、正しいフォーマット名を公示する代理データオブジェクトを作成し、現在のドロップ効果をサーバコンポーネント316に中継し、サーバコンポーネント316が命令するとき取消又はドロップを指示し、及びアプリケーションウインドウ312W内のマウスキー状態及びキーボード状態を更新する構成とすることができる。QueryContinueドラッグ方法を使用して、キーボードキー及びマウスボタンの状態を含むキー状態ベクトルを受け取ることができる。キーボードキーとマウスボタンの状態は、サーバコンポーネント316に仮想チャンネル321を介して送付することができる。
サーバコンポーネント316(代理ドロップターゲット)は、ドラッグアンドドロップモーダルモードを開始する時期を表示し、アプリケーション312が提供することのできるフォーマットのリストを送付し、クライアントコンポーネント306から受け取る最新のドロップ効果をアプリケーション312に戻し、未処理のドラッグアンドドロップ操作の状態に関してクライアントコンポーネント306を更新し、及びドロップが発生する場合はポインタオブジェクト326を記憶する構成とすることができる。
代理データオブジェクト328は、START_DRAG_DROPメッセージを受け取るとき作成することができる。代理データオブジェクト328は、オブジェクト326が公示するのと同一のフォーマットを戻すことにより、実質的にオブジェクト326を模倣する。代理データオブジェクト328がデータを要求するとき、それはFORMAT_DATA_REQUESTメッセージをコンピュータシステム311に送付する。サーバコンポーネント316は次いでオブジェクト326からデータを取り出してそのデータをFORMAT_DATA_RESPONSEメッセージに送り返す。
したがって、本発明の実施形態は、リモートモジュールからローカルモジュールにオブジェクトをドラッグアンドドロップすることを容易にすることができる。
本発明は、その精神又は本質的特徴から逸脱することなく他の固有の形で具体化することができる。記述する実施形態はあらゆる観点において単に例示的なものであって限定的なものではないと見なすべきである。したがって、発明の範囲は、前述の内容によってではなく、付属請求項によって示される。請求項の等価の意味及び範囲に入る変更はすべて、請求項の範囲に包含される。
オブジェクトをローカルモジュールからリモートモジュールにドラッグアンドドロップすることを容易にする例示的コンピュータアーキテクチャの一例を示す図である。 ローカルモジュールからリモートモジュールに対するドラッグアンドドロップ操作を描写する例示的デスクトップウインドウを示す図である。 オブジェクトをローカルモジュールからリモートモジュールにドラッグアンドドロップするための、例示的方法の流れを示す図である。 オブジェクトをローカルモジュールからリモートモジュールにドラッグアンドドロップするための、例示的方法の流れを示す図である。 オブジェクトをローカルモジュールからリモートモジュールにドラッグアンドドロップするための、例示的方法の流れを示す図である。 リモートモジュールからローカルモジュールにオブジェクトをドラッグアンドドロップすることを容易にする例示的コンピュータアーキテクチャの一例を示す図である。 リモートモジュールからローカルモジュールに対するドラッグアンドドロップ操作を描写する例示的デスクトップウインドウを示す図である。 リモートモジュールからローカルモジュールにオブジェクトをドラッグアンドドロップするための、例示的方法の流れを示す図である。 リモートモジュールからローカルモジュールにオブジェクトをドラッグアンドドロップするための、例示的方法の流れを示す図である。 リモートモジュールからローカルモジュールにオブジェクトをドラッグアンドドロップするための、例示的方法の流れを示す図である。

Claims (20)

  1. コンピュータシステム(101)において、該コンピュータシステム(101)は該コンピュータシステム(101)において稼働するローカルアプリケーション(102)とクライアントコンポーネント(106)とを備え、該クライアントコンポーネント(106)はサーバコンピュータシステム(111)にあるサーバコンポーネント(116)とのターミナルサーバセッション(131)に参加し、ドラッグアンドドロップを使用してオブジェクトをローカルアプリケーション(102)からサーバコンピュータシステム(111)にあるリモートモジュールに転送する方法であって、該方法は、
    デスクトップウインドウカーソル(133)がリモートアプリケーション(112)のためのアプリケーションウインドウ(112W)の境界の外側から内側に移動したことをクライアントコンポーネント(106)が検出する処理と、
    未処理のドラッグアンドドロップ操作を示すドロップ通知であって、ドラッグアンドドロップオブジェクト(126)がリモートアプリケーション(112)に転送される旨を示すドロップ通知をクライアントコンポーネント(106)が受け取る処理と、
    ドラッグアンドドロップオブジェクト(126)をデスクトップウインドウカーソル(133)の座標位置と共にサーバコンピュータシステム(111)にターミナルサーバセッション(131)を介して転送する要求を、ドロップ通知の受領に応答してクライアントコンポーネント(106)が送付する処理と、
    ドラッグアンドドロップオブジェクトに関する要求をサーバコンピュータシステム(111)からターミナルサーバセッション(131)を介してクライアントコンポーネント(106)が受け取る処理と、
    ドラッグアンドドロップオブジェクト(126)に関する要求の受領に応答して、リモートアプリケーション(112)の代わりにクライアントコンポーネント(106)が代理ドロップターゲットとして作用することであって、
    ドラッグアンドドロップオブジェクト(126)に関する要求をローカルアプリケーション(102)に転送する処理と、
    ドラッグアンドドロップオブジェクト(126)に関する要求に応答して送付されるローカルアプリケーション(102)からのドラッグアンドドロップオブジェクト(126)を受け取る処理とを含む、クライアントコンポーネント(106)が代理ドロップターゲットとして作用することと、
    リモートアプリケーション(112)へのデリバリのために、クライアントコンポーネント(106)が、ターミナルサーバセッション(131)を介してドラッグアンドドロップオブジェクト(126)を、サーバコンピュータシステム(111)に送付する処理と
    を含むことを特徴とする方法。
  2. クライアントコンポーネントがドラッグアンドドロップオブジェクトをローカルアプリケーションから受け取ることができるよう、クライアントコンポーネントを代理ドロップターゲットとして構成する処理を更に含むことを特徴とする請求項1に記載の方法。
  3. ローカルアプリケーションのためのユーザインタフェースを表すローカルアプリケーションウインドウの内側からドラッグアンドドロップオブジェクトを選択するユーザ入力を受け取る処理と、
    デスクトップウインドウカーソルを変更して、ドラッグアンドドロップオブジェクトが変更されたことを視覚的に示す処理と
    を更に含むことを特徴とする請求項1に記載の方法。
  4. デスクトップウインドウカーソルがリモートアプリケーションのためのアプリケーションウインドウの境界の外側から内側に移動したことを検出する処理は、デスクトップウインドウカーソルがローカルアプリケーションウインドウの境界の内側からリモートアプリケーションのためのアプリケーションウインドウの境界の内側に移動したことを検出する処理を含むことを特徴とする請求項1に記載の方法。
  5. 未処理のドラッグアンドドロップ操作を示すドロップ通知を受け取るクライアントコンポーネントの処理は、入力装置の上のボタンの状態における変化を検出する処理を含むことを特徴とする請求項1に記載の方法。
  6. ドラッグアンドドロップオブジェクトをデスクトップウインドウカーソルの座標位置と共にターミナルサーバセッションを介してサーバコンピュータシステムに転送する要求を送付するクライアントコンポーネントの処理は、メッセージをターミナルサーバセッションの仮想チャンネルの上で送付する処理を含むことを特徴とする請求項1記載の方法。
  7. ドラッグアンドドロップオブジェクトをデスクトップウインドウカーソルの座標位置と共にサーバコンピュータシステムに対しターミナルサーバセッションを介して転送する要求を送付するクライアントコンポーネントの処理は、リモートデスクトッププロトコルセッションを介してメッセージを送付する処理を含むことを特徴とする請求項1記載の方法。
  8. コンピュータシステムにおいて、該コンピュータシステムは該コンピュータシステムにおいて稼働する一つ以上のリモートアプリケーションとサーバコンポーネントとを含み、該サーバコンポーネントはクライアントコンピュータシステムにあるクライアントコンポーネントとのターミナルサーバセッションに参加し、コンピュータシステムにおいて稼働する一つ以上のリモートアプリケーションはターミナルサーバセッション上でクライアントコンピュータシステムにより遠隔にアクセスされるよう構成され、ドラッグアンドドロップを使用してオブジェクトを一つ以上のリモートアプリケーションのうち一つに対しクライアントコンピュータシステムにあるモジュールから転送する方法であって、該方法は、
    ターミナルサーバセッションを介して送付される、ドラッグアンドドロップオブジェクトをコンピュータシステムに転送する要求とクライアントコンピュータシステムにおけるデスクトップウインドウカーソルの座標位置とをサーバコンポーネントが受け取る処理と、
    ドラッグアンドドロップオブジェクト転送通知を座標位置に相当するリモートアプリケーションに対しサーバコンポーネントが転送する処理と、
    リモートアプリケーションからドラッグアンドドロップオブジェクトに関する要求を受け取るサーバコンポーネントの処理を含めて、ドラッグアンドドロップオブジェクトを転送する要求の受け取りに応答してクライアントコンピュータシステムにあるアプリケーションの代わりにサーバコンポーネントが代理ドロップソースとして作用することと、
    ドラッグアンドドロップオブジェクトに関する要求をクライアントコンポーネントにターミナルサーバセッションを介してサーバコンポーネントが転送する処理と、
    ドラッグアンドドロップオブジェクトをクライアントコンポーネントからターミナルサーバセッションを介してサーバコンポーネントが受け取る処理と、
    ドラッグアンドドロップオブジェクトをリモートコンピュータに対して送付するサーバコンポーネントの処理を含めて、ドラッグアンドドロップオブジェクトの受け取りに応答してクライアントコンピュータシステムにあるアプリケーションの代わりに代理ドロップソースとして作用するサーバコンポーネントと、
    を含むことを特徴とする方法。
  9. クライアントコンピュータシステムにおけるデスクトップウインドウカーソルの位置を示すコンピュータシステムおよび座標位置にドラッグアンドドロップオブジェクトを転送する要求を受け取るサーバコンポーネントの処理は、ターミナルサーバセッションの仮想チャンネルを介してメッセージを受け取る処理を含むことを特徴とする請求項8に記載の方法。
  10. 代理オブジェクトを作成してドラッグアンドドロップオブジェクトが公示するフォーマットを模倣する処理を更に含むことを特徴とする請求項8に記載の方法。
  11. サーバコンポーネントを代理ドロップソースとして構成し、サーバコンポーネントがドラッグアンドドロップオブジェクトをリモートアプリケーションに対して提供することができるようにする処理を更に含むことを特徴とする請求項8に記載の方法。
  12. ドラッグアンドドロップモーダルループを開始するサーバコンポーネントの処理を更に含むことを特徴とする請求項8に記載の方法。
  13. コンピュータシステムにおいて、該コンピュータシステムは、該コンピュータシステムにおいて稼働するローカルアプリケーションとクライアントコンポーネントとを含み、クライアントコンポーネントはサーバコンピュータシステムにあるサーバコンポーネントとのターミナルサーバセッションに参加し、ドラッグアンドドロップを使用して、オブジェクトをサーバコンピュータシステムにあるリモートモジュールからローカルアプリケーションに対して転送する方法であって、該方法は、
    デスクトップウインドウカーソルがリモートアプリケーションのためのアプリケーションウインドウの境界の内側から外側に移動されたことをクライアントコンポーネントが検出する処理と、
    デスクトップウインドウカーソルがリモートアプリケーションのためのアプリケーションウインドウの境界の内側から外側に移動されたことをサーバコンポーネントに対して通知するメッセージを、ターミナルサーバセッションを介してサーバコンポーネントにクライアントコンポーネントが送付する処理と
    ドラッグアンドドロップオブジェクトに関する要求の受領に応答してリモートアプリケーションの代わりに代理ドロップソースとしてクライアントコンポーネントが作用するであって、ドラッグアンドドロップオブジェクトに関するクエリーをローカルアプリケーションから受け取るクライアントコンポーネントの処理を含み、そのクエリーは、ドラッグアンドドロップオブジェクトをローカルアプリケーションに対して転送することを表すローカルアプリケーションにおけるドロップ通知を表示することと、
    ドラッグアンドドロップオブジェクトに関する要求をクライアントコンポーネントがサーバコンポーネントに送付する処理であって、その要求はターミナルサーバセッションを介してクエリーに応答して送付され、その要求はサーバコンポーネントに対しローカルアプリケーションがドラッグアンドドロップオブジェクトを要求していることを示す、クライアントコンポーネントが送付する処理と、
    ドラッグアンドドロップオブジェクトをサーバコンピュータシステムからターミナルサーバ接続を介して受け取るクライアントコンポーネントの処理と、
    ドラッグアンドドロップオブジェクトをローカルコンピュータに送付するクライアントコンポーネントの処理を含め、ドラッグアンドドロップオブジェクトの受領に応答してリモートアプリケーションの代わりにサーバコンポーネントが代理ドロップソースとして作用することと
    を含むことを特徴とする方法。
  14. デスクトップウインドウカーソルがリモートアプリケーションのためのアプリケーションウインドウの境界の内側から外側に移動されたことを検出するクライアントコンポーネントの処理は、デスクトップカーソルウインドウがリモートアプリケーションのためのアプリケーションからローカルアプリケーションのためのローカルアプリケーションウインドウに移動したことを検出する処理を含むことを特徴とする請求項13に記載の方法。
  15. 代理オブジェクトを作成してドラッグアンドドロップオブジェクトが公示するフォーマットを模倣する処理を更に含むことを特徴とする請求項13に記載の方法。
  16. クライアントコンポーネントを代理ドロップソースとして構成し、クライアントコンポーネントがドラッグアンドドロップオブジェクトをクライアントコンポーネントに対して提供することができるように構成する処理を更に含むことを特徴とする請求項13に記載の方法。
  17. リモートアプリケーションのためのアプリケーションウインドウの内側からドラッグアンドドロップオブジェクト選択するユーザ入力を受け取る処理であって、アプリケーションウインドウはリモートアプリケーションのためのユーザインタフェースを表す処理と、
    デスクトップウインドウカーソルを変更して、ドラッグアンドドロップオブジェクトが選択されたことを視覚的に表すこと、
    を更に含むことを特徴とする請求項13に記載の方法。
  18. コンピュータシステムにおいて、該コンピュータシステムは該コンピュータシステムにおいて稼働する1または2以上のリモートアプリケーションとサーバコンポーネントとを含み、該サーバコンポーネントはクライアントコンピュータシステムにあるクライアントコンポーネントとのターミナルサーバセッションに参加し、前記コンピュータシステムおいて稼働する1または2以上のリモートルアプリケーションは、ターミナルサーバセッションを介してクライアントコンピュータシステムにより遠隔的にアクセスされるよう構成され、ドラッグアンドドロップを用いてオブジェクトをリモートアプリケーションからクライアントコンピュータシステムにあるモジュールに転送する方法であって、該方法は、
    メッセージをクライアントコンポーネントからターミナルサーバセッションを介してサーバコンポーネントが受け取る処理であって、該メッセージは、デスクトップウインドウカーソルがクライアントコンピュータシステムにおいてリモートアプリケーションと対応するアプリケーションウインドウの境界の内側から外側に移動したことをサーバコンポーネントに通知するメッセージである、サーバコンポーネントが受け取る処理と、
    デスクトップウインドウカーソルの動きが未処理のドラッグアンドドロップ操作に連結することをサーバコンポーネントが判断する処理と、
    ドラッグアンドドロップオブジェクトに関する要求をサーバコンポーネントがクライアントコンポーネントから受け取る処理であって、該要求はクライアントコンピュータシステムにあるアプリケーションからのドラッグアンドドロップオブジェクトに関するクエリーに応じて、ターミナルサーバセッションの上で送付され、該の要求はサーバサーバコンポーネントに対しクライアントコンポーネントにあるアプリケーションがリモートアプリケーションからのドラッグアンドドロップオブジェクト(326)を要求していることを通知する、受け取る処理と、
    ドラッグアンドドロップオブジェクトに関する要求の受領に応答して、コンピュータシステムにおいてアプリケーションの代わりにサーバコンポーネントが代理ドロップターゲットとして作用することであって、
    ドラッグアンドドロップオブジェクトに関する要求をリモートアプリケーションに送付する処理と、
    ドラッグアンドドロップオブジェクトに関する要求に応じて送付されるリモートアプリケーションからのドラッグアンドドロップオブジェクトを受け取る処理とを含む、サーバコンポーネントが代理ドロップターゲットとして作用することと、
    ターミナルサーバセッションを介してクライアントコンピュータシステムに対し、クライアントコンピュータシステムにあるアプリケーションに対する引き渡しのためにドラッグアンドドロップオブジェクトをサーバコンポーネントが送付する処理と
    を含むことを特徴とする方法。
  19. サーバコンポーネントを代理ドロップターゲットとして構成して、サーバコンポーネントがドラッグアンドドロップオブジェクトをリモートアプリケーションから受け取ることができるようにする処理を更に含むことを特徴とする請求項18に記載の方法。
  20. ドラッグアンドドロップオブジェクトをクライアントコンピュータシステムに対しターミナルサーバセッションを介して送付するサーバコンポーネントの処理は、ドラッグアンドドロップオブジェクトをリモートデスクトッププロトコルセッションの仮想チャンネルを介してサーバコンポーネントが送付する処理を含むことを特徴とする請求項18に記載の方法。
JP2009514255A 2006-06-09 2007-02-13 ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップすること Active JP4482615B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/423,400 US7533349B2 (en) 2006-06-09 2006-06-09 Dragging and dropping objects between local and remote modules
PCT/US2007/003702 WO2007142708A1 (en) 2006-06-09 2007-02-13 Dragging and dropping objects between local and remote modules

Publications (2)

Publication Number Publication Date
JP2009540428A true JP2009540428A (ja) 2009-11-19
JP4482615B2 JP4482615B2 (ja) 2010-06-16

Family

ID=38801780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009514255A Active JP4482615B2 (ja) 2006-06-09 2007-02-13 ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップすること

Country Status (12)

Country Link
US (2) US7533349B2 (ja)
EP (1) EP2033107B1 (ja)
JP (1) JP4482615B2 (ja)
KR (1) KR20090027624A (ja)
CN (1) CN101467139B (ja)
AU (1) AU2007257440A1 (ja)
BR (1) BRPI0712350A2 (ja)
CA (1) CA2654040A1 (ja)
MX (1) MX2008015484A (ja)
RU (1) RU2430405C2 (ja)
TW (1) TW200807948A (ja)
WO (1) WO2007142708A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011524554A (ja) * 2008-06-04 2011-09-01 日本電気株式会社 ドラッグアンドドロップすることを可能にするためのシステム及び方法
EP3418872A2 (en) 2017-06-22 2018-12-26 Canon Kabushiki Kaisha Information processing apparatus

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405459B2 (en) 2011-08-24 2016-08-02 Z124 Unified desktop laptop dock software operation
US20130080143A1 (en) * 2011-09-27 2013-03-28 Paul E. Reeves Unified desktop docking behavior with device as master
US9715252B2 (en) 2011-08-24 2017-07-25 Z124 Unified desktop docking behavior for window stickiness
US9268518B2 (en) 2011-09-27 2016-02-23 Z124 Unified desktop docking rules
EP1844390B1 (de) * 2005-01-31 2012-07-04 Cortado AG Verfahren und anordnung zum drucken über anwendungsserver sowie ein entsprechendes computerprogramm und ein entsprechendes computerlesbares speichermedium
US7533349B2 (en) * 2006-06-09 2009-05-12 Microsoft Corporation Dragging and dropping objects between local and remote modules
US10503342B2 (en) 2006-08-04 2019-12-10 Apple Inc. User interface spaces
US8117555B2 (en) * 2006-12-07 2012-02-14 Sap Ag Cooperating widgets
US20080215998A1 (en) * 2006-12-07 2008-09-04 Moore Dennis B Widget launcher and briefcase
US8539073B1 (en) 2006-12-29 2013-09-17 Google Inc. Startup of container applications
US8335817B1 (en) * 2006-12-29 2012-12-18 Google Inc. Message passing within a web based application framework
US8612547B1 (en) 2006-12-29 2013-12-17 Google Inc. Container interrupt services
US7895296B1 (en) 2006-12-29 2011-02-22 Google, Inc. Local storage for web based native applications
US9384346B1 (en) 2006-12-29 2016-07-05 Google Inc. Local service access within a web based application framework
US8248636B1 (en) 2006-12-29 2012-08-21 Google Inc. WYSIWYG printing for web based applications
US9391826B1 (en) 2006-12-29 2016-07-12 Google Inc. Collaborative web based applications
US20090094561A1 (en) * 2007-10-05 2009-04-09 International Business Machines Corporation Displaying Personalized Documents To Users Of A Surface Computer
US9134904B2 (en) * 2007-10-06 2015-09-15 International Business Machines Corporation Displaying documents to a plurality of users of a surface computer
US8139036B2 (en) * 2007-10-07 2012-03-20 International Business Machines Corporation Non-intrusive capture and display of objects based on contact locality
US20090091539A1 (en) * 2007-10-08 2009-04-09 International Business Machines Corporation Sending A Document For Display To A User Of A Surface Computer
US8024185B2 (en) 2007-10-10 2011-09-20 International Business Machines Corporation Vocal command directives to compose dynamic display text
US9619304B2 (en) * 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8370519B2 (en) * 2008-02-12 2013-02-05 Microsoft Corporation Copying data onto an expandable memory in a wireless device using a desktop interface
US20090237363A1 (en) * 2008-03-20 2009-09-24 Microsoft Corporation Plural temporally overlapping drag and drop operations
US20140040862A1 (en) * 2008-04-03 2014-02-06 Adobe Systems Incorporated Copying Reusable Components from a Remote Source
US20090300131A1 (en) * 2008-05-27 2009-12-03 Supportspace Ltd. Simultaneous remote and local control of computer desktop
US9626363B2 (en) * 2008-06-08 2017-04-18 Apple Inc. System and method for placeshifting media playback
US8401681B2 (en) * 2008-06-08 2013-03-19 Apple Inc. System and method for placeshifting media playback
US11258652B2 (en) 2008-06-08 2022-02-22 Apple Inc. System and method for placeshifting media playback
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
EP2184679A1 (en) * 2008-10-30 2010-05-12 Alcatel Lucent Method for operating an ending web-widget with data retrieved from a starting web-widget
TW201020901A (en) 2008-11-20 2010-06-01 Ibm Visual feedback for drag-and-drop operation with gravitational force model
KR20100081577A (ko) * 2009-01-06 2010-07-15 삼성전자주식회사 휴대단말에서 오브젝트의 내비게이션 방법 및 장치
US8650634B2 (en) 2009-01-14 2014-02-11 International Business Machines Corporation Enabling access to a subset of data
US8169904B1 (en) * 2009-02-26 2012-05-01 Sprint Communications Company L.P. Feedback for downlink sensitivity
US8621387B2 (en) 2009-06-08 2013-12-31 Apple Inc. User interface for multiple display regions
US9141412B2 (en) * 2009-06-16 2015-09-22 Microsoft Technology Licensing, Llc Terminal services application virtualization for compatibility
US8239781B2 (en) * 2009-06-30 2012-08-07 Sap Ag Drag and drop of an application component to desktop
US9277021B2 (en) 2009-08-21 2016-03-01 Avaya Inc. Sending a user associated telecommunication address
JP5433375B2 (ja) * 2009-10-23 2014-03-05 楽天株式会社 端末装置、機能実行方法、機能実行プログラム及び情報処理システム
US20110119609A1 (en) * 2009-11-16 2011-05-19 Apple Inc. Docking User Interface Elements
US8610924B2 (en) 2009-11-24 2013-12-17 International Business Machines Corporation Scanning and capturing digital images using layer detection
US8441702B2 (en) 2009-11-24 2013-05-14 International Business Machines Corporation Scanning and capturing digital images using residue detection
KR20110064674A (ko) 2009-12-08 2011-06-15 삼성전자주식회사 동적 로컬 기능 결합 장치 및 방법
WO2011076977A1 (en) * 2009-12-23 2011-06-30 Nokia Corporation Method and apparatus for display device
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US9009219B2 (en) * 2010-01-27 2015-04-14 Vmware, Inc. Native viewer use for service results from a remote desktop
US8555187B2 (en) * 2010-02-16 2013-10-08 Google Inc. Server-based data sharing in computer applications using a clipboard
CN102262528B (zh) * 2010-05-26 2016-06-22 腾讯科技(深圳)有限公司 即时通讯客户端及其内嵌网页页面实现拖拽的方法
US8335991B2 (en) * 2010-06-11 2012-12-18 Microsoft Corporation Secure application interoperation via user interface gestures
US20120030664A1 (en) * 2010-07-30 2012-02-02 Sap Ag Processing of software objects moved into a dropzone region of an application
US8527891B2 (en) 2010-08-13 2013-09-03 International Business Machines Corporation Enabling user interactions between user interface components
US20120131483A1 (en) * 2010-11-22 2012-05-24 International Business Machines Corporation Drag-and-drop actions for web applications using an overlay and a set of placeholder elements
CN102566983B (zh) * 2010-12-07 2016-04-20 腾讯科技(深圳)有限公司 基于Windows系统的对象拖拽实现方法及其系统
US9811528B2 (en) 2010-12-09 2017-11-07 Yosef Benraz Systems and methods for providing continuing access to a remote computer program
TW201227489A (en) * 2010-12-31 2012-07-01 Hon Hai Prec Ind Co Ltd System and method for processing image
US8554897B2 (en) * 2011-01-24 2013-10-08 Lg Electronics Inc. Data sharing between smart devices
US9367224B2 (en) * 2011-04-29 2016-06-14 Avaya Inc. Method and apparatus for allowing drag-and-drop operations across the shared borders of adjacent touch screen-equipped devices
WO2012160561A1 (en) * 2011-05-23 2012-11-29 Tako Technology Ltd. Computerized system and method for remote accessto a computer program
US8489680B1 (en) 2011-08-18 2013-07-16 Google Inc. Transmission of input values using an unreliable communication link
US20130076654A1 (en) 2011-09-27 2013-03-28 Imerj LLC Handset states and state diagrams: open, closed transitional and easel
US20130097541A1 (en) * 2011-10-13 2013-04-18 Gface Gmbh Smart drag and drop
KR101943987B1 (ko) * 2011-12-06 2019-04-17 삼성전자주식회사 디바이스 간의 페이지 공유 시스템 및 방법
US9164544B2 (en) 2011-12-09 2015-10-20 Z124 Unified desktop: laptop dock, hardware configuration
CN103186430A (zh) * 2011-12-30 2013-07-03 联想(北京)有限公司 文件操作装置及方法,和对应的数字处理设备和数字处理系统
CN103186421A (zh) * 2011-12-31 2013-07-03 联想(北京)有限公司 一种在混合系统远程桌面实现数据交互的方法和装置
US9529518B2 (en) * 2012-05-25 2016-12-27 Panasonic Intellectual Property Corporation Of America Information processing device, information processing method, and information processing program
US8970492B2 (en) 2012-06-08 2015-03-03 Microsoft Technology Licensing, Llc Remote session control using multi-touch inputs
US8943582B1 (en) 2012-07-18 2015-01-27 Amazon Technologies, Inc. Transferring information among devices using cameras
US20140047368A1 (en) * 2012-08-13 2014-02-13 Magnet Systems Inc. Application development tool
KR102017631B1 (ko) * 2012-09-03 2019-09-03 삼성전자주식회사 데이터 통신을 위한 단말 장치 및 방법
CN104571782A (zh) * 2013-10-18 2015-04-29 腾讯科技(深圳)有限公司 远程控制方法、系统、操控终端及被控终端
CN103955328B (zh) * 2014-04-29 2017-01-18 广东威创视讯科技股份有限公司 操作端查阅拼接墙中显示内容的方法和系统
US10516980B2 (en) 2015-10-24 2019-12-24 Oracle International Corporation Automatic redisplay of a user interface including a visualization
US10417247B2 (en) 2014-09-25 2019-09-17 Oracle International Corporation Techniques for semantic searching
US10664488B2 (en) 2014-09-25 2020-05-26 Oracle International Corporation Semantic searches in a business intelligence system
US10082941B2 (en) * 2015-05-20 2018-09-25 Vmware, Inc. Optimizing window move actions for remoted applications
US10545717B2 (en) 2015-10-08 2020-01-28 Pcms Holdings, Inc. Methods and systems of automatic calibration for dynamic display configurations
US10088981B2 (en) * 2015-12-29 2018-10-02 Sap Se User engagement application across user interface applications
US10564829B2 (en) 2016-03-25 2020-02-18 Vmware, Inc. Optimizing window resize actions for remoted applications
US10444976B2 (en) * 2017-05-16 2019-10-15 Apple Inc. Drag and drop for touchscreen devices
US10917587B2 (en) 2017-06-02 2021-02-09 Oracle International Corporation Importing and presenting data
US11614857B2 (en) 2017-06-02 2023-03-28 Oracle International Corporation Importing, interpreting, and presenting data
US10956237B2 (en) * 2017-06-02 2021-03-23 Oracle International Corporation Inter-application sharing of business intelligence data
US11237699B2 (en) 2017-08-18 2022-02-01 Microsoft Technology Licensing, Llc Proximal menu generation
US11301124B2 (en) * 2017-08-18 2022-04-12 Microsoft Technology Licensing, Llc User interface modification using preview panel
US10783012B2 (en) 2018-04-20 2020-09-22 CopyBucket, Inc. Systems and methods for efficient inter-device data exchange
US11741673B2 (en) 2018-11-30 2023-08-29 Interdigital Madison Patent Holdings, Sas Method for mirroring 3D objects to light field displays
US20200192539A1 (en) * 2018-12-13 2020-06-18 Vmware, Inc. System and method for operating system event redirection
CN109782976B (zh) * 2019-01-15 2020-12-22 Oppo广东移动通信有限公司 文件处理方法、装置、终端及存储介质
CN115657918A (zh) * 2020-07-29 2023-01-31 华为技术有限公司 一种跨设备的对象拖拽方法及设备
TWI761056B (zh) * 2021-02-01 2022-04-11 宏正自動科技股份有限公司 資料傳送方法與資料傳送裝置
US11402964B1 (en) * 2021-02-08 2022-08-02 Facebook Technologies, Llc Integrating artificial reality and other computing devices
CN114138145A (zh) * 2021-11-30 2022-03-04 武汉噢易云计算股份有限公司 应用虚拟化的文件拖拽方法、装置、设备及可读存储介质
CN114928524B (zh) * 2022-05-20 2024-03-26 浪潮思科网络科技有限公司 一种web端与交换机的交互方法、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272715A (ja) * 1995-03-31 1996-10-18 Canon Inc 情報転送方法および掲示板装置
WO2001052031A1 (fr) * 2000-01-12 2001-07-19 Sony Corporation Appareil et procede d'affichage d'images
JP2003091489A (ja) * 2001-09-14 2003-03-28 Sony Corp ネットワーク情報処理システム及び情報処理方法
JP2006172193A (ja) * 2004-12-16 2006-06-29 Ricoh Co Ltd 画面共有システム、画面共有方法、画面共有プログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5767851A (en) * 1996-01-29 1998-06-16 Sun Microsystems, Inc. Method and apparatus for emulating an environment's drag and drop functionality in a host environment
US6138150A (en) * 1997-09-03 2000-10-24 International Business Machines Corporation Method for remotely controlling computer resources via the internet with a web browser
US6687745B1 (en) 1999-09-14 2004-02-03 Droplet, Inc System and method for delivering a graphical user interface of remote applications over a thin bandwidth connection
US6941382B1 (en) * 2000-02-07 2005-09-06 Raja Tuli Portable high speed internet or desktop device
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US6920461B2 (en) * 2001-07-10 2005-07-19 Microsoft Corp. Application program interface for network software platform
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7017162B2 (en) * 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7546602B2 (en) * 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US20030093466A1 (en) 2001-11-15 2003-05-15 Jarman James D. Drag and drop technology for remote control tool
US7650575B2 (en) 2003-03-27 2010-01-19 Microsoft Corporation Rich drag drop user interface
US20050091359A1 (en) 2003-10-24 2005-04-28 Microsoft Corporation Systems and methods for projecting content from computing devices
US7721254B2 (en) * 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
KR100611255B1 (ko) * 2004-10-15 2006-08-10 한국과학기술연구원 작업 공간을 공유하는 원격 회의 방법
US8769127B2 (en) * 2006-02-10 2014-07-01 Northrop Grumman Systems Corporation Cross-domain solution (CDS) collaborate-access-browse (CAB) and assured file transfer (AFT)
US7533349B2 (en) * 2006-06-09 2009-05-12 Microsoft Corporation Dragging and dropping objects between local and remote modules

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272715A (ja) * 1995-03-31 1996-10-18 Canon Inc 情報転送方法および掲示板装置
WO2001052031A1 (fr) * 2000-01-12 2001-07-19 Sony Corporation Appareil et procede d'affichage d'images
JP2003091489A (ja) * 2001-09-14 2003-03-28 Sony Corp ネットワーク情報処理システム及び情報処理方法
JP2006172193A (ja) * 2004-12-16 2006-06-29 Ricoh Co Ltd 画面共有システム、画面共有方法、画面共有プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011524554A (ja) * 2008-06-04 2011-09-01 日本電気株式会社 ドラッグアンドドロップすることを可能にするためのシステム及び方法
EP3418872A2 (en) 2017-06-22 2018-12-26 Canon Kabushiki Kaisha Information processing apparatus
US10970093B2 (en) 2017-06-22 2021-04-06 Canon Kabushiki Kaisha Information processing apparatus for displaying a software screen on a foreground of a display based on a setting

Also Published As

Publication number Publication date
RU2430405C2 (ru) 2011-09-27
US7802195B2 (en) 2010-09-21
US7533349B2 (en) 2009-05-12
EP2033107B1 (en) 2019-08-07
CA2654040A1 (en) 2007-12-13
TW200807948A (en) 2008-02-01
KR20090027624A (ko) 2009-03-17
BRPI0712350A2 (pt) 2012-05-29
US20090210811A1 (en) 2009-08-20
EP2033107A1 (en) 2009-03-11
WO2007142708A1 (en) 2007-12-13
JP4482615B2 (ja) 2010-06-16
RU2008148326A (ru) 2010-06-20
US20070288599A1 (en) 2007-12-13
CN101467139B (zh) 2012-05-30
EP2033107A4 (en) 2017-03-29
AU2007257440A1 (en) 2007-12-13
CN101467139A (zh) 2009-06-24
MX2008015484A (es) 2009-03-06

Similar Documents

Publication Publication Date Title
JP4482615B2 (ja) ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップすること
JP6314204B2 (ja) 実時間データを提供するためのシステムおよび方法
US7286145B2 (en) System for describing markup language for mobile use, and information processing apparatus and program for generating display content
US8595371B2 (en) Sending a remote user interface
JP6092381B2 (ja) ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体
US7783985B2 (en) Systems and methods for transferring data between computing devices
CN110769048B (zh) 本地与远程虚拟桌面的无缝衔接方法及系统
EP2487871A1 (en) Method and system for transmission of application status between different devices
US20090100352A1 (en) Method and apparatus for bridging real-world web applications and 3d virtual worlds
JP2003505760A (ja) ダイナミクス・マネージャを備えたコンピュータ・システムによるアクティビティに基づくコラボレーションのための方法及びその装置
JP2006209747A (ja) コラボレーションセッションの出席者のスクリーン解像度を収集して報告するためのシステムおよび方法
KR20080025689A (ko) 데이터 공유가 행해지는 인스턴트 메시징
WO2010027577A1 (en) Content sharing and instant messaging
US20160364398A1 (en) Generation and dynamic serving of device-dependent web content
US20090199203A1 (en) Interacting with applications via an instant messaging client to perform application specific tasks
JP2004355059A (ja) 操作表示方法
TWI525530B (zh) 同步顯示操作資訊的方法、系統及裝置
JP6596616B2 (ja) コンテンツ共有システム、コンテンツ共有方法及びプログラム
JP2023169136A (ja) メッセージングサービス方法及び装置
JP2024060185A (ja) ネットワーク会議システム、ファイル検索方法及びプログラム
CN115396429A (zh) 文件传输方法、装置、存储介质及电子设备
CN115048191A (zh) 一种快应用切换显示设备的方法及相关设备
JP2020119345A (ja) ボットシステムのプログラム
Crane et al. Combining Comet with CRUD

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090818

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090818

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090818

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20091106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100312

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100319

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130326

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130326

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140326

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250