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 |
---|---|
|
Die openClipboard-Funktion , die in OleFlushClipboard verwendet wird, ist fehlgeschlagen. |
|
Fehler bei der CloseClipboard-Funktion , die in OleFlushClipboard verwendet wird. |
Hinweise
OleGetClipboard behandelt drei Fälle:
- Die Anwendung, die Daten mit der OleSetClipboard-Funktion in der Zwischenablage platziert hat, wird weiterhin ausgeführt.
- Die Anwendung, die Daten mit der OleSetClipboard-Funktion in der Zwischenablage platziert hat, hat anschließend die OleFlushClipboard-Funktion aufgerufen.
- In der Zwischenablage befinden sich Daten aus einer Nicht-OLE-Anwendung.
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) |