OleGetClipboard-Funktion (ole2.h)

Ruft ein Datenobjekt ab, mit dem Sie auf den Inhalt der Zwischenablage zugreifen können.

Syntax

HRESULT OleGetClipboard(
  [out] LPDATAOBJECT *ppDataObj
);

Parameter

[out] ppDataObj

Adresse der IDataObject-Zeigervariable , die den Schnittstellenzeiger auf das Zwischenablagedatenobjekt empfängt.

Rückgabewert

Diese Funktion gibt S_OK nach Erfolg zurück. Weitere mögliche Werte sind:

Rückgabecode Beschreibung
CLIPBRD_E_CANT_OPEN
Die openClipboard-Funktion , die in OleFlushClipboard verwendet wird, ist fehlgeschlagen.
CLIPBRD_E_CANT_CLOSE
Fehler bei der CloseClipboard-Funktion , die in OleFlushClipboard verwendet wird.

Hinweise

Vorsicht Zwischenablagedaten sind nicht vertrauenswürdig. Analysieren Sie die Daten sorgfältig, bevor Sie sie in Ihrer Anwendung verwenden.
 
Wenn Sie eine Anwendung schreiben, die Daten aus der Zwischenablage akzeptieren kann, rufen Sie die OleGetClipboard-Funktion auf, um einen Zeiger auf die IDataObject-Schnittstelle abzurufen, mit der Sie den Inhalt der Zwischenablage abrufen können.

OleGetClipboard behandelt drei Fälle:

Im ersten Fall kann das von OleGetClipboard zurückgegebene Zwischenablagedatenobjekt Aufrufe nach Bedarf an das ursprüngliche Datenobjekt weiterleiten, das in der Zwischenablage platziert wurde, und kann daher möglicherweise RPC-Aufrufe ausführen.

Im zweiten Fall erstellt OLE ein Standarddatenobjekt und gibt es an den Benutzer zurück. Da die Daten in der Zwischenablage von einem OleSetClipboard-Aufruf stammen, enthält das von OLE bereitgestellte Datenobjekt genauere Informationen über den Datentyp in der Zwischenablage. Insbesondere das Originalmedium (TYMED), auf dem die Daten angeboten wurden, ist bekannt. Wenn also eine Datenquellenanwendung ein bestimmtes Zwischenablageformat (z. B. cfFOO) für ein Speicherobjekt bietet und die OleFlushClipboard-Funktion aufruft, wird das Speicherobjekt in den Arbeitsspeicher kopiert, und das hglobal-Speicherhandle wird in die Zwischenablage eingefügt. Wenn dann die OleGetClipboard-Funktion ihr Standarddatenobjekt erstellt, wird das hglobal aus der Zwischenablage erneut zu einem IStorage-Objekt . Darüber hinaus würden der FORMATETC-Enumerator und die IDataObject::QueryGetData-Methode alle korrekt angeben, dass das ursprüngliche Zwischenablageformat (cfFOO) wieder auf einem TYMED_ISTORAGE verfügbar ist.

Im dritten Fall erstellt OLE weiterhin ein Standarddatenobjekt, aber es gibt keine speziellen Informationen zu den Daten in den Zwischenablageformaten (insbesondere für anwendungsdefinierte Zwischenablageformate). Wenn also ein hGlobal-basiertes Speichermedium durch einen Aufruf der SetClipboardData-Funktion direkt in die Zwischenablage gesetzt würde, würden der FORMATETC-Enumerator und die IDataObject::QueryGetData-Methode nicht angeben, dass die Daten auf einem Speichermedium verfügbar waren. Ein Aufruf der IDataObject::GetData-Methode für TYMED_ISTORAGE wäre jedoch erfolgreich. Aufgrund dieser Einschränkungen wird dringend empfohlen, dass OLE-fähige Anwendungen mithilfe der OLE-Zwischenablagefunktionen mit der Zwischenablage interagieren.

Das von der OleGetClipboard-Funktion erstellte Zwischenablagedatenobjekt verfügt über eine recht umfangreiche IDataObject-Implementierung . Das von OLE bereitgestellte Datenobjekt kann Daten im OLE 1-Zwischenablageformat in die von einem OLE 2-Aufrufer erwartete Darstellung konvertieren. Darüber hinaus sind alle strukturierten Daten auf jedem strukturierten oder flachen Medium verfügbar, und alle flachen Daten sind auf jedem flachen Medium verfügbar. GDI-Objekte (z. B. Metadateien und Bitmaps) sind jedoch nur auf ihren jeweiligen Medien verfügbar.

Beachten Sie, dass der tymed-Member der FORMATTC-Struktur , die im FORMATETC-Enumerator verwendet wird, die Vereinigung der unterstützten Medien enthält. Anwendungen, die nach bestimmten Informationen suchen (z. B. ob CF_TEXT auf TYMED_HGLOBAL verfügbar ist), sollten beim Überprüfen dieses Werts die entsprechende Bitmaskierung durchführen.

Wenn Sie die OleGetClipboard-Funktion aufrufen, sollten Sie das zurückgegebene IDataObject nur für sehr kurze Zeit beibehalten. Sie nutzt Ressourcen in der Anwendung, die sie angeboten hat.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ole2.h
Bibliothek Ole32.lib
DLL Ole32.dll
APIs ext-ms-win-com-ole32-l1-1-5 (eingeführt in Windows 10, Version 10.0.15063)

Weitere Informationen

OleSetClipboard