OleGetClipboard 関数 (ole2.h)
クリップボードの内容にアクセスするために使用できるデータ オブジェクトを取得します。
構文
HRESULT OleGetClipboard(
[out] LPDATAOBJECT *ppDataObj
);
パラメーター
[out] ppDataObj
クリップボード データ オブジェクトへのインターフェイス ポインターを受け取る IDataObject ポインター変数のアドレス。
戻り値
この関数は、成功したS_OKを返します。 その他の可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
OleFlushClipboard 内で使用される OpenClipboard 関数が失敗しました。 |
|
OleFlushClipboard 内で使用される CloseClipboard 関数が失敗しました。 |
注釈
OleGetClipboard では 、次の 3 つのケースが処理されます。
- OleSetClipboard 関数を使用してクリップボードにデータを配置したアプリケーションは、引き続き実行されています。
- OleSetClipboard 関数を使用してクリップボードにデータを配置したアプリケーションは、その後 OleFlushClipboard 関数を呼び出しました。
- OLE 以外のアプリケーションのデータがクリップボードにあります。
2 番目のケースでは、OLE によって既定のデータ オブジェクトが作成され、ユーザーに返されます。 クリップボードのデータは OleSetClipboard 呼び出しから生成されるため、OLE 提供のデータ オブジェクトには、クリップボード上のデータの種類に関するより正確な情報が含まれています。 特に、データが提供された元のメディア (TYMED) は既知です。 したがって、データ ソース アプリケーションがストレージ オブジェクトで cfFOO などの特定のクリップボード形式を提供し、 OleFlushClipboard 関数を呼び出すと、ストレージ オブジェクトがメモリにコピーされ、hglobal メモリ ハンドルがクリップボードに格納されます。 次に、 OleGetClipboard 関数が既定のデータ オブジェクトを作成すると、クリップボードの hglobal が 再び IStorage オブジェクトになります。 さらに、 FORMATETC 列挙子と IDataObject::QueryGetData メソッドはすべて、元のクリップボード形式 (cfFOO) がTYMED_ISTORAGEで再び使用可能であることを正しく示します。
3 番目のケースでは、OLE は既定のデータ オブジェクトを作成しますが、クリップボード形式 (特にアプリケーション定義のクリップボード形式) のデータに関する特別な情報はありません。 したがって、 SetClipboardData 関数の呼び出しによって hGlobal ベースのストレージ メディアがクリップボードに直接配置された場合、 FORMATETC 列挙子と IDataObject::QueryGetData メソッドは、データがストレージ メディアで使用可能であることを示しません。 ただし、TYMED_ISTORAGEの IDataObject::GetData メソッドの呼び出しは成功します。 これらの制限があるため、OLE 対応アプリケーションは、OLE クリップボード関数を使用してクリップボードと対話することを強くお勧めします。
OleGetClipboard 関数によって作成されるクリップボード データ オブジェクトには、かなり広範な IDataObject 実装があります。 OLE 提供のデータ オブジェクトは、OLE 1 クリップボード形式データを OLE 2 呼び出し元が想定する表現に変換できます。 また、構造化データは任意の構造化メディアまたはフラット メディアで使用でき、フラット データは任意のフラット メディアで使用できます。 ただし、GDI オブジェクト (メタファイルやビットマップなど) は、それぞれのメディアでのみ使用できます。
FORMATETC 列挙子で使用される FORMATETC 構造体の tymed メンバーには、サポートされているメディアの和集合が含まれていることに注意してください。 特定の情報 (CF_TEXTがTYMED_HGLOBALで使用可能かどうかなど) を探しているアプリケーションは、この値をチェックするときに適切なビットマスクを実行する必要があります。
OleGetClipboard 関数を呼び出す場合は、返された IDataObject を短時間だけ保持する必要があります。 これは、それを提供したアプリケーション内のリソースを消費します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ole2.h |
Library | Ole32.lib |
[DLL] | Ole32.dll |
API セット | ext-ms-win-com-ole32-l1-1-5 (Windows 10 バージョン 10.0.15063 で導入) |