OleGetClipboardWithEnterpriseInfo-Funktion (ole2.h)
Aktiviert Windows Information Protection aufgeklärt
Anwendungen zum Abrufen eines IDataObject aus der OLE-Zwischenablage
begleitet von Windows Information Protection Informationen über die Daten und die
Quellanwendung. Diese Informationen ermöglichen die
Optimierte Anwendung zur Übernahme der Verantwortung für die Anwendung von Windows Information Protection
-Richtlinie, einschließlich des Fliegens aller entsprechenden Benutzeroberflächenaufforderungen, und
Überwachungsfälle, in denen der Benutzer das Kopieren explizit genehmigt
Unternehmensdaten in einem persönlichen Kontext.
Wenn die aufrufende Anwendung nicht aktiviert ist oder
als "nicht zulässig" für den Zugriff auf Unternehmensdaten konfiguriert ist,
dann verhält sich dieser Aufruf genau wie OleGetClipboard : Anwenden der Richtlinie vor der Entscheidung, was IDataObject zurückgegeben werden soll,
und das Bereitstellen leerer Zeichenfolgen als Ausgabe.
Syntax
HRESULT OleGetClipboardWithEnterpriseInfo(
[out] IDataObject **dataObject,
[out] PWSTR *dataEnterpriseId,
[out] PWSTR *sourceDescription,
[out] PWSTR *targetDescription,
[out] PWSTR *dataDescription
);
Parameter
[out] dataObject
Adresse der IDataObject-Zeigervariable , die den Schnittstellenzeiger auf das Zwischenablagedatenobjekt empfängt.
[out] dataEnterpriseId
Die Unternehmens-ID der Anwendung, die die Zwischenablagedaten festgelegt hat. Wenn es sich um personenbezogene Daten handelt, handelt es sich um eine leere Zeichenfolge.
[out] sourceDescription
Die Beschreibung der Anwendung, die die Zwischenablage festgelegt hat.
[out] targetDescription
Die Beschreibung der Anwendung des Aufrufers, die in der Überwachung verwendet werden soll.
[out] dataDescription
Die Beschreibung des Datenobjekts, das in der Überwachung verwendet werden soll.
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
OleGetClipboardWithEnterpriseInfo 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 OleGetClipboardWithEnterpriseInfo-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 OleGetClipboardWithEnterpriseInfo-Funktion erstellte Zwischenablagedatenobjekt verfügt über eine ziemlich 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 OleGetClipboardWithEnterpriseInfo-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 10 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2016 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | ole2.h |
Bibliothek | Ole32.lib |
DLL | Ole32.dll |