JP6083244B2 - リモートデスクトップセッションにおいて複数のマウス入力を提供する方法 - Google Patents

リモートデスクトップセッションにおいて複数のマウス入力を提供する方法 Download PDF

Info

Publication number
JP6083244B2
JP6083244B2 JP2013018175A JP2013018175A JP6083244B2 JP 6083244 B2 JP6083244 B2 JP 6083244B2 JP 2013018175 A JP2013018175 A JP 2013018175A JP 2013018175 A JP2013018175 A JP 2013018175A JP 6083244 B2 JP6083244 B2 JP 6083244B2
Authority
JP
Japan
Prior art keywords
host computer
human interface
input
interface device
client projector
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.)
Expired - Fee Related
Application number
JP2013018175A
Other languages
English (en)
Other versions
JP2013168142A (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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of JP2013168142A publication Critical patent/JP2013168142A/ja
Application granted granted Critical
Publication of JP6083244B2 publication Critical patent/JP6083244B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0382Plural input, i.e. interface arrangements in which a plurality of input device of the same type are in communication with a PC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0383Remote input, i.e. interface arrangements in which the signals generated by a pointing device are transmitted to a PC at a remote location, e.g. to a PC in a LAN

Description

本方法は、全般的に、Microsoft Windows(登録商標)オペレーティングシステムのリモートデスクトップサービスコンポーネント(以前のターミナルサービス)およびRaw Input API(application programming interface:アプリケーションプログラミングインターフェイス)に関し、特に、リモートデスクトップセッションの中で実行中のアプリケーションに、複数のクライアントマウスデバイスの入力イベントを提供することに関する。
一般に、従来のプロジェクターは、十分に大きな投写面積をもたらすには、表示面から長い距離を置いて配置される必要がある。さらに、適切に設置・配置されなければ、放出される光路に障害物のない状態が維持されないこともある。そのような表示面の前または付近を通る発表者は、プロジェクターの明るい光の方に向き、それが目に入ることがよくあり、または表示面に自分の影をもたらしながら投写画像の色に染まることもある。
短投写距離プロジェクターは、こうした問題の緩和を助けるものであり、特に、対話型投写システムには不可欠である。こうしたプロジェクターは、理想的には、目標の表示面より上の壁または天井に配置される。短投写距離技術は、プロジェクターが下の壁に十分大きなスクリーン画像を出力できるようにし、さらに、高所に設置されることで、対話するユーザーが簡単に近づくことができ遮るもののないスクリーン画像を提供する。さらに、ターゲット面の上、且つ近くに設置された短投写距離プロジェクターは、発表者/参加者の目への光の投写を減少させ、ユーザーが光の出力経路と交差するときに生じる影を軽減する。このような理由により、多数の対話型ホワイトボードシステムが、その表示コンポーネントに短投写距離プロジェクターを使用している。
対話型電子ホワイトボードシステムでは、デジタルペンがインクに取って代わり、仮想ホワイトボード上にコンテンツを描く入力インターフェイスを提供する。従来、デジタルペンは、自然なユーザーエクスペリエンスを与えるためにそのインク等価物をモデルにした、物理的なハードウェア要素である。デジタルペンは、その位置を伝送することも、他の形でその表示面上のポジションに関してリモート監視されることもある。さらに、ボタン、向き、またはそのほか各ペンの一意の識別特徴が、サポートするアプリケーションによって検出されることもあり、動作に影響を及ぼすために、または描画機能を変更もしくは操作するために、またはアクティビティーを変更するために使用可能である。コンピューターアプリケーションは、そのようなペンの対話を使用して、ホワイトボードの面に種々の出力を生成することができる。例えば、移動するペンのポジション情報が、コンピューターアプリケーションによって監視され、その結果としてコンピューターアプリケーションは、アプリケーションウィンドウ内の対応するペンポジションにおいて、仮想キャンバス上に電子カラー画素をペイントする。アプリケーションによって同時に表示されているキャンバスが、仮想ペンを使用して電子インクを付けて書いたかのように見せる。この種の技術は新しいものではなく、タブレット、「ペン」の代用物としてのマウス、または他の入力ソースを使用する電子ペインティングアプリケーションは非常に人気があり、簡単に入手できる。
対話型ホワイトボードシステムが人気を得るにつれ、複数のペン入力のサポートを提供するシステムがより強く望まれるようになっている。複数の入力は、同時ユーザーが対話を共有することを可能にするか、または特定の入力デバイスを用いて異なる対話型要素を区別する簡単な方法を提供する。残念ながら、多入力認識アプリケーションのサポートは限られている。アプリケーション開発者は、特定のハードウェアに対してシステムベンダーにより提供されるAPIを使用するか、または、アプリケーションのオペラビリティを最大化するために、ベンダーがペン入力をマウスデバイスとして機能するよう構成していれば、一般的なオペレーティングシステムのサポートに依存しなければならない。アプリケーションが複数のデバイスにアクセスしてその入力を得ることを可能にする、オペレーティングシステムの開発者APIでさえ、比較的新しいか、または明確に定義されていない。さらに、オペレーティングシステム自体、典型的には、一度に1人のユーザー対話向けに構成されており、同じ種類の複数のデバイスを単一の統合されたデバイスとして扱う。例えば、複数のマウスが取り付けられ、多数のコンピューターおよびそのオペレーティングシステムによって認識されることは可能である。しかし、一般に、個々のマウスそれぞれの操作は、提供される単一のシステムポインターを制御するよう機能する。その結果、接続された複数のマウスは、統合され、単一のスクリーン要素を制御/共有する。
様々なオペレーティングシステム内のいくつかの低レベル開発者APIは、確かに、個々の一意のマウスデバイスへのアプリケーションアクセスを可能にする。しかし、アプリケーションのGUI(graphical user interface:グラフィカルユーザーインターフェイス)のみと動作し得る、各マウスデバイスの別々のポインターおよびポジション関数を作成することは、アプリケーションの責任であることが多い。その結果、複数のペンをサポートするアプリケーションは、通常、特定の目的または特定のデバイスのセット専用である。他の場合には、アプリケーションは、制限された、単一デバイスオペレーティングシステムAPIのみサポートすることを選ぶ。
Microsoftオペレーティングシステムは、低レベルRaw Input APIを開発者に提供し、これを介してアプリケーションは、システムに接続された任意のヒューマンインターフェイスデバイス(HID:human interface device)に関する情報を獲得することができる。さらに、Microsoftは、複数のマウスデバイスをサポートする共通アプリケーション環境を公開するMultiPoint Mouse SDK(software development kit:ソフトウェア開発キット)を用いる、マネージドコードソリューションを開発した。このSDKは、複数のデバイスを追跡するためのウィンドウプラットフォームをアプリケーションに与え、カーソルアイコン、ポジション、ならびにその他のマウスに関係するGUIを管理しイベントを追跡するための、有用なサポートを含む。
例えば、EpsonのBrightLink 475Wiインタラクティブプロジェクターは、対話型ホワイトボードプロジェクター(IWP:interactive whiteboard projector)をもたらす電子ホワイトボードアプリケーションを備える短投写距離プロジェクターとして構成されている。このオールインワン製品ソリューションは、プロジェクターによって出力される描画領域上で動作する2つの電子ペンを提供することによって、従来のホワイトボードに取って代わろうとするものである。ペンは、受信機によって検出および管理され、内部ホワイトボードアプリケーションに入力を提供する。IWPおよびペンを使用するよう構成されていることもあるホストPC上の任意のアプリケーションに、同様の入力を提供することが、本発明の目的である。
図1は、ネットワーク12上でホストコンピューター16に接続されているいくつかの対話型ホワイトボードプロジェクター(IWP)10の例を示す。短投写距離プロジェクターは、壁の高いところまたは天井に設置されるため、機能的インターフェイスブレイクアウトボックス14は、プロジェクターから下方へ延長されて、表示面30の隣に配置されている。このボックスは、ユーザーボタンと、ホワイトボードアプリケーションの対話型ペンデバイスとを含む。IWPは、ネットワークベースのプロジェクターとして、コンテンツおよび対話を他のIWPデバイスと共有するよう構成されていてもよい。その結果、複数のユーザーペン入力が、サポートしているリモートのアプリケーション内で提供および利用され得る。
実際には、ネットワークプロジェクターは、いくつかのリモートソースデバイスから得られた表示コンテンツを出力するために利用可能である。ネットワークプロジェクター上でのデバイス入力も、リモートターゲットデバイスにより使用され得る。
それほど多くの入力デバイスを提供することに関する主要な課題は、IWPに接続されたホストPC上のアプリケーションとのデバイスハードウェアの共有である。以前の製品ソリューションでは、供給される入力ハードウェアは、ペン入力を解釈するドライバーがインストールされたホストPCに物理的に接続されていた。しかし、IWPは、ネットワークベースの製品であるため、入力デバイスを接続する追加の配線は適切ではない。既存のネットワーク上でハードウェア信号を伝送することが、1つのソリューションである。これには例えば、デバイスのネットワークベースのUSBドライバーがPCにインストールされることが要求され得る。しかし、一般に、ユーザーはそのシステムにデバイスドライバーをインストールすることを好まない。
ネットワークプロジェクターでは、アプリケーションスクリーンコンテンツをネットワーク上でホストPCからプロジェクター表示に送信することが、既に何らかの伝送方法を要求する。同時係属出願第13/332,751号で説明されているように、Microsoftのリモートデスクトップサービスは、Windowsオペレーティングシステム環境におけるこの状況に、理想的に適している可能性がある。この伝送インターフェイスを介して入力デバイスを送信することは可能である。残念ながら、ホストされたリモートデスクトップセッションでは、リモートデスクトップ接続クライアントアプリケーションによって、単一のマウスおよびキーボードデバイスしか提供されない。クライアント(プロジェクター)上の複数のマウスは、リモートデスクトッププロトコルによって単一のマウスデバイスへと統合されることになる。リモートデスクトップセッションを実行しているアプリケーションは、単一のマウスデバイスしか認識しないことになる。
ホスト上で追加のデバイスを物理的に接続することは、配線およびドライバーの理由で望ましくないものとして既に説明したが、これは、リモートデスクトップセッションで動作する場合にも問題がある。この理由は、ホストマシンのローカルHIDデバイスが、リモートデスクトップ接続の間、Windowsログオンスクリーンデスクトップとなる入力デスクトップに動作を制限されるためである。これは、ホストされたリモートデスクトップセッション内で実行中のアプリケーションでは、複数のHIDデバイスは、見られることも利用されることもできないことを意味する。
望ましいのは、IWPおよびインターフェイスボックスクライアントが、リモートデスクトップサービスを使用してホストPCと接続し、デスクトップアプリケーションに期待される表示出力パフォーマンスを得ることを可能にするソリューションである。さらに、望ましいソリューションは、リモートデスクトップセッション内で、IWPおよびインターフェイスボックスクライアント上の複数のペンデバイスが、ホストPC上で起動された任意の多入力アプリケーションに利用可能となることも可能にすると考えられる。これは、大規模な追加のソフトウェアまたはドライバーのインストールを要求しないことが理想的であろう。さらに、IWP表示がホストPCによって利用されていないときに、IWPのペンデバイスを同PC上のアプリケーションと共有することが望ましいと考えられる。本発明は、これらの目標およびその他の目標を達成することを対象とする。
本発明の方法および装置は、クライアントデバイスに取り付けられている複数のマウスからの入力イベントを、ホスト上でリモートデスクトップセッションにおいて実行中のターゲットアプリケーションに、リモートデスクトップ接続を使用して伝送する。本発明は、ホストシステム上にマウスドライバーがインストールされることは必要とせず、それでも、MicrosoftのRaw InputまたはMultiPoint Mouse SDKを使用するターゲットアプリケーションが、クライアントデバイス上のマウスにそれぞれ関連する仮想マウスデバイスのセットからのマウス入力を特定して、それと相互運用することを可能にする。
具体的には、本発明は、リモートデスクトップ接続を介してEPSONの対話型ホワイトボードプロジェクター(クライアント)と通信しているMicrosoft Window’s(登録商標)ベースのコンピューター(ホスト)が、複数のマウス(すなわち、描画ペン)をサポートするサードパーティアプリケーションを起動し、これらのアプリケーションに、プロジェクター上で接続されている各ペンデバイスの仮想マウスデバイスおよび入力イベント信号を提供することを可能にする。追加のドライバーも、接続された物理的なハードウェアも存在しないにもかかわらず、アプリケーションは、インストールされた複数のマウスとともにホストシステムが構成されているかのように挙動する。
本発明は、ネットワークによって接続されている、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションにおいて、複数のヒューマンインターフェイスデバイス入力を提供するためのシステム、方法および/またはコンピューター可読媒体を提供する。本方法は、例えば、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションを確立することと、クライアントプロジェクターにおいて、プロセッサーを使用して、複数のヒューマンインターフェイスデバイスからの入力を捕捉し、ヒューマンインターフェイスデバイス入力をホストコンピューターに転送することと、ホストコンピューターにおいて、プロセッサーを使用して、クライアントプロジェクターからヒューマンインターフェイスデバイス入力を受信し、各クライアントプロジェクターヒューマンインターフェイスデバイスに関する情報を仮想デバイスとして記憶および保持することと、ホストコンピューター上で実行中のアプリケーションからのraw input関数呼び出しをインターセプトすることと、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報を収集することと、ホストコンピューター上で実行中のアプリケーションに、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報および各仮想デバイスに関する情報を返すことと、を含む。
好適な実施形態では、raw input関数呼び出しをインターセプトすることは、フックハンドラーを用いて関数呼び出しを処理することを含む。別の実施形態は、デバイス到着(arrival)およびデバイス取り外しイベントを含む各仮想デバイスに関するシステムイベントをシミュレートすることをさらに含む。
実施形態は、各クライアントプロジェクターヒューマンインターフェイスデバイスを命名および特定するために使用される仮想デバイスオブジェクトを保持することをさらに含む。別の実施形態では、アプリケーションに返される情報は、ホストコンピューターヒューマンインターフェイスデバイスハンドルおよび仮想デバイスハンドルのカウントおよびリストを含む。
実施形態では、クライアントプロジェクターヒューマンインターフェイスデバイスからの入力は、フラグ、ボタン状態、および座標情報のうちの少なくとも1つを含み、別の実施形態では、クライアントプロジェクターヒューマンインターフェイスデバイスは、電子ホワイトボードペンである。
さらなる実施形態では、本発明の方法は、ホストコンピューターと、クライアントプロジェクターとの間のリモートデスクトップサービス仮想チャネルを確立することと、リモートデスクトップサービス仮想チャネル上でクライアントプロジェクターから転送されたヒューマンインターフェイスデバイス入力を、ホストコンピューターによって受信することとをさらに含む。さらに別の実施形態では、仮想デバイスは、仮想マウスである。
添付の図面と併せて解釈される以下の説明および特許請求の範囲を参照することによって、本発明のより深い理解とともに、このほかの目的および達成が明らかになり正しく認識される。
本発明の方法は、
(1)ネットワークによって接続されている、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションにおいて、複数のヒューマンインターフェイスデバイス入力を提供する方法であって、
前記クライアントプロジェクターと、前記ホストコンピューターとの間のリモートデスクトップセッションを確立することと、
前記クライアントプロジェクターにおいて、前記プロセッサーを使用して、
複数のヒューマンインターフェイスデバイスからの入力を捕捉し、前記ヒューマンインターフェイスデバイス入力を前記ホストコンピューターに転送することと、
前記ホストコンピューターにおいて、プロセッサーを使用して、
前記クライアントプロジェクターから前記ヒューマンインターフェイスデバイス入力を受信し、各クライアントプロジェクターヒューマンインターフェイスデバイスに関する情報を仮想デバイスとして記憶および保持することと、
前記ホストコンピューター上で実行中のアプリケーションからのraw input関数呼び出しをインターセプトすることと、
各ホストコンピューターヒューマンインターフェイスデバイスに関する情報を収集することと、
前記ホストコンピューター上で実行中の前記アプリケーションに、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報および各仮想デバイスに関する情報を返すことと、
を含むことを特徴とする。
(2) raw input関数呼び出しをインターセプトすることは、フックハンドラーを用いて前記関数呼び出しを処理することを含む。
(3) デバイス到着およびデバイス取り外しイベントを含む各仮想デバイスに関するシステムイベントをシミュレートすることをさらに含む。
(4) 各クライアントプロジェクターヒューマンインターフェイスデバイスを命名および特定するために使用される仮想デバイスオブジェクトを保持することをさらに含む。
(5) 前記アプリケーションに返される前記情報は、ホストコンピューターヒューマンインターフェイスデバイスハンドルおよび仮想デバイスハンドルのカウントおよびリストを含む。
(6) 前記クライアントプロジェクターヒューマンインターフェイスデバイスからの前記入力は、フラグ、ボタン状態および座標情報のうちの少なくとも1つを含む。
(7) 前記クライアントプロジェクターヒューマンインターフェイスデバイスは、電子ホワイトボードペンである。
(8) 前記ホストコンピューターと、前記クライアントプロジェクターとの間のリモートデスクトップサービス仮想チャネルを確立することと、
前記リモートデスクトップサービス仮想チャネル上で前記クライアントプロジェクターから転送されたヒューマンインターフェイスデバイス入力を、前記ホストコンピューターによって受信することと、をさらに含む。
(9) 仮想デバイスは、仮想マウスである。
また、本発明のシステムは、
(1) ネットワークによって接続されている、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションにおいて、複数のヒューマンインターフェイスデバイス入力を提供するシステムであって、
前記クライアントプロジェクターと、前記ホストコンピューターとの間のリモートデスクトップセッションを確立し、
複数のヒューマンインターフェイスデバイスからの入力を捕捉し、前記ヒューマンインターフェイスデバイス入力を前記ホストコンピューターに転送する
プロセッサーを、前記クライアントプロジェクター内に含み、
前記クライアントプロジェクターから前記ヒューマンインターフェイスデバイス入力を受信し、各クライアントプロジェクターヒューマンインターフェイスデバイスに関する情報を仮想デバイスとして記憶および保持し、
前記ホストコンピューター上で実行中のアプリケーションからのraw input関数呼び出しをインターセプトし、
各ホストコンピューターヒューマンインターフェイスデバイスに関する情報を収集し、
前記ホストコンピューター上で実行中の前記アプリケーションに、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報および各仮想デバイスに関する情報を返す
プロセッサーを、前記ホストコンピューター内に含むことを特徴とする。
(2) 前記ホストコンピュータープロセッサーは、raw input関数呼び出しを、フックハンドラーを用いて前記関数呼び出しを処理することによってインターセプトする。
(3) 前記ホストコンピュータープロセッサーまたはクライアントプロジェクタープロセッサーは、デバイス到着およびデバイス取り外しイベントを含む各仮想デバイスに関するシステムイベントをシミュレートする。
(4) 前記ホストコンピュータープロセッサーまたはクライアントプロジェクタープロセッサーは、各クライアントプロジェクターヒューマンインターフェイスデバイスを命名および特定するために使用される仮想デバイスオブジェクトを保持する。
(5) 前記アプリケーションに返される前記情報は、ホストコンピューターヒューマンインターフェイスデバイスハンドルおよび仮想デバイスハンドルのカウントおよびリストを含む。
(6) 前記クライアントプロジェクターヒューマンインターフェイスデバイスは、電子ホワイトボードペンである。
(7) 前記クライアントプロジェクターから転送されたヒューマンインターフェイスデバイス入力を、前記ホストコンピューターによって受信するために、前記ホストコンピューターと、前記クライアントプロジェクターとの間のリモートデスクトップサービス仮想チャネルをさらに含む。
また、本発明のコンピューターによる読み取り可能な記録媒体は、
(1) ネットワークによって接続されている、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションにおいて、複数のヒューマンインターフェイスデバイス入力を提供する方法を実行するためにコンピューターによって実行可能な命令を具現化する、1つ以上の有形の非一時的コンピューター可読媒体であって、前記方法は、
前記クライアントプロジェクターと、前記ホストコンピューターとの間のリモートデスクトップセッションを確立することと、
前記クライアントプロジェクターにおいて、前記プロセッサーを使用して、
複数のヒューマンインターフェイスデバイスからの入力を捕捉し、前記ヒューマンインターフェイスデバイス入力を前記ホストコンピューターに転送することと、
前記ホストコンピューターにおいて、プロセッサーを使用して、
前記クライアントプロジェクターから前記ヒューマンインターフェイスデバイス入力を受信し、各クライアントプロジェクターヒューマンインターフェイスデバイスに関する情報を仮想デバイスとして記憶および保持することと、
前記ホストコンピューター上で実行中のアプリケーションからのraw input関数呼び出しをインターセプトすることと、
各ホストコンピューターヒューマンインターフェイスデバイスに関する情報を収集することと、
前記ホストコンピューター上で実行中の前記アプリケーションに、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報および各仮想デバイスに関する情報を返すことと、
を含む。
(2) raw input関数呼び出しをインターセプトすることは、フックハンドラーを用いて前記関数呼び出しを処理することを含む。
(3) 前記方法は、デバイス到着およびデバイス取り外しイベントを含む各仮想デバイスに関するシステムイベントをシミュレートすることをさらに含む。
(4) 前記方法は、各クライアントプロジェクターヒューマンインターフェイスデバイスを命名および特定するために使用される仮想デバイスオブジェクトを保持することをさらに含む。
ネットワーク上のいくつかの対話型ホワイトボードプロジェクター(IWP)を示す図。 本発明のシステムの概略のブロック図。 本発明の方法の概略のステップを示す図。 本発明のホストコンピューターおよびクライアントプロジェクターのプロセッサーおよびメモリーの単純なブロック図。
IWP(対話型ホワイトボードプロジェクター)上のハードウェアペン入力デバイス、実質的にはコンピューターマウスを、ホストコンピューター内のアプリケーションに提供することが有用なのは、そのハードウェア入力が、アプリケーションによって検出および使用可能である場合に限られる。Microsoft Windows(登録商標)オペレーティングシステム内で実行されているアプリケーションは、接続されている各マウスおよびその入力に関する詳細をアプリケーションに提供できるいくつかのAPI(アプリケーションプログラミングインターフェイス)にアクセスできる。Raw Input APIは、コアWindowsオペレーティングシステムのユーザーAPIクライアント動的リンクライブラリー(DLL:dynamic link library)、すなわちuser32.dllにあり便利な、C関数、構造体およびメッセージの小さなコレクションを与えるものである。Raw Inputは、デバイスへの低レベルアクセスおよび登録されているトップレベルコレクションクラスからのイベントの好ましいインターフェイスである。Microsoftは、よりハイレベルなMultiPoint Mouse SDK(ソフトウェア開発キット)も提供するが、これは内部ではRaw Inputインターフェイスの上に構築される。したがって、複数のマウス入力デバイスをサポートするアプリケーションは、Raw Input APIを利用している可能性が高い。
Raw Input APIを、独自のカスタムバージョンに置き換えることが容易にできれば、本発明の1つの目的を達成できるであろう。このカスタムバージョンは、公開されるインターフェイス関数それぞれに関して期待されるRaw Input APIの挙動をまねて、その一方で、カスタム要件をサポートするために必要な変更も提供するよう実装されることが可能であると考えられる。例えば、カスタムバージョンは、各APIメソッドから返される結果が、確実にすべてのマウスデバイスを除外するようにできるであろう。使用するアプリケーションの観点からは、APIメソッドは、正しく動作していることになり、アプリケーションは、マウスデバイスは接続されていないとレポートすることになる。別の例では、カスタムバージョンは、実際に利用可能であるよりも多いデバイスにより応答することができるであろう。使用するアプリケーションは、APIがそのようにインターフェイスガイドラインの範囲内で応答したため、より多くのデバイスが存在すると確信し、それに応じて応答することになる。したがって、カスタムバージョンは、ネットワーク上のIWPからの入力、例えば各ペンデバイスのイベントデータを受信して、この情報を、アプリケーションが対話している変更されたRaw Input APIを介して、アプリケーションに中継できるであろう。
この置き換え手法の問題の1つは、user32.dllが、Raw Inputメソッドのみではなく、APIの大きなセットを公開するということである。それらをすべて置き換えるのは困難であり、可能性は低いと考えられる。さらに、このuser32.dllは、それが本物であることを確認することができる、様々なシステムユーティリティーによる検査を受けることが多い、コアWindowsオペレーティングシステムファイルである。
この問題を克服するために、本発明には、インターセプト、すなわちフッキングという、別のオプションが選ばれた。フッキングは、ソフトウェアコンポーネント間のインターフェイスにて、関数呼び出しまたはメッセージイベントをインターセプトすることによって、そうしたコンポーネントを改変または拡大できるようにする。この手法により、ターゲット関数のインメモリーコードを書き換えることによって、任意の関数をインターセプトおよび拡張することができる。拡張されたバージョンが、もとのターゲット実装を呼び出してもとの結果を獲得することができるように、もとのターゲット関数が保存されることも可能である。API監視方法に関して都合がよければ、ユーザーモードフッキングも、関数の結果を変更または改変するために使用され得る。Microsoft Detour、APISpy32、またはオープンソースEasyHookエンジンなどの製品は、フッキング手法を利用するアプリケーションを自分の製品において作成したい開発者に、フッキング関数を備えるライブラリーおよびフレームワークを提供する。
実装され得るAPIフッキングメソッドは多数ある。これには、インポートテーブルパッチング(import table patching)、拡張インポートテーブルパッチング(extended import table patching)、エクスポートテーブルパッチング(export table patching)、シンプルコード上書き(simple code overwriting)および拡張コード上書き(extended code overwriting)などの手法が含まれる。本発明は、フッキングが、コアRaw Input API関数へのアクセスを得るために使用され、必須の要件であることを除いて、特定のフッキング手法またはそのメソッドに関係することも、それに限定されることもない。
多くのフッキングメソッドでは、インジェクターコンポーネントが、カスタムフックライブラリーコードモジュールを、ターゲットアプリケーションのプロセス内に適切な時にロードしてインストールする。一手法では、インジェクターは、実行時に、プロセスメモリーにロードされた共有ライブラリー内の所望のターゲット関数のインポート記述子テーブルを変更する。このような変更は、アプリケーションがインポートテーブルマッピングを使用してメソッドを呼び出そうと試みると所望のターゲット関数をインターセプトする、カスタムフックライブラリー内のフックハンドラーに、呼び出しを提供する。フックハンドラー内に実装されたコードは、単にアクションを監視してログをとり、もとのネイティブターゲット実装に実行を転送してもよい。代わりに、意図される関数挙動を変更するよう、またはもとの結果をカスタマイズもしくはフィルタリングするよう、またはメソッドを完全に置き換えるようコードが作られ得る。最終的に、フックは、呼び出しアプリケーションに実行を返す。フッキング手法を使用すると、完全なAPIライブラリーの置き換えに似たターゲットソリューションを実現できる。
本発明は、Microsoft Windows(登録商標)オペレーティングシステムにおいてMicrosoftのRaw Input APIを使用するサードパーティアプリケーションに「仮想マウス」を提供し、1つ以上のマウスデバイスをサポートする。本発明の方法は、サードパーティアプリケーションがリモートデスクトップセッション内で実行されていても機能する。本発明の目標の1つは、IWP上の複数の一意のペンデバイスからの入力を、ホストPC上で実行されているアプリケーションに、ネットワーク上で安全に提供することである。本発明は、他のソース位置からの「仮想マウス」がアプリケーション動作に含まれることを可能にする。
「仮想マウス」は、それらをオペレーティングシステムが認識していないという点で、実際のマウスデバイスと区別される。一方、アプリケーションは、それらを獲得するためにオペレーティングシステムAPIサービスを使用することになるため、「仮想マウス」は、アプリケーションレイヤーには実際のマウスデバイスのように見えなければならない(すなわちRAW Input)。EpsonのBrightLink 475Wi IWPなどの対話型ホワイトボードプロジェクターとともに動作するペンデバイスをサポートするために、いかなるカスタムアプリケーション変更も要求しないことが目的である。マウスドライバーがリモートの物理ハードウェアとともに動作する場合でも、そのようなドライバーをオペレーティングシステムにおいてインストールまたは使用することは望ましくない。これは、ネイティブRaw Inputまたは関係するAPIを介して、アプリケーションにデバイスへのアクセアスを自動的に提供するであろうが、デバイスは、すべてのアプリケーションに公開され、システムにより使用可能となる。最も重要なことは、リモートデスクトップセッション内で動作している間、オペレーティングシステムに公開されているすべてのマウスは、入力デスクトップに向けられるということである。リモートデスクトップセッションは、ある種の仮想マウスであり、リモートデスクトップ接続クライアントによって提供される、単一のリモートデスクトップマウスのみに制限される。したがって、ペンデバイスをオペレーティングシステムに公開することは、この状況では望ましくない。
本願明細書に記載されるネットワークプロジェクターは、クライアントと呼ばれることも、プロジェクターと呼ばれることもある。このプロジェクターは、リモートデスクトップコンテンツを表示するために、仮想ネットワーク接続に対するクライアント側アプリケーションを提供する。本願明細書に記載されるホストは、ネットワークコンピューター、ラップトップまたはハンドヘルドデバイスとして定義され、特に、クライアントとの仮想ネットワーキング接続においてサービング機能を提供することができる。実施形態では、ネットワークプロジェクターは、リモートデスクトップ接続クライアントアプリケーションのサポートを提供する、Windows組み込みオペレーティングシステムを導入する。ホストは、リモートデスクトップターミナルサーバーと呼ばれる、Microsoftのリモートデスクトップサービスのサーバーコンポーネントを提供するネットワークコンピューターである。
図2は、本発明の主要なコンポーネントのブロック図による概観である。上記のように、本発明のクライアントは、ネットワーク12に接続されたネットワークプロジェクター10である。ネットワークプロジェクター10(クライアント)は、ウェブサーバーコンポーネントを有するとよく、これは、必要なコンポーネントをホスト16がインストールするためのアクセスインターフェイスを提供するためにプロジェクター10で実行され、リモートデスクトップ接続プロセスを開始する方法を提供する。リモートデスクトップ接続プロセスの詳細は、本発明の理解に必要ではないが、2011年12月21日に出願された、所有者共通の米国特許出願第13/332,751号に開示されており、その内容全体を参照によって本願明細書に引用したものとする。以下、ネットワークプロジェクター10は、クライアントプロジェクター10と呼ばれる。上記のように、ホスト16は、例として図2に示されているネットワークコンピューターであっても、例として図3に示されているラップトップであっても、ハンドヘルドデバイスであってもよい。ホスト16は、本願明細書では概してホストコンピューター16と呼ばれる。図2に示されている好適な実施形態では、クライアントプロジェクター10は、リモートデスクトップ接続クライアント18アプリケーションのサポートを提供するWindows組み込みオペレーティングシステムを導入し、ホストコンピューター16は、Windowsオペレーティングシステム提供のサーバーコンポーネントであるリモートデスクトップターミナルサーバー34を導入する。
リモートデスクトップ接続クライアント18は、クライアントプロジェクター10内で実行され、リモートデスクトッププロトコル(RDP:Remote Desktop Protocol)46を使用してホストコンピューター16と通信するアプリケーションであり、RDP46は、ホストコンピューター16がデスクトップ表示をクライアントプロジェクター10に提供し、クライアントプロジェクター10がキーボード/マウスイベント49をホストコンピューター16に提供するのに用いるインターフェイスである。リモートデスクトップ接続クライアント18は、リモートデスクトップセッションを用いたアクセスおよび対話のために、クライアント上にユーザーインターフェイスを提供する。このコンポーネントは、マルチペン入力リダイレクションコンポーネント24のように、リモートデスクトップサービス仮想チャネル22を拡張するために必要なものなど、任意の外部動的リンクライブラリーのローディングを管理する。
クライアントプロジェクター10のマルチペン入力捕捉モジュール26は、接続されたペンデバイス28(すなわち電子ホワイトボードペン)に対する列挙およびアクセス、個々のペンデバイス識別データの保持、ならびに最終的には各ペンのイベントデータを集めることを担当する。捕捉されたデータおよびデバイス情報は、ネットワーク12上でホストコンピューター16のコンポーネントに転送するために、マルチペン入力リダイレクションコンポーネント24に送信される。ハードウェアデバイスからのイベントデータの捕捉には、このコンポーネントが、ドライバーまたはその他の低レベルインターフェイスの一部であることが必要であることもある。または、別のモジュールからこの情報を受信するよう構成されていてもよい。
マルチペン入力捕捉モジュール26から出て行くイベントデータは、一般的なマウス関係のアクティビティー情報を含む構造の形式をとる。マルチペン入力捕捉モジュール26は、構造がやり取りに適していることを保証する。一実施形態では、イベントデータは、Microsoftの_MOUSE_INPUT_DATA構造に似た形式に従い、フラグ、ボタン状態、および座標移動情報を含む。
一実施形態では、マルチペン入力リダイレクションコンポーネント24との通信は、CreateMsgQueueまたは同様のAPIを使用してメッセージキューを介して提供される。その他の形式のプロセス間通信が使用されてもよい。代わりに、マルチペン入力捕捉モジュール26は、マルチペン入力リダイレクションコンポーネント24のサブコンポーネントとして含まれることが可能であろう。
クライアントプロジェクター10のマルチペン入力リダイレクションコンポーネント24は、リモートデスクトップサービス仮想チャネル22のクライアント側エンドポイントを作成し、マルチペン入力捕捉モジュール26によって受信されるマルチペン入力イベント32を伝送する。マルチペン入力リダイレクションコンポーネント24は、新たなリモートデスクトップ接続が確立されるとリモートデスクトップサービスによってロードされる、動的リンクライブラリーとしてパッケージ化される。
代わりの実施形態では、マルチペン入力リダイレクションコンポーネント24は、別個に起動され、それ用の、マルチペン入力受信コンポーネント36へのネットワークリンクを使用し、マルチペン入力受信コンポーネント36も、その別個のネットワークリンクを使用するよう構成されている。このように、マルチペン入力イベント32は代わりに別個のネットワークリンク上で送信されるため、リモートデスクトップコンポーネントは、マルチペン入力イベント32を伝送するために必須ではない。
ホストコンピューター16のリモートデスクトップターミナルサーバー34は、リモートデスクトッププロトコル(RDP)46を使用してクライアントと通信する。これは、リモートデスクトップなどの、リモートデスクトップセッションのホスティングコンポーネントを提供し、クライアントマシン(すなわちクライアントプロジェクター10)が、ユーザーデスクトップにアクセスするためにホストコンピューター16と接続できるようにする。
ホストコンピューター16のマルチペン入力受信コンポーネント26は、リモートデスクトップサービス仮想チャネル22のサーバー側エンドポイントを作成し、マルチペン入力リダイレクションコンポーネント24から、マルチペン入力捕捉モジュール26によって提供された入力イベントが伝送されるのを待つ。マルチペン入力受信コンポーネント26は、受信されたペンデバイスイベント32を、受信されたとおりに仮想マウスデバイスインターフェイス38に送出する。
代わりの実施形態では、マルチペン入力受信コンポーネント26は、別個のネットワーク接続を含むほかのソースから入力イベントを受信することができる。不必要なデータマーシャリングを回避するために、マルチペン入力受信コンポーネント26は、仮想マウスデバイスインターフェイス38のモジュールとして導入されることが可能であろう。
ホストコンピューター16の仮想マウスデバイスインターフェイス38は、収集する入力イベントから「仮想マウス」デバイス40を準備または破棄するメソッドを提供する。この基本的なインターフェイスは、デバイス識別ハンドルおよびオプションのイベントデータを使用するDeviceAdd、DeviceRemoveおよびDeviceEventインターフェイス関数を提供する。仮想マウスデバイスインターフェイス38コンポーネントは、各論理(仮想)マウスの情報を記憶および保持し、それが受信するイベントデータを送出するか、またはそれを獲得するためのインターフェイスを提供する。
仮想マウスデバイスインターフェイス38は、クイック起動フックインジェクターアプリケーション42内に導入されてもよく、Raw Inputフックハンドラー44の統合された部分であってもよい。
ホストコンピューター16のクイック起動フックインジェクターアプリケーション42は、実行中のターゲットアプリケーションへのRaw Inputフックハンドラー44コンポーネントのインジェクションを管理する。ターゲットアプリケーションは、任意選択で、クイック起動フックインジェクターアプリケーション42によって起動され、アプリケーションのロードの直後、且つ実行の前にフックされる。
クイック起動フックインジェクターアプリケーション42は、ツールバー、アプリケーションウィンドウ、またはその他のGUI(グラフィカルユーザーインターフェイス)要素を表示するとよく、「仮想マウス」入力を導入することが望まれるraw input認識ターゲットアプリケーションのユーザー選択を支援するために使用可能である。例えば、システム内のインストールされているアプリケーションのアイコンを含む、ツールバーに似たGUIが提示されてもよい。アプリケーションを任意選択で起動し、続いてアプリケーションにRaw Inputフックハンドラー44コンポーネントをインジェクトするには、ユーザーは、単にアイコンを選択すればよい。別の実施形態では、実行中のアプリケーションのリストが選択され得る。リストから1つ選択することで、既に実行中のプロセスの動的フッキングが可能となる。別の実施形態では、ツールバー上のアプリケーションアイコンは、設定可能である。ユーザーは、例えば、アプリケーションショートカットまたは実行可能ファイルをツールバーエリアへとドラッグアンドドロップしてもよく、これは、アプリケーションアイコンにGUIを追加させる。代わりに、ファイル選択ダイアログが提供され、ツールバーのアプリケーション要素を特定するために使用されてもよい。アイコンの選択は、関係するアプリケーションを起動する。
インジェクションは、使用されるフッキングフレームワークおよび方法に従って生じる。クイック起動フックインジェクターアプリケーション42は、フッキングプロセスの確立が難しいことをユーザーに知らせることのような(すなわち、選ばれたアプリケーションがRaw Inputプロトコルを使用していない)、インジェクションプロセスのステータスのレポートを行うよう構成され得る。
クイック起動フックインジェクターアプリケーション42は、典型的には、新たなリモートデスクトップセッションのデスクトップ内に自動的に起動される。代わりに、クイック起動フックインジェクターアプリケーション42は、ユーザーによって直接呼び出されてもよい。ツールバーとして、このアプリケーションは、ユーザーデスクトップ内の通常のコンポーネントとして構成され得る。いずれの場合にも、クイック起動フックインジェクターアプリケーション42は、本発明のフッキング動作が供給されるアプリケーションへのブックマークを提供するよう利用可能であり、将来使用するために、任意の構成済みアプリケーションまたはインジェクションステータスイベントの状態を保存することができる。
一実施形態では、クイック起動フックインジェクターアプリケーション42は、仮想マウスデバイスインターフェイス38を保持し、起動されているすべてのRaw Inputフックハンドラー44との通信のためのコンジットを提供する。このように、クイック起動フックインジェクターアプリケーション42は、システム内のすべての「仮想マウス」を管理することができる。
Raw InputアプリケーションA...N50は、独立した複数のマウスデバイスが有効であるとよいホストコンピューター16上の既存のマルチデバイス認識アプリケーションである。各アプリケーションは、ネイティブオペレーティングシステムのRaw Input API48を使用するよう構成されている。
ホストコンピューター16のRaw Inputフックハンドラー44は、選択された各ターゲットアプリケーションの実行中のプロセス空間にインジェクトされ、Microsoftのuser32.dllによって提供される必要なRaw Input API48を「フック」するために実行を開始する。このコンポーネントの主な役割は、インジェクトされたRaw Input認識アプリケーションによって使用されるすべてのRaw Input API48関数呼び出しをインターセプトし、それをカスタム実装に置き換えることである。このカスタム実装は、ネイティブRaw Input APIメソッドと通信するよう構成されているアプリケーションに、「仮想マウス」と、仮想マウスデバイスインターフェイス38の関連する入力イベントとを提供する。このカスタム実装を完成させるには、Raw Inputフックハンドラー44はさらに、ネイティブRaw Input APIメカニズムと一致する形で、アプリケーションに対するいくつかのシステムイベントおよびメッセージをシミュレートしなければならない。例えば、「仮想マウス」デバイスに関するレポートおよび管理がホストオペレーティングシステムプロセスによって実行されたかのように、アプリケーションウィンドウメッセージキュー内にイベントをポストしたり、他の場合にはデバイスの到着およびデバイスの取り外しイベントをレポートしたりする。
一実施形態では、Raw Inputフックハンドラー44内にいくつかのコンポーネントがある。それらについて、以下で概説する。
RawInputHooksモジュールは、フックハンドラーインターセプトエントリポイントに、フックされる各Raw Input API関数の代わりのメソッドを提供する。Raw Input API48関数がアプリケーションによって呼び出されると、フックハンドラーがその関数呼び出しを処理する。
GetRawInputBuffer_Hooked関数は、呼び出しスレッドのWindowsメッセージキューに関連する仮想マウスイベントデータを返す。これは、ネイティブGetRawInputBufferメソッドから取得された任意のデータにこの情報を追加する。
GetRawInputData_Hooked関数は、送られてくる渡されたデータイベントハンドルを調べ、それが、以前提供されて仮想マウスメソッドに使用された一意のハンドルと一致すれば、イベントハンドルに関連する適切なデータおよび情報リクエストコマンドが返される。そうでなければ、メソッドは単に、ネイティブGetRawInputDataを呼び出し、そのデータイベントハンドルに従ってシステムに処理を行わせる。
GetRawInputDeviceInfoW_Hooked(Unicode)およびGetRawInputDeviceInfoA_Hooked(ANSI)は、関係するRaw Input GetRawInputDeviceInfoWおよびGetRawInputDeviceInfoA関数のフックメソッドを提供する。フックされたハンドラーは、送られてくる渡されたデバイスハンドルを調べ、それが任意の既知の仮想マウスのデバイスハンドルと一致すれば、メソッドは、仮想マウスデバイスインターフェイス38から、デバイスに関して集められた適切な情報を返す。その他の場合、デバイスハンドルは未知であるため、ネイティブRaw Inputメソッドを呼び出した結果が返される。
GetRawInputDeviceList_Hooked関数は、まず、ネイティブGetRawInputDeviceListメソッドを呼び出すことによって、既知のデバイス、カウントなどのセットを収集する。続いて、フックされた関数は、返された結果を、仮想マウスデバイスインターフェイス38内の情報に従って調整する。例えば、返された結果は、システムHID(ヒューマンインターフェイスデバイス)ハンドルおよびすべての「仮想マウス」40の仮想マウスデバイスハンドルの、カウントおよびリストの両方を供給する。
RegisteredRawInputDevices_Hooked関数は、単に、ネイティブRegisteredRawInputDeviceメソッドを呼び出し、監視メソッドを実行し、ネイティブ結果を返す。監視メソッドは、Raw Input APIにおけるアプリケーションの登録を調べるタスクを課されており、どのアプリケーションウィンドウまたはスレッドキューがマウスイベント情報をリクエストしているかを検出する。通知プロセスは、Raw Input制御メソッドと似た形で適切なウィンドウターゲットに「仮想マウス」イベントデータを送信するために、この情報を使用する。GetRegisteredRawInputDevicesメソッドは、通知状態を初期化するために、フックインジェクションプロセス中に呼び出される。
RawInputNotifierモジュールは、Raw Input API48に代わって(「仮想マウス」を認識しない)、「仮想マウス」イベントデータをアプリケーションに伝送することを担当するイベント通知スレッドを提供する。このモジュールはさらに、このプロセスをサポートするために、共通メッセージキュー関数へのフックエントリポイントを提供する。
GetMessage_HookedおよびPeekMessage_Hooked関数は、ネイティブGetMessageおよびPeekMessage関数をインターセプトする。フックメソッドはまず、ネイティブ関数を呼び出し、アプリケーションによる処理の前に、Raw Input APIのWM_INPUTメッセージの、Windowsメッセージキュー削除を監視する。このRawInputNotifierモジュールによってキュー内にメッセージがポストされたときに与えられる、一意的に提供されるRaw Inputハンドルによって、メッセージが「仮想マウス」40をターゲットにしていることが示されていれば、フックメソッドは、仮想マウススレッドバッファー内の次の「仮想マウス」イベントの削除を合図する。次のイベントが「古い」か、または他のメソッド(すなわち、GetRawInputBuffer)によって処理されていれば、フックされた関数は、次のイベントが有効となるまで、必要に応じてGetMessageまたはPeekMessage関数でループする。
通知スレッドは、仮想マウスデバイスインターフェイス38によって「仮想マウス」イベントが送出されると始動するよう構成されている。このスレッドは、任意の未解決イベントを収集し、アプリケーションに通知する。これは、PostMessageを呼び出して、一意のRaw Inputハンドルを使用してイベントに関するWM_INPUTメッセージを挿入してもよい。アプリケーションは、後にこのメッセージを受信し、イベントデータおよびその他の詳細を獲得するために適切なRaw Inputメソッドを呼び出す。通知メソッドはさらに、SendMessageTimeoutを呼び出して、WM_INPUT_DEVICE_CHANGE通知を提供し、PostMessageを呼び出して、「仮想マウス」の新たな到着または未解決の離脱(departure)に関するWM_INPUT_DEVICE_CHANGEメッセージを挿入するとよい。仮想マウスデバイスインターフェイス38は、状態を保持するため、または未解決のデバイス変更の最終的なテアダウン(teardown)を実行するために必要に応じて呼び出される。最後に、通知スレッドは、SendInputを使用して、Windowsメッセージキューステータス(変更のために直接のためには利用できない)を変更し、raw inputイベントの未解決状態を反映するとよい。これは、このキューステータス状態を待つ任意のアプリケーションスレッドが始動することを可能にする。
VirtualMouseオブジェクトは、一意のDeviceHandleおよびDeviceIDによって維持される。これらは、オペレーティングシステムによって他のデバイスに関して既に生成されたものに干渉しないように選ばれ、さらに、アプリケーションに対する特定のマウスを命名および特定するために使用される。
場合により仮想マウスデバイスインターフェイス38を実装するVirtualDeviceManagerモジュールは、VirtualMouseオブジェクトのリストの記憶を提供する。これは、一意のデバイスハンドルおよび外部仮想マウスデバイス識別子によって、VirtualMouseオブジェクトへのマッピングを保持する。MouseEvents(ポストされたときの通知ウィンドウ、マウスデバイスハンドル、マウスイベントデータ、到着/離脱/データ状態などを含む)が、特定のアプリケーションスレッドidに固有のMouseEventBuffersに保持される。スレッド毎のバッファーおよびマッピングは、VirtualDeviceManager内にある。送られてくる「仮想マウス」イベントの通知メッセージは、アプリケーションにポストされ、イベントは、適切なMouseEventBufferに記憶される。アプリケーションが通知メッセージを処理すると、イベントデータを取得するためにこれらのバッファーがアクセスされる。
以下は、図3内の概略のステップ(1〜6)に示されている、本発明の説明である。
図3の上半分は、本発明が解決する問題を示す。対話型ホワイトボードプロジェクター(IWP)、すなわちクライアントプロジェクター10が、リモートPC、すなわちホストコンピューター16に、リモートデスクトッププロトコル(RDP)接続を介して接続されている。本発明のソリューションを用いないRDP接続では、複数のプロジェクター入力デバイス、すなわち電子ホワイトボードペン28の入力は、システム(ホストコンピューター16)およびホストコンピューター16上で実行中のアプリケーションには1つのRDPマウスしか見えないように、RDP全体でマージされる。
本発明のソリューションは、3つの主な部分からなる。以下、図2を参照する。第1の部分は、IWP(クライアントプロジェクター10)上でペンデバイス入力を収集し(すなわちマルチペン入力捕捉モジュール26)、それらをマウスイベント(32)としてホストPC(ホストコンピューター16)上の受信機(マルチペン入力受信コンポーネント36)へ伝送する。第2の部分は、仮想マウス40のプールと、それらに関連するマウス入力データのイベントキューとを保持するインターフェイス(仮想マウスデバイスインターフェイス38)を管理する。第3の部分は、ターゲットアプリケーション50によって使用されているRaw Input API48メソッドをフックし(クイック起動フックインジェクターアプリケーション42が、Raw Inputフックハンドラー44をアプリケーションプロセス空間内にインジェクトする)、仮想マウス40および関連するイベントを、フックされたメソッドの結果に挿入する。
本発明は、ローカルエリアネットワーク12に接続され、クライアントからホストへのリモートデスクトップ接続46によって相互接続された、クライアントプロジェクター10(IWP)およびホストコンピューター16(例えばラップトップ)により開始する。ペン入力デバイス28は、監視されるか、またはクライアントプロジェクター10に接続され、クライアントプロジェクター10は、これらの入力デバイスを列挙し、それぞれの一意の識別子のリストを保持するよう構成されている。入力デバイスおよび生成されるイベントは、適切なドライバー、APIまたはその他の通知インターフェイスを使用してクライアントのマルチペン入力捕捉モジュール26において捕捉される。
本発明は、必要に応じてペンイベントをマウスデバイスイベントに変換し(マルチペン入力捕捉モジュール26によって)、それら(すなわちマルチペン入力イベント32)を、ネットワーク上でホストコンピューター16に伝送することによって続行する。クライアントとホストとの間に作成され接続されているリモートデスクトップサービス仮想チャネル22は、このデータの好ましい経路の1つである。リモートデスクトッププロトコル46を介してリモートデスクトップサービスによって自動的に提供されるセキュリティーおよび暗号化は、有利である。
本発明は、ホストコンピューター16上で続行し、複数ペンデバイスのマウスデータが、マウスペン入力受信コンポーネント36によって受信される。2011年12月21日に出願され、その内容全体を参照によって本願明細書に引用したものとする、所有者共通の米国特許出願第13/332,751号により詳しく説明されているように、ホストコンピューター16上で必要なモジュールは、プレインストールされていて、クライアントからのリモートデスクトップ接続の直前に起動されてもよい。あるいは、これらのモジュールは、ダウンロードされても、または他の場合にはプレインストールおよび構成されてもよい。任意選択で、受信コンポーネントは、ユーザーによって起動されるフッキングコンポーネントと統合されてもよい。
受信された入力は、仮想マウスデバイスインターフェイス38に渡され、仮想マウスデバイスインターフェイス38は、ホストアプリケーション50によって使用されるRaw Input API48メソッドをオーバーライドするフックハンドラーによって処理される「仮想マウス」40および情報キューを構築または無効化する。「仮想マウス」イベントは、任意のRaw Inputフックハンドラー44に送出され、メソッドの結果に追加される。したがって、アプリケーション50は、「仮想マウス」からのイベントデータを含むAPIメソッド結果を、この情報が物理マウスデバイスに関係するオペレーティングシステムマウスドライバーによって提供されたかのように受信する。
本発明は、Raw Input API48を介した1つ以上のマウス入力を必要とするアプリケーション50を、ユーザーが特定して起動すると続行する。ツールバーまたは同様のアプリケーション要素のような任意選択のGUIインターフェイスが、アプリケーションを起動するため、または既存のアプリケーションを列挙するために提供されてもよい。本発明は、起動されたアプリケーションに本発明のフッキングモジュールをインジェクトする合図が提供されると、続行する。合図は、アプリケーション起動プロセス内のステップとして任意選択のGUIツールバーによって提供されてもよく、または別個のアクションの間に生じてもよい。Raw Inputフックハンドラー44のRawInputHooksモジュールについては、上記にさらに詳しく記載されている。インジェクター(クイック起動フックインジェクターアプリケーション42)は、フッキングモジュール(RawInputHooks)をターゲットアプリケーションのプロセス空間内にロードし、実行を開始する。
フッキングモジュールは、Raw Inputメソッドに対するアプリケーション呼び出しを、フッキングモジュールが提供する代わりの実装でインターセプトするために、Raw Input API48メソッドを発見し、フックをセットする。続いて、本発明は、通常のアプリケーション実行を可能にすることによって続行する。
フッキングモジュールは、仮想マウスデバイスインターフェイス38からの、デバイス到着および離脱を含む、送られてくる「仮想マウス」イベントを獲得および監視するために、スレッドを作成する。登録されたデバイスクラス、受信イベントウィンドウなどをセットアップするアプリケーションRaw Input呼び出しに従って、関係するメッセージが構築されアプリケーションのWindowsメッセージキュー内に挿入される。アプリケーション50がRaw Input API呼び出しを行うとき、それらは、Raw Inputフックハンドラー44内のフックメソッドによってインターセプトされ、フックメソッドは、オペレーティングシステム(OS)結果を受信するためにネイティブRaw Inputメソッドを呼び出し、続いてOS結果が、「仮想マウス」データを含むよう変更される。
図3の下半分は、本発明の概略のプロセスを示す。一般に、Microsoft Windows(登録商標)オペレーティングシステム内で実行されているアプリケーションは、接続されている各マウスおよびその入力に関する詳細をアプリケーションに提供できるいくつかのAPI(アプリケーションプログラミングインターフェイス)にアクセスできる。ホストコンピューター16上で実行中のアプリケーション50が、図面の左側に示されており、本発明のRaw Inputフックが、図面の右側にある。ステップ1において、動的リンクライブラリー(DLL)インジェクションが、Raw Inputメソッドに対する本発明のRaw Inputフックハンドラー44を、アプリケーション50によってロードされたSDK(ソフトウェア開発キット)ライブラリー内にインストールする。ステップ2において、アプリケーション50がRaw Input API関数を呼び出す。この例では、アプリケーションは、任意の接続された入力デバイスをまとめるために、GetRawInputDeviceList SDKメソッドを呼び出そうとする。ステップ3において、Raw Inputフックハンドラー44は、Raw Input API48関数呼び出しに対するアプリケーション50呼び出しをインターセプトし、それを、本発明によるフックハンドラーメソッドにリダイレクトする。例えば、ステップ3において、システム内のすべての登録されているHID(ヒューマンインターフェイスデバイス)を獲得するべきである、GetRawInputDeviceListのフックされたバージョンが呼び出される。ステップ4において、もとのネイティブRaw Input SDKライブラリーメソッドが呼び出され、オペレーティングシステム(OS)は、2つのデバイス、すなわちリモートデスクトップキーボード54およびマウスデバイス56を返す。ステップ5において、続いて本発明のフッキングモジュールは、仮想マウスインターフェイス38から、認識している仮想マウス(すなわち3つのマウス)を追加し、ステップ6において、変更されたメソッドの結果(すなわち合計5つのデバイス)をアプリケーション50に返す。
上記の本発明の方法ステップは、好適には、ホストコンピューター16および/またはクライアントプロジェクター10内のメモリーおよび/またはアクセス可能な外部メモリーに記憶されているかまたはロード可能な、コンピューター実行可能命令、プログラム、ソフトウェア、ファームウェアを実行する、ホストコンピューター16および/またはクライアントプロジェクター10内の1つ以上のプロセッサーによって実行される。図4は、ホストコンピューター16およびクライアントプロジェクター10内のプロセッサーおよびメモリーを概略的に示す、大幅に単純化されたブロック図である。ホストコンピューター16のプロセッサーは、例えば中央処理ユニット(CPU:central processing unit)161および1つ以上のグラフィカル処理ユニット(GPU:graphical processing unit)162を含むとよい。内部メモリーは、例えばRAM163およびROM164を含むとよい。I/Oインターフェイス165は、例えばキーボード54、マウス56および外部メモリー166との通信を可能にする。クライアントプロジェクター10は、同様に、CPU101、RAM102およびROM102を含むとよい。
様々な実施形態が、デジタル電子回路において、またはコンピューターハードウェア、ファームウェア、ソフトウェアにおいて、またはその組み合わせにおいて実装可能である。装置は、プログラマブルプロセッサーによる実行のために非一時的機械可読記憶デバイスにおいて有形に具現化されたコンピュータープログラム製品において実装可能であり、方法ステップは、入力データに作用し出力を生成することにより機能を実行するために命令のプログラムを実行するプログラマブルプロセッサーにより実行可能である。実施形態は、データ記憶システムからデータおよび命令を受信し、データ記憶システムにデータおよび命令を伝送するよう結合された、少なくとも1つのプログラマブルプロセッサーと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含むプログラマブルシステム上で実行可能な、1つ以上のコンピュータープログラムにおいて有効に実装可能である。各コンピュータープログラムは、高水準手続き型もしくはオブジェクト指向プログラミング言語で、または必要に応じてアセンブリー言語もしくは機械語で実装可能である。いずれの場合も、言語は、コンパイラー型またはインタプリタ型言語とされ得る。適切なプロセッサーには、例として、汎用および専用両方のマイクロプロセッサーが含まれる。一般に、プロセッサーは、読み取り専用メモリーおよび/またはランダムアクセスメモリーから命令およびデータを受信する。一般に、コンピューターは、データファイルを記憶する1つ以上の大容量記憶デバイスを含む。そのようなデバイスには、内蔵ハードディスクおよび取り外し可能ディスクなどの磁気ディスク、光磁気ディスクおよび光ディスクがある。コンピュータープログラム命令およびデータを有形に具現化するのに適した記憶デバイスには、あらゆる形式の不揮発性メモリーがあり、例として、EPROM、EEPROMおよびフラッシュメモリーデバイスなどの半導体メモリーデバイス、内蔵ハードディスクおよび取り外し可能ディスクなどの磁気ディスク、光磁気ディスクならびにCD−ROMディスクなどがある。前述のうち任意のものは、ASIC(application−specific integrated circuit:特定用途向け集積回路)により補完されること、またはそれに組み込まれることが可能である。
いくつかの特定の実施形態と関連して本発明について記載したが、当業者には当然のことながら、さらなる多数の選択肢、変更および変形物が、前述の説明を考慮に入れると明らかとなる。例えば、提案されたフッキングモジュールは、オペレーティングシステム内にインストールも、他の形で構成もされていない「仮想マウス」を、選ばれたアプリケーション内に挿入する方法を提供する。こうした仮想マウスのイベントデータは、リモートデスクトップ接続のクライアントから到着する必要はない。代わりに、別の実施形態では、リモートデスクトップサービス仮想チャネルが使用されず、マウスイベントデータは、代わりのネットワーク接続から到着する。例えば、別のコンピューターが、イベントを生成すること、またはローカル接続されたマウスからのイベントをホストPC上のアプリケーションと共有することができるであろう。このように、リモートデスクトップサービスは、本方法の、独立した無関係な任意選択のコンポーネントである。
さらに別の実施形態では、ネットワーク接続は使用されず、マウスイベントデータは、ホスト内で実行中の別のアプリケーションから到着する。このアプリケーションは、本物のマウスデバイスをシミュレートしても、アクティブなマウスを選ぶ何らかのメカニズムを用いて追加の選択可能なマウスを与えても、当該データをマウスデータに書き換えフックされたアプリケーションの仮想マウスデバイスインターフェイスへ送信される、マウスのようなほかの何らかのハードウェアデバイス間のインターフェイスを提供しても、または単に任意数の入力イベントをデモンストレーションスクリプトに従って提供してもよい。したがって、本願明細書に記載された発明は、添付の特許請求の範囲の意図および範囲内に入るそうした選択肢、変更、適用および変形物すべてを包含するものとする。

Claims (18)

  1. ネットワークによって接続されている、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションにおいて、複数のヒューマンインターフェイスデバイス入力を提供する方法であって、
    前記クライアントプロジェクターと、前記ホストコンピューターとの間のリモートデスクトップセッションを確立することと、
    前記クライアントプロジェクターにおいて、プロセッサーを使用して、
    複数のヒューマンインターフェイスデバイスからの入力を捕捉し、前記ヒューマンインターフェイスデバイス入力を前記ホストコンピューターに転送することと、
    前記ホストコンピューターにおいて、プロセッサーを使用して、
    前記クライアントプロジェクターから前記ヒューマンインターフェイスデバイス入力を受信し、各クライアントプロジェクターヒューマンインターフェイスデバイスに関する情報を仮想デバイスとして記憶および保持することと、
    前記ホストコンピューター上で実行中のアプリケーションからのraw input関数呼び出しをインターセプトすることと、
    各ホストコンピューターヒューマンインターフェイスデバイスに関する情報を収集することと、
    前記ホストコンピューター上で実行中の前記アプリケーションに、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報および各仮想デバイスに関する情報を返すことと、
    を含む方法。
  2. raw input関数呼び出しをインターセプトすることは、フックハンドラーを用いて前記関数呼び出しを処理することを含む、請求項1に記載の方法。
  3. バイス取り外しイベントを含む各仮想デバイスに関するシステムイベントをシミュレートすることをさらに含む、請求項1に記載の方法。
  4. 各クライアントプロジェクターヒューマンインターフェイスデバイスを命名および特定するために使用される仮想デバイスオブジェクトを保持することをさらに含む、請求項1に記載の方法。
  5. 前記クライアントプロジェクターヒューマンインターフェイスデバイスからの前記入力は、フラグ、ボタン状態および座標情報のうちの少なくとも1つを含む、請求項1に記載の方法。
  6. 前記クライアントプロジェクターヒューマンインターフェイスデバイスは、電子ホワイトボードペンである、請求項1に記載の方法。
  7. 前記ホストコンピューターと、前記クライアントプロジェクターとの間のリモートデスクトップサービス仮想チャネルを確立することと、
    前記リモートデスクトップサービス仮想チャネル上で前記クライアントプロジェクターから転送されたヒューマンインターフェイスデバイス入力を、前記ホストコンピューターによって受信することと、をさらに含む、請求項1に記載の方法。
  8. 仮想デバイスは、仮想マウスである、請求項1に記載の方法。
  9. ネットワークによって接続されている、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションにおいて、複数のヒューマンインターフェイスデバイス入力を提供するシステムであって、
    前記クライアントプロジェクターと、前記ホストコンピューターとの間のリモートデスクトップセッションを確立し、
    複数のヒューマンインターフェイスデバイスからの入力を捕捉し、前記ヒューマンインターフェイスデバイス入力を前記ホストコンピューターに転送する
    プロセッサーを、前記クライアントプロジェクター内に含み、
    前記クライアントプロジェクターから前記ヒューマンインターフェイスデバイス入力を受信し、各クライアントプロジェクターヒューマンインターフェイスデバイスに関する情報を仮想デバイスとして記憶および保持し、
    前記ホストコンピューター上で実行中のアプリケーションからのraw input関数呼び出しをインターセプトし、
    各ホストコンピューターヒューマンインターフェイスデバイスに関する情報を収集し、
    前記ホストコンピューター上で実行中の前記アプリケーションに、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報および各仮想デバイスに関する情報を返す
    プロセッサーを、前記ホストコンピューター内に含む、
    システム。
  10. 前記ホストコンピュータープロセッサーは、raw input関数呼び出しを、フックハンドラーを用いて前記関数呼び出しを処理することによってインターセプトする、請求項に記載のシステム。
  11. 前記ホストコンピュータープロセッサーまたは前記クライアントプロジェクタープロセッサーは、デバイス取り外しイベントを含む各仮想デバイスに関するシステムイベントをシミュレートする、請求項に記載のシステム。
  12. 前記ホストコンピュータープロセッサーまたは前記クライアントプロジェクタープロセッサーは、各クライアントプロジェクターヒューマンインターフェイスデバイスを命名および特定するために使用される仮想デバイスオブジェクトを保持する、請求項に記載のシステム。
  13. 前記クライアントプロジェクターヒューマンインターフェイスデバイスは、電子ホワイトボードペンである、請求項に記載のシステム。
  14. 前記クライアントプロジェクターから転送されたヒューマンインターフェイスデバイス入力を、前記ホストコンピューターによって受信するために、前記ホストコンピューターと、前記クライアントプロジェクターとの間のリモートデスクトップサービス仮想チャネルをさらに含む、請求項に記載のシステム。
  15. ネットワークによって接続されている、クライアントプロジェクターと、ホストコンピューターとの間のリモートデスクトップセッションにおいて、複数のヒューマンインターフェイスデバイス入力を提供する方法を実行するためにコンピューターによって実行可能な命令を具現化する、1つ以上の有形の非一時的コンピューター可読媒体であって、前記方法は、
    前記クライアントプロジェクターと、前記ホストコンピューターとの間のリモートデスクトップセッションを確立することと、
    前記クライアントプロジェクターにおいて、プロセッサーを使用して、
    複数のヒューマンインターフェイスデバイスからの入力を捕捉し、前記ヒューマンインターフェイスデバイス入力を前記ホストコンピューターに転送することと、
    前記ホストコンピューターにおいて、プロセッサーを使用して、
    前記クライアントプロジェクターから前記ヒューマンインターフェイスデバイス入力を受信し、各クライアントプロジェクターヒューマンインターフェイスデバイスに関する情報を仮想デバイスとして記憶および保持することと、
    前記ホストコンピューター上で実行中のアプリケーションからのraw input関数呼び出しをインターセプトすることと、
    各ホストコンピューターヒューマンインターフェイスデバイスに関する情報を収集することと、
    前記ホストコンピューター上で実行中の前記アプリケーションに、各ホストコンピューターヒューマンインターフェイスデバイスに関する情報および各仮想デバイスに関する情報を返すことと、
    を含む、1つ以上の有形の非一時的コンピューター可読媒体。
  16. raw input関数呼び出しをインターセプトすることは、フックハンドラーを用いて前記関数呼び出しを処理することを含む、請求項15に記載の1つ以上の有形の非一時的コンピューター可読媒体。
  17. 前記方法は、デバイス到着およびデバイス取り外しイベントを含む各仮想デバイスに関するシステムイベントをシミュレートすることをさらに含む、請求項15に記載の1つ以上の有形の非一時的コンピューター可読媒体。
  18. 前記方法は、各クライアントプロジェクターヒューマンインターフェイスデバイスを命名および特定するために使用される仮想デバイスオブジェクトを保持することをさらに含む、請求項15に記載の1つ以上の有形の非一時的コンピューター可読媒体。
JP2013018175A 2012-02-15 2013-02-01 リモートデスクトップセッションにおいて複数のマウス入力を提供する方法 Expired - Fee Related JP6083244B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/396,936 US8788950B2 (en) 2012-02-15 2012-02-15 Method for providing multiple mouse inputs in a remote desktop session
US13/396,936 2012-02-15

Publications (2)

Publication Number Publication Date
JP2013168142A JP2013168142A (ja) 2013-08-29
JP6083244B2 true JP6083244B2 (ja) 2017-02-22

Family

ID=48946702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013018175A Expired - Fee Related JP6083244B2 (ja) 2012-02-15 2013-02-01 リモートデスクトップセッションにおいて複数のマウス入力を提供する方法

Country Status (3)

Country Link
US (1) US8788950B2 (ja)
JP (1) JP6083244B2 (ja)
CN (1) CN103294172B (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4692529B2 (ja) * 2007-08-07 2011-06-01 セイコーエプソン株式会社 グラフィカルユーザインタフェース装置
CN103135879B (zh) * 2011-11-28 2016-07-06 联想(北京)有限公司 显示方法、显示装置和电子设备
WO2014137324A1 (en) * 2013-03-05 2014-09-12 Mcafee, Inc. Execution profile assembly using branch records
US9063631B2 (en) 2013-03-15 2015-06-23 Chad Dustin TILLMAN System and method for cooperative sharing of resources of an environment
US9635091B1 (en) * 2013-09-09 2017-04-25 Chad Dustin TILLMAN User interaction with desktop environment
US9444808B1 (en) 2014-01-30 2016-09-13 Dell Software Inc. System and method for providing multtenant access to shared resources
JP6269227B2 (ja) 2014-03-25 2018-01-31 セイコーエプソン株式会社 表示装置、プロジェクター、および表示制御方法
CN104050013B (zh) * 2014-05-22 2018-08-10 中兴通讯股份有限公司 虚拟桌面处理方法、装置及虚拟桌面服务器
CA2899103A1 (en) * 2014-08-01 2016-02-01 Smart Technologies Ulc Custom input routing using messaging channel of a ucc system
JP6451225B2 (ja) 2014-11-06 2019-01-16 セイコーエプソン株式会社 表示装置、プロジェクターおよび表示制御方法
JP6458564B2 (ja) * 2015-03-10 2019-01-30 セイコーエプソン株式会社 表示装置及び表示装置の制御方法
WO2017123215A1 (en) * 2016-01-13 2017-07-20 Hewlett-Packard Development Company, L.P. Executing multiple pen inputs
US11778034B2 (en) * 2016-01-15 2023-10-03 Avaya Management L.P. Embedded collaboration with an application executing on a user system
US10298635B2 (en) * 2016-12-19 2019-05-21 Ricoh Company, Ltd. Approach for accessing third-party content collaboration services on interactive whiteboard appliances using a wrapper application program interface
US10375130B2 (en) * 2016-12-19 2019-08-06 Ricoh Company, Ltd. Approach for accessing third-party content collaboration services on interactive whiteboard appliances by an application using a wrapper application program interface
US10235161B2 (en) * 2017-02-06 2019-03-19 American Megatrends, Inc. Techniques of adding security patches to embedded systems
CN108255916A (zh) * 2017-09-14 2018-07-06 广州市动景计算机科技有限公司 网页页面呈现的方法、设备、客户端装置和电子设备
US20210110646A1 (en) * 2019-10-11 2021-04-15 Citrix Systems, Inc. Systems and methods of geolocating augmented reality consoles
CN112274916A (zh) * 2020-11-20 2021-01-29 杭州雾联科技有限公司 一种键鼠输入方法、装置、设备及介质
WO2023097612A1 (zh) * 2021-12-02 2023-06-08 广州视臻信息科技有限公司 交互实现方法、装置、交互平板及存储介质
CN114374712B (zh) * 2021-12-14 2024-03-22 青岛海信微联信号有限公司 行车管理方法、电子设备和存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3422897B2 (ja) * 1996-05-17 2003-06-30 株式会社テクノクラフト 文字列抽出システム及び文字列抽出方法
US7222305B2 (en) * 2003-03-13 2007-05-22 Oracle International Corp. Method of sharing a desktop with attendees of a real-time collaboration
GB2402756A (en) 2003-06-09 2004-12-15 Appliance Studio Ltd Collaboration system
JP2005181404A (ja) * 2003-12-16 2005-07-07 Nec Viewtechnology Ltd 複数画像表示可能な画像投射制御装置
US8069226B2 (en) * 2004-09-30 2011-11-29 Citrix Systems, Inc. System and method for data synchronization over a network using a presentation level protocol
JP2006163760A (ja) * 2004-12-07 2006-06-22 Canon Inc 描画システム
JP4900889B2 (ja) * 2005-01-21 2012-03-21 キヤノン株式会社 情報処理装置及びその制御方法とプログラム
JP4741292B2 (ja) * 2005-06-09 2011-08-03 株式会社日立製作所 デバイス管理システム
US7600024B2 (en) * 2006-03-31 2009-10-06 Microsoft Corporation Restricting device access per session
US7712041B2 (en) * 2006-06-20 2010-05-04 Microsoft Corporation Multi-user multi-input desktop workspaces and applications
US8411053B2 (en) 2008-12-18 2013-04-02 Einstruction Corporation Dual pen interactive whiteboard system
EP2226704B1 (en) * 2009-03-02 2012-05-16 Anoto AB A digital pen
US20100273130A1 (en) * 2009-04-22 2010-10-28 Integrated Digital Technologies, Inc. Shooting training systems using an embedded photo sensing panel
US10146566B2 (en) * 2009-12-21 2018-12-04 Microsoft Technology Licensing, Llc Enabling virtual desktop connections to remote clients
US20130047095A1 (en) * 2010-02-08 2013-02-21 Oscar Divorra Escoda Cloud desktop system with multi-touch capabilities
US8555409B2 (en) * 2011-11-02 2013-10-08 Wyse Technolgoy Inc. System and method for providing private session-based access to a redirected USB device or local device
US20130125009A1 (en) * 2011-11-16 2013-05-16 International Business Machines Corporation Remote desktop localized content sharing

Also Published As

Publication number Publication date
JP2013168142A (ja) 2013-08-29
CN103294172A (zh) 2013-09-11
CN103294172B (zh) 2016-03-02
US8788950B2 (en) 2014-07-22
US20130212489A1 (en) 2013-08-15

Similar Documents

Publication Publication Date Title
JP6083244B2 (ja) リモートデスクトップセッションにおいて複数のマウス入力を提供する方法
JP7481421B2 (ja) Apiレジストリにおけるバックエンドサービスエンドポイントからapi関数へのバインディング
CN104704448B (zh) 本地和远程计算环境之间的反向无缝集成
CN104536802B (zh) 一种实现应用调用的方法及虚拟机
CN108021425B (zh) 一种集成多个应用图形窗口的虚拟桌面系统及运行方法
US9210212B2 (en) Method for host preview during a remote desktop session
US8640034B2 (en) Remote GUI control by replication of local interactions
CN109308241B (zh) 监听应用程序启动流程方法、装置、终端设备和存储介质
RU2008148326A (ru) Перетаскивание объектов между локальными и удаленными модулями
US9256447B2 (en) Integrated application launching in heterogeneous cloud computing environment
US10178170B2 (en) Browser-based virtual media administration
US10924590B1 (en) Virtual workspace experience visualization and optimization
US11941419B2 (en) Systems and methods for robotic process automation of mobile platforms
JP2010020757A (ja) Usbケーブルを使った遠隔デスクトップ制御システムおよびその方法
CN106970786A (zh) 显示设备的重定向方法及系统
EP3423939B1 (en) Automatic virtual input device
US20030234813A1 (en) Information processing apparatus, its control method, and program
CN105550046B (zh) 虚拟操控的方法、装置及系统
US7243137B2 (en) Remote system controller and data center and methods for implementing the same
WO2023173726A1 (zh) 交互方法、装置及存储介质
CN109173238B (zh) 一种双输入事件同时执行的方法及计算机存储介质
CN109074357A (zh) 动态地管理服务的不同版本
US20210105306A1 (en) Dynamically switching between pointer modes
KR20200084129A (ko) Osd 영역을 통한 망 연계 시스템
WO2024066638A1 (zh) 远程协助方法、装置、电子设备、云桌面服务器及介质

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160118

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20160609

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20160621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161202

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: 20161227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170109

R150 Certificate of patent or registration of utility model

Ref document number: 6083244

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees