OleGetClipboardWithEnterpriseInfo 関数 (ole2.h)

Windows Information Protection対応を有効にします
OLE クリップボードから IDataObject を取得するアプリケーション
データに関する Windows Information Protection情報と共に、
ソース アプリケーション。この情報により、
Windows Information Protectionの適用に対する責任を引き継ぐ対応アプリケーション
適切な UI プロンプトの飛行を含むポリシー、および
ユーザーがコピーを明示的に承認する監査ケース
企業データを個人のコンテキストに変換します。

呼び出し元のアプリケーションが対応していない場合、または が
エンタープライズ データにアクセスするために "許可されていない" として構成されている
この呼び出しは OleGetClipboard とまったく同じように動作します。返す IDataObject を決定する前にポリシーを適用します。
空の文字列を出力として指定します。

構文

HRESULT OleGetClipboardWithEnterpriseInfo(
  [out] IDataObject **dataObject,
  [out] PWSTR       *dataEnterpriseId,
  [out] PWSTR       *sourceDescription,
  [out] PWSTR       *targetDescription,
  [out] PWSTR       *dataDescription
);

パラメーター

[out] dataObject

クリップボード データ オブジェクトへのインターフェイス ポインターを受け取る IDataObject ポインター変数のアドレス。

[out] dataEnterpriseId

クリップボード データを設定するアプリケーションのエンタープライズ ID。 データが個人の場合、これは空の文字列になります。

[out] sourceDescription

クリップボードを設定するアプリケーションの説明。

[out] targetDescription

監査で使用する呼び出し元のアプリケーションの説明。

[out] dataDescription

監査で使用するデータ オブジェクトの説明。

戻り値

この関数は、成功したS_OKを返します。 その他の可能な値は次のとおりです。

リターン コード 説明
CLIPBRD_E_CANT_OPEN
OleFlushClipboard 内で使用される OpenClipboard 関数が失敗しました。
CLIPBRD_E_CANT_CLOSE
OleFlushClipboard 内で使用される CloseClipboard 関数が失敗しました。

注釈

注意 クリップボード データが信頼されていません。 アプリケーションで使用する前に、データを慎重に解析してください。
 
クリップボードからデータを受け取ることができるアプリケーションを作成する場合は、 OleGetClipboardWithEnterpriseInfo 関数を呼び出して、クリップボードの内容を取得するために使用できる IDataObject インターフェイスへのポインターを取得します。

OleGetClipboardWithEnterpriseInfo は、次の 3 つのケースを処理します。

  • OleSetClipboard 関数を使用してクリップボードにデータを配置したアプリケーションは、引き続き実行されています。
  • OleSetClipboard 関数を使用してクリップボードにデータを配置したアプリケーションは、その後 OleFlushClipboard 関数を呼び出しました。
  • OLE 以外のアプリケーションのデータがクリップボードにあります。
最初のケースでは、 OleGetClipboardWithEnterpriseInfo によって返されるクリップボード データ オブジェクトは、必要に応じてクリップボードに配置された元のデータ オブジェクトに呼び出しを転送し、RPC 呼び出しを行う可能性があります。

2 番目のケースでは、OLE によって既定のデータ オブジェクトが作成され、ユーザーに返されます。 クリップボードのデータは OleSetClipboard 呼び出しから生成されるため、OLE 提供のデータ オブジェクトには、クリップボード上のデータの種類に関するより正確な情報が含まれています。 特に、データが提供された元のメディア (TYMED) は既知です。 したがって、データ ソース アプリケーションがストレージ オブジェクトで cfFOO などの特定のクリップボード形式を提供し、 OleFlushClipboard 関数を呼び出すと、ストレージ オブジェクトがメモリにコピーされ、hglobal メモリ ハンドルがクリップボードに格納されます。 次に、 OleGetClipboardWithEnterpriseInfo 関数が既定のデータ オブジェクトを作成すると、クリップボードの hglobal が IStorage オブジェクトになります。 さらに、 FORMATETC 列挙子と IDataObject::QueryGetData メソッドはすべて、元のクリップボード形式 (cfFOO) がTYMED_ISTORAGEで再び使用可能であることを正しく示します。

3 番目のケースでは、OLE は既定のデータ オブジェクトを作成しますが、クリップボード形式 (特にアプリケーション定義のクリップボード形式) のデータに関する特別な情報はありません。 したがって、 SetClipboardData 関数の呼び出しによって hGlobal ベースのストレージ メディアがクリップボードに直接配置された場合、 FORMATETC 列挙子と IDataObject::QueryGetData メソッドは、データがストレージ メディアで使用可能であることを示しません。 ただし、TYMED_ISTORAGEの IDataObject::GetData メソッドの呼び出しは成功します。 これらの制限があるため、OLE 対応アプリケーションは、OLE クリップボード関数を使用してクリップボードと対話することを強くお勧めします。

OleGetClipboardWithEnterpriseInfo 関数によって作成されたクリップボード データ オブジェクトには、かなり広範な IDataObject 実装があります。 OLE 提供のデータ オブジェクトは、OLE 1 クリップボード形式データを OLE 2 呼び出し元が想定する表現に変換できます。 また、構造化データは任意の構造化メディアまたはフラット メディアで使用でき、フラット データは任意のフラット メディアで使用できます。 ただし、GDI オブジェクト (メタファイルやビットマップなど) は、それぞれのメディアでのみ使用できます。

FORMATETC 列挙子で使用される FORMATETC 構造体の tymed メンバーには、サポートされているメディアの和集合が含まれていることに注意してください。 特定の情報 (CF_TEXTがTYMED_HGLOBALで使用可能かどうかなど) を探しているアプリケーションは、この値をチェックするときに適切なビットマスクを実行する必要があります。

OleGetClipboardWithEnterpriseInfo 関数を呼び出す場合は、返された IDataObject のみを短時間保持する必要があります。 これは、それを提供したアプリケーション内のリソースを消費します。

要件

要件
サポートされている最小のクライアント Windows 10 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2016 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ole2.h
Library Ole32.lib
[DLL] Ole32.dll

こちらもご覧ください

OleGetClipboard

OleSetClipboard