Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 |
---|---|
|
Fungsi OpenClipboard yang digunakan dalam OleFlushClipboard gagal. |
|
Fungsi CloseClipboard yang digunakan dalam OleFlushClipboard gagal. |
Keterangan
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 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) |