コピー プロセス間通信クリップボードの関数一覧-1

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

一覧

関数 説明
ChangeClipboardChain クリップボードビューアのチェインから、指定されたウィンドウを削除します。
CloseClipboard クリップボードを閉じます。
CountClipboardFormats 現在クリップボード内に存在するデータが持つデータ形式の数を取得します。
EmptyClipboard クリップボードを空にし、クリップボード内のデータのハンドルを解放します。
EnumClipboardFormats 現在クリップボード内に存在するデータが持つデータ形式を列挙します。
GetClipboardData クリップボードから、指定された形式のデータを取得します。
GetClipboardFormatName クリップボードから、指定された登録済みデータ形式の名前を取得します。
GetClipboardOwner 現在クリップボードを所有しているウィンドウのハンドルを取得します。
GetClipboardSequenceNumber 現在のウィンドウステーションのクリップボードのシーケンス番号を取得します。
GetClipboardViewer クリップボードビューアのチェイン内にある最初のウィンドウのハンドルを取得します。
GetOpenClipboardWindow 現在クリップボードを開いているウィンドウのハンドルを取得します。
GetPriorityClipboardFormat 指定されたリストの中から、最初に利用できるクリップボードデータ形式を返します。
IsClipboardFormatAvailable 指定されたデータ形式のデータがクリップボードに格納されているかどうかを調べます。
OpenClipboard 検討の目的でクリップボードを開き、他のアプリケーションがクリップボードの内容を変更できないようにします。
RegisterClipboardFormat クリップボードの新しいデータ形式を Windows システムに登録します。
SetClipboardData クリップボードに、指定されたデータ形式でデータを格納します。
SetClipboardViewer クリップボードビューアのチェインに、指定されたウィンドウを追加します。

ChangeClipboardChain

クリップボードビューアのチェインから、指定されたウィンドウを削除します。

BOOL ChangeClipboardChain(
HWND hWndRemove, // 削除したいウィンドウのハンドル
HWND hWndNewNext // 次のウィンドウのハンドル
);

  • パラメータ
  • hWndRemove
  • [入力]クリップボードビューアのチェインから削除したいウィンドウのハンドルを指定します。以前に SetClipboardViewer 関数に渡したハンドルでなければなりません。
    hWndNewNext
  • [入力]クリップボードビューアのチェイン内で hWndRemove ウィンドウの次に存在するウィンドウのハンドルを指定します。このハンドルは、SetClipboardViewer 関数の戻り値です。ただし、 メッセージによりクリップボードビューアのチェインが変更された場合は、その限りではありません。クリップボードビューアのチェインが変更されるとこのメッセージが送信されるので、このメッセージを監視して、常に次のウィンドウを把握してください。
  • 戻り値
  • クリップボードビューアチェイン内のウィンドウに WM_CHANGECBCHAIN メッセージを渡した結果を示す値が返ります。クリップボードビューアチェイン内のウィンドウは、WM_CHANGECBCHAIN メッセージを処理すると、一般的には、0(FALSE)を返します。そのため、ChangeClipboardChain 関数の戻り値は、一般的には、0(FALSE)になります。クリップボードビューアチェイン内に、ウィンドウが 1 つしかなかったときの戻り値は、一般的に、0 以外の値(TRUE)になります。
  • 解説
  • クリップボードビューアチェイン内の hWndRemove ウィンドウの位置には、代わりに、hWndNewNext ウィンドウが置かれます。SetClipboardViewer 関数は、クリップボードビューアチェイン内の最初のウィンドウに、WM_CHANGECBCHAIN メッセージを送信します。

CloseClipboard

クリップボードを閉じます。

BOOL CloseClipboard(VOID);

  • パラメータ
  • パラメータはありません。
  • 戻り値
  • 関数が成功すると、0 以外の値が返ります。
  • 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • クリップボードの参照または変更が終了したら、CloseClipboard 関数を呼び出してクリップボードを閉じてください。この結果、他のアプリケーションがクリップボードにアクセスできるようになります。
  • CloseClipboard を呼び出した後は、クリップボードにオブジェクトを配置しないでください。

CountClipboardFormats

現在クリップボード内に存在するデータが持つデータ形式の数を取得します。

int CountClipboardFormats(VOID);

  • パラメータ
  • パラメータはありません。
  • 戻り値
  • 関数が成功すると、現在クリップボード内に存在するデータが持つデータ形式の数が返ります。
  • 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。

EmptyClipboard

クリップボードを空にし、クリップボード内のデータのハンドルを解放します。同時に、クリップボードを開いたウィンドウに、クリップボードの所有権を与えます。

BOOL EmptyClipboard(VOID);

  • パラメータ
  • パラメータはありません。
  • 戻り値
  • 関数が成功すると、0 以外の値が返ります。
  • 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • EmptyClipboard 関数を呼び出す前に、OpenClipboard 関数でクリップボードを開いておく必要があります。NULL のウィンドウハンドルを指定してクリップボードを開いていた場合、EmptyClipboard 関数は成功しますが、クリップボードのオーナーは NULL になります。

EnumClipboardFormats

現在クリップボード内に存在するデータが持つデータ形式を列挙します。

  • クリップボードのデータは、順序付きリスト内に格納されています。クリップボードのデータ形式を列挙するには、EnumClipboardFormats 関数を繰り返し呼び出します。このとき、format パラメータはクリップボードで利用可能なデータ形式を示し、この関数は、クリップボードで次に利用可能なデータ形式を返します。

    UINT EnumClipboardFormats(
    UINT format // クリップボードで利用可能なデータ形式
    );
  • パラメータ
  • format
  • [入力]クリップボードで利用可能であることがわかっているデータ形式を指定します。
  • データ形式の列挙を開始するときは、0 を指定します。0 を指定すると、最初に利用可能なデータ形式が返されます。以後、戻り値を次回の呼び出し時の引数にしながら繰り返し EnumClipboardFormats 関数を呼び出すことで、データ形式を列挙できます。
  • 戻り値
  • 関数が成功すると、指定したデータ形式に続くデータ形式が返ります。言い換えると、クリップボードで次に利用可能なデータ形式が返ります。
  • 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。クリップボードが開いていない場合は、関数は失敗します。
  • 列挙するクリップボードのデータ形式がそれ以上ない場合、戻り値は 0 になります。このとき、GetLastError 関数は NO_ERROR 値を返します。この値を調べることで、関数の失敗と列挙の終わりを区別できます。
  • 解説
  • クリップボードのデータ形式を列挙する前に、クリップボードを開いておかなければなりません。クリップボードを開くには、OpenClipboard 関数を使います。クリップボードが開いていない場合、EnumClipboardFormats 関数は失敗します。
  • クリップボードのデータ形式は、クリップボードに格納された順番で列挙されます。情報をクリップボードへコピーする際に、最も記述的なデータ形式を最初に、最も記述量の少ないデータ形式を最後に追加してください。クリップボードのデータを貼り付ける際に、処理できる最初のデータ形式を取得してください。この結果、処理できるデータ形式のうち、最も記述的なものを取得できます。
  • クリップボードの特定のデータ形式に関して、システムは自動的な型変換機能を提供します。そのようなデータ形式に関連して、この関数は最初に、指定されたデータ形式を列挙し、次に変換可能な変換済みデータ形式を列挙します。詳細については、「」と「」を参照してください。

GetClipboardData

クリップボードから、指定された形式のデータを取得します。

クリップボードは、あらかじめ開いておく必要があります。

HANDLE GetClipboardData(
UINT uFormat // クリップボードのデータ形式
);

  • パラメータ
  • uFormat
  • [入力]クリップボードのデータ形式を指定します。詳細については、「」を参照してください。
  • 戻り値
  • 関数が成功すると、指定したデータ形式のクリップボードオブジェクトのハンドルが返ります。
  • 関数が失敗すると、NULL が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • EnumClipboardFormats 関数を使うと、利用可能なデータ形式をあらかじめ列挙できます。
  • GetClipboardData 関数が返すハンドルは、アプリケーションではなくクリップボードが管理しています。アプリケーションはデータを即座にコピーするべきです。また、アプリケーションはハンドルを解放することや、ロックし続けることを避けなければなりません。さらにアプリケーションは、EmptyClipboard または CloseClipboard を呼び出した後にハンドルを使うことや、SetClipboardData を呼び出した後にクリップボードの同じデータ形式を指定することを避けなければなりません。
  • アプリケーションが GetClipboardData 関数を呼び出したとき、オペレーティングシステムがデータ形式の暗黙的な変換を行います。たとえば、CF_OEMTEXT のデータがクリップボードにある場合、アプリケーションはそのデータを CF_TEXT 形式のデータとして取り出すこともできます。クリップボード内のデータ形式は、必要に応じて、要求されたデータ形式へ変換されます。詳細については、「」を参照してください。

 

 

2000年01月01日|[VBサンプルコード]:[Copy]