Fungsi OleGetClipboard (ole2.h)

Mengambil objek data yang bisa Anda gunakan untuk mengakses konten clipboard.

Sintaks

HRESULT OleGetClipboard(
  [out] LPDATAOBJECT *ppDataObj
);

Parameter

[out] ppDataObj

Alamat variabel penunjuk IDataObject yang menerima penunjuk antarmuka ke objek data clipboard.

Nilai kembali

Fungsi ini mengembalikan S_OK pada keberhasilan. Nilai lain yang mungkin termasuk yang berikut ini.

Menampilkan kode Deskripsi
CLIPBRD_E_CANT_OPEN
Fungsi OpenClipboard yang digunakan dalam OleFlushClipboard gagal.
CLIPBRD_E_CANT_CLOSE
Fungsi CloseClipboard yang digunakan dalam OleFlushClipboard gagal.

Keterangan

Hati Data clipboard tidak tepercaya. Uraikan data dengan hati-hati sebelum menggunakannya di aplikasi Anda.
 
Jika Anda menulis aplikasi yang dapat menerima data dari clipboard, panggil fungsi OleGetClipboard untuk mendapatkan penunjuk ke antarmuka IDataObject yang dapat Anda gunakan untuk mengambil konten clipboard.

OleGetClipboard menangani tiga kasus:

  • Aplikasi yang menempatkan data pada clipboard dengan fungsi OleSetClipboard masih berjalan.
  • Aplikasi yang menempatkan data pada clipboard dengan fungsi OleSetClipboard kemudian disebut fungsi OleFlushClipboard .
  • Ada data dari aplikasi non-OLE di clipboard.
Dalam kasus pertama, objek data clipboard yang dikembalikan oleh OleGetClipboard dapat meneruskan panggilan seperlunya ke objek data asli yang ditempatkan di clipboard dan, sehingga, berpotensi melakukan panggilan RPC.

Dalam kasus kedua, OLE membuat objek data default dan mengembalikannya kepada pengguna. Karena data di clipboard berasal dari panggilan OleSetClipboard , objek data yang disediakan OLE berisi informasi yang lebih akurat tentang jenis data pada clipboard. Secara khusus, media asli (TYMED) tempat data ditawarkan diketahui. Dengan demikian, jika aplikasi sumber data menawarkan format clipboard tertentu, misalnya cfFOO, pada objek penyimpanan dan memanggil fungsi OleFlushClipboard , objek penyimpanan disalin ke dalam memori dan handel memori hglobal dimasukkan ke clipboard. Kemudian, ketika fungsi OleGetClipboard membuat objek data defaultnya, hglobal dari clipboard kembali menjadi objek IStorage . Selain itu, enumerator FORMATETC dan metode IDataObject::QueryGetData semuanya akan menunjukkan dengan benar bahwa format clipboard asli (cfFOO) kembali tersedia di TYMED_ISTORAGE.

Dalam kasus ketiga, OLE masih membuat objek data default, tetapi tidak ada informasi khusus tentang data dalam format clipboard (terutama untuk format Clipboard yang ditentukan aplikasi). Dengan demikian, jika media penyimpanan berbasis hGlobal dimasukkan ke clipboard secara langsung oleh panggilan ke fungsi SetClipboardData , enumerator FORMATETC dan metode IDataObject::QueryGetData tidak akan menunjukkan bahwa data tersedia pada media penyimpanan. Namun, panggilan ke metode IDataObject::GetData untuk TYMED_ISTORAGE akan berhasil. Karena keterbatasan ini, sangat disarankan agar aplikasi yang sadar OLE berinteraksi dengan clipboard menggunakan fungsi clipboard OLE.

Objek data clipboard yang dibuat oleh fungsi OleGetClipboard memiliki implementasi IDataObject yang cukup luas. Objek data yang disediakan OLE dapat mengonversi data format clipboard OLE 1 menjadi representasi yang diharapkan oleh pemanggil OLE 2. Selain itu, setiap data terstruktur tersedia pada media terstruktur atau datar apa pun, dan data datar apa pun tersedia pada media datar apa pun. Namun, objek GDI (seperti metafiles dan bitmap) hanya tersedia di media masing-masing.

Perhatikan bahwa anggota yang ditiru dari struktur FORMATETC yang digunakan dalam enumerator FORMATETC berisi penyatuan media yang didukung. Aplikasi yang mencari informasi tertentu (seperti apakah CF_TEXT tersedia di TYMED_HGLOBAL) harus melakukan bitmasking yang sesuai saat memeriksa nilai ini.

Jika Anda memanggil fungsi OleGetClipboard , Anda hanya boleh berpegang pada IDataObject yang dikembalikan untuk waktu yang sangat singkat. Ini mengonsumsi sumber daya dalam aplikasi yang menawarkannya.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header ole2.h
Pustaka Ole32.lib
DLL Ole32.dll
Set API ext-ms-win-com-ole32-l1-1-5 (diperkenalkan dalam Windows 10, versi 10.0.15063)

Lihat juga

OleSetClipboard