Share via


OleSetClipboard 函式 (ole2.h)

將特定資料物件的指標放在剪貼簿上。 這可讓 OleGetClipboard 函式存取資料物件。

語法

HRESULT OleSetClipboard(
  [in] LPDATAOBJECT pDataObj
);

參數

[in] pDataObj

可從資料物件上取得要放置於剪貼簿上的 IDataObject 介面指標。 此參數可以是 Null;在此情況下,剪貼簿已清空。

傳回值

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

傳回碼 描述
CLIPBRD_E_CANT_OPEN
OleSetClipboard中使用的OpenClipboard函式失敗。
CLIPBRD_E_CANT_EMPTY
OleSetClipboard中使用的EmptyClipboard函式失敗。
CLIPBRD_E_CANT_CLOSE
OleSetClipboard中使用的CloseClipboard函式失敗。
CLIPBRD_E_CANT_SET
OleSetClipboard中使用的SetClipboardData函式失敗。

備註

如果您要撰寫可做為剪貼簿作業來源的應用程式,您必須執行下列動作:

  • 建立資料物件 (,這是要複製或剪下至剪貼簿之資料的 IDataObject 介面) 。 這個物件應該是 OLE 拖放作業中使用的相同物件。
  • 呼叫 OleSetClipboardIDataObject 指標放在剪貼簿上,因此 OleGetClipboard 函式可以存取它。 OleSetClipboard 也會在資料物件上呼叫 IUnknown::AddRef 方法。
  • 如果您想要,請在剪貼簿上放置資料物件之後釋出資料物件,以釋出應用程式中的 IUnknown::AddRef 計數器。
  • 如果使用者將資料剪下 (從檔刪除,並將它放入剪貼簿) ,請從檔中移除資料。
除非呼叫 OleFlushClipboard 將資料轉譯轉譯到剪貼簿) ,否則剪貼簿上會使用延遲轉譯來提供所有格式, (剪貼簿只包含資料物件的指標。 OLE 1 相容性所需的格式是從存在的 OLE 2 格式合成,也會放在剪貼簿上。

OleSetClipboard函式會將剪貼簿的擁有權指派給內部 OLE 視窗控制碼。 資料物件的參考計數會增加 1,以啟用延遲轉譯。 參考計數會藉由呼叫 OleFlushClipboard 函式,或後續呼叫 OleSetClipboardNull 指定為參數值來減少, (清除剪貼簿) 。

當應用程式透過呼叫 OpenClipboard 函式) 直接或間接開啟剪貼簿 (,除非關閉剪貼簿,否則任何其他應用程式都無法使用剪貼簿。 如果剪貼簿目前由另一個應用程式開啟, OleSetClipboard 就會失敗。 內部 OLE 視窗控制碼會將訊息委派給剪貼簿上的資料物件上的 IDataObject 實作,以滿足WM_RENDERFORMAT訊息。

Null 指定為 OleSetClipboard 的參數值會清除目前的剪貼簿。 如果剪貼簿的內容是先前 的 OleSetClipboard 呼叫的結果,而且已釋放剪貼簿,則會釋放傳遞至先前呼叫的 IDataObject 指標。 剪貼簿擁有者應該使用此做為訊號,指出先前提供的資料已不再位於剪貼簿上。

如果您需要在關閉應用程式之後將資料保留在剪貼簿上,您應該呼叫OleFlushClipboard,而不是使用Null參數值呼叫OleSetClipboard

需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 ole2.h
程式庫 Ole32.lib
Dll Ole32.dll
API 集合 ext-ms-win-com-ole32-l1-1-5 (于 Windows 10 10.0.15063 版)

另請參閱

OleFlushClipboard

OleGetClipboard

OleIsCurrentClipboard