共用方式為


OleGetClipboardWithEnterpriseInfo 函式 (ole2.h)

啟用 Windows 資訊保護 啟用
從 OLE 剪貼簿擷取 IDataObject 的應用程式
隨附於 Windows 資訊保護 數據和 的相關信息
來源應用程式。這項信息允許
啟發式應用程式負責套用 Windows 資訊保護
原則,包括飛行任何適當的 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

設定剪貼簿數據之應用程式的企業識別碼。 如果數據是個人數據,這會是空字串。

[out] sourceDescription

設定剪貼簿的應用程式描述。

[out] targetDescription

要用於稽核之呼叫端應用程式的描述。

[out] dataDescription

要用於稽核的數據物件描述。

傳回值

此函式會在成功時傳回S_OK。 其他可能的值包括下列專案。

傳回碼 Description
CLIPBRD_E_CANT_OPEN
OleFlushClipboard 中使用的 OpenClipboard 函式失敗。
CLIPBRD_E_CANT_CLOSE
OleFlushClipboard 中使用的 CloseClipboard 函式失敗。

備註

謹慎 剪貼簿數據不受信任。 先仔細剖析數據,再在您的應用程式中使用它。
 
如果您要撰寫可接受剪貼簿數據的應用程式,請呼叫 OleGetClipboardWithEnterpriseInfo 函式,以取得 IDataObject 介面的指標,讓您可用來擷取剪貼簿的內容。

OleGetClipboardWithEnterpriseInfo 會處理三個案例:

  • 使用 OleSetClipboard 函式在剪貼簿上放置數據的應用程式仍在執行中。
  • 使用 OleSetClipboard 函式在剪貼簿上放置數據的應用程式隨後會呼叫 OleFlushClipboard 函式。
  • 剪貼簿上有來自非 OLE 應用程式的數據。
在第一個案例中, OleGetClipboardWithEnterpriseInfo 所傳回的剪貼簿數據物件可能會視需要轉送呼叫至放在剪貼簿上的原始數據物件,因此可能會進行 RPC 呼叫。

第二種情況下,OLE 會建立預設數據物件,並將它傳回給使用者。 由於剪貼簿上的數據源自 OleSetClipboard 呼叫,所以 OLE 提供的數據物件包含剪貼簿上數據類型的更精確資訊。 特別是,原始媒體 (TYMED) 提供數據的已知。 因此,如果數據源應用程式提供特定的剪貼簿格式,例如 cfFOO,在記憶體物件上呼叫 OleFlushClipboard 函式,則會將記憶體物件複製到記憶體中,並將 hglobal 記憶體句柄放在剪貼簿上。 然後,當 OleGetClipboardWithEnterpriseInfo 函式建立其默認數據物件時,剪貼簿中的 hglobal 會再次成為 IStorage 物件。 此外, FORMATETC 列舉值和 IDataObject::QueryGetData 方法會正確指出原始剪貼簿格式 (cfFOO) 在TYMED_ISTORAGE上再次提供。

第三種情況中,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
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

OleGetClipboard

OleSetClipboard