2011-10-20 3 views
0

ウィンドウを持っていてもイベントループにアクセスできない場合は、テキストのコピー貼り付けを実装することは可能ですか?Xに関数呼び出しを行うことしかできません。WindowsおよびOSX上でAPI関数呼び出しだけでクリップボードを実装しました。 Xと* nixで同じことが可能ですか?私はXイベントループへのアクセスが絶対に必要だと言われました。 API呼び出しだけで基本的な文字列クリップボード機能を実装する方法はありますか?X(* nix)でイベントループにアクセスすることなくクリップボード機能を実装していますか?

+0

* Xとnixは非常に曖昧な要件です。さまざまな互換性のないものがその要件に合っています。 * nixはかなり多様です。 –

答えて

3

短い答えは「いいえ」です。データはのチャンクにコピーされているWindowsでは

  • 長い答え、次の...

    WindowsとXクリップボードの主な違いは、(OSXのことは知らない)ということですユーザーがCOPYを実行し、PASTEを実行するすべてのアプリケーションで使用可能な場合は、共有メモリーに保存されます。

  • Xでは、アプリケーションがCOPYを実行すると、のクリップボードを所有します。次に、別のアプリケーション(または同じもの)がPASTEを実行すると、データはあるアプリケーションから別のアプリケーションに転送されます。
  • だから、

、XクライアントでCOPYを実現するためには、あなたが最初に自分のにクリップボードを持っているし、その後メッセージを聞くとのgetクリップボードの内容に返信。 PASTEを実装するには、クリップボードの内容を取得するメッセージを送信し、応答を待たなければなりません。どちらの操作でも、イベントループを混乱させる必要があります。

Xでは、ソースアプリケーションを強制終了した後、コピーされたデータは使用できません。何らかの種類のクリップボードサーバーを使用しない限り、すなわち、クリップボードの所有者を聴くアプリケーションはで死に至り、今後のペースト用にデータのコピーを保存します。

公正であるために、Windowsクリップボードは直接転送モードでも動作しますが、AFAIKはほとんど使用されず、非常に大きなデータの場合にのみ使用されます。

+1

Mac OS XはWindowsと同様のモデルを使用しています。データをコピーすると、ペーストボードサーバープロセスに送信されます(何らかの理由でOS Xがクリップボードではなく*ペーストボード*と呼ばれます)。ペーストボードサーバーを形成します。したがって、クリップボードにデータをコピーしたりクリップボードからデータを貼り付けたりするのに便利なGUIレスのプログラムを作成することができます。 –

関連する問題