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

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

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

一覧

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

IsClipboardFormatAvailable

指定されたデータ形式のデータがクリップボードに格納されているかどうかを調べます。

BOOL IsClipboardFormatAvailable(
UINT format // クリップボードのデータ形式
);

  • パラメータ
  • format
  • [入力]標準または登録済みのクリップボードデータ形式を指定します。クリップボードデータ形式の詳細については、「」(SetClipboardData 関数の説明)を参照してください。
  • 戻り値
  • 指定したクリップボードデータ形式のデータが格納されている場合は、0 以外の値が返ります。
  • 指定したクリップボードデータ形式のデータが格納されていない場合は、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • 1 種類のクリップボードデータ形式しか認識しないアプリケーションが、 または メッセージを処理するときにこの関数を呼び出し、その戻り値に応じてメニューの[貼り付け]コマンドを有効または無効にするという典型的な使い方があります。複数のクリップボードフォーマットを認識するアプリケーションで同様の機能を実現する場合は、GetPriorityClipboardFormat 関数を使ってください。

OpenClipboard

検討の目的でクリップボードを開き、他のアプリケーションがクリップボードの内容を変更できないようにします。

BOOL OpenClipboard(
HWND hWndNewOwner // ウィンドウのハンドル
);

  • パラメータ
  • hWndNewOwner
  • [入力]クリップボードをいて関連付けたいウィンドウのハンドルを指定します。NULL を指定すると、現在のタスクがクリップボードを開きます。
  • 戻り値
  • 関数が成功すると、0 以外の値が返ります。
  • 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • 他のウィンドウが既にクリップボードを開いている場合、OpenClipboard 関数は失敗します。
  • OpenClipboard の呼び出しに成功するたびに、アプリケーションは CloseClipboard 関数を呼び出すべきです。
  • EmptyClipboard 関数を呼び出さないと、hWndNewOwner パラメータで指定したウィンドウはクリップボードのオーナーになりません。

RegisterClipboardFormat

クリップボードの新しいデータ形式を Windows システムに登録します。

登録された形式は、その直後から有効なデータ形式として使えます。
UINT RegisterClipboardFormat(
LPCTSTR lpszFormat // 新しいデータ形式の名前
);

  • パラメータ
  • lpszFormat
  • [入力]新しいクリップボードデータ形式の名前を保持する、NULL で終わる文字列へのポインタを指定します。
  • 戻り値
  • 関数が成功すると、登録されたクリップボードデータ形式を識別する値が返ります。
  • 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • 指定した名前のデータ形式が既に存在しているときは、新しいデータ形式は登録されず、既存のデータ形式を識別する値が返ります。この結果、複数のアプリケーションが同じ登録済みクリップボードデータ形式を使ってデータのコピーと貼り付けを行うことを防止できます。データ形式の名前を比較する際に、大文字と小文字を区別しないことに注意してください。
  • 登録済みのクリップボードデータ形式は、0xC000~0xFFFF の範囲の値になります。
  • 登録済みのクリップボードデータ形式をクリップボードに格納したり、クリップボードから取得する場合は、HGLOBAL 値の形式を使わなければなりません。

SetClipboardData

クリップボードに、指定されたデータ形式でデータを格納します。

データを格納するには、呼び出し側のウィンドウがクリップボードの現在のオーナーであること、および OpenClipboard 関数を使ってクリップボードを開いておくことが必要です。ただし、 および メッセージに応答する場合、クリップボードの所有者は SetClipboardData 関数を呼び出す前に OpenClipboard を呼び出してはなりません。
HANDLE SetClipboardData(
UINT uFormat, // クリップボードのデータ形式
HANDLE hMem // データのハンドル
);

  • パラメータ
  • uFormat
  • [入力]クリップボードのデータ形式を指定します。このパラメータには、登録済みデータ形式、または標準的なクリップボードデータ形式を指定します。詳細については、「」または「」を参照してください。
  • hMem
  • [入力]指定されたデータ形式のデータのハンドルを指定します。ウィンドウが要求に応じて、指定されたクリップボードデータ形式でデータを提供する( データ形式の遅延レンダリングを行う)場合は、NULL を指定します。遅延レンダリングを行う場合、ウィンドウは メッセージと メッセージを処理しなければなりません。
  • SetClipboardData を呼び出した後で、システムは、hMem パラメータで指定されたオブジェクトを所有します。アプリケーションはデータを読み取れますが、CloseClipboard 関数を呼び出すまでは、そのハンドルを解放することや、ロックし続けることを避けなければなりません。(CloseClipboard を呼び出した後も、アプリケーションはそのデータにアクセスできます。)hMem パラメータがメモリオブジェクトを指している場合、そのオブジェクトは、GMEM_MOVEABLE フラグを指定して 関数で割り当てたものでなければなりません。
  • 戻り値
  • 関数が成功すると、データのハンドルが返ります。
  • 関数が失敗すると、NULL が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • uFormat パラメータで、登録済みのクリップボード形式または標準的なクリップボード形式のいずれかを指定できます。詳細については、「」または「」を参照してください。
  • WM_RENDERFORMAT または WM_RENDERALLFORMATS メッセージに応答してアプリケーションが SetClipboardData を呼び出した場合、アプリケーションはその後にそのハンドルを使うべきではありません。
  • アプリケーションが GetClipboardData 関数を呼び出したとき、オペレーティングシステムがデータ形式の暗黙的な変換を行います。たとえば、CF_OEMTEXT のデータがクリップボードにある場合、アプリケーションはそのデータを CF_TEXT 形式のデータとして取り出すこともできます。クリップボード内のデータ形式は、必要に応じて、要求されたデータ形式へ変換されます。詳細については、「」を参照してください。

SetClipboardViewer

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

クリップボードの内容が変更されると必ず、クリップボードビューアの各ウィンドウは WM_DRAWCLIPBOARD メッセージを受け取ります。
HWND SetClipboardViewer(
HWND hWndNewViewer // クリップボードビューアウィンドウのハンドル
);

  • パラメータ
  • hWndNewViewer
  • [入力]クリップボードのチェインに追加したいウィンドウのハンドルを指定します。
  • 戻り値
  • 関数が成功すると、クリップボードビューアのチェイン内で、追加したウィンドウの次に位置するウィンドウのハンドルが返ります。エラーが発生した場合、または、クリップボードビューアのチェイン内に他のウィンドウが存在しなかった場合は、NULL が返ります。拡張エラー情報を取得するには、 関数を使います。
  • 解説
  • クリップボードビューアのチェインに追加されたウィンドウ( クリップボードビューアウィンドウ)は、 と の各メッセージを処理しなければなりません。クリップボードビューアの各ウィンドウは、 関数を呼び出して、これら 2 つのメッセージをクリップボードビューアのチェイン内の次のウィンドウに渡します。
  • クリップボードビューアのウィンドウは最終的に( たとえば メッセージ処理ルーチンで)、ChangeClipboardChain 関数を呼び出して、クリップボードビューアのチェインから自分自身を削除しなければなりません。

 

 

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