Funzione OleGetClipboard (ole2.h)

Recupera un oggetto dati che è possibile utilizzare per accedere al contenuto degli Appunti.

Sintassi

HRESULT OleGetClipboard(
  [out] LPDATAOBJECT *ppDataObj
);

Parametri

[out] ppDataObj

Indirizzo della variabile puntatore IDataObject che riceve il puntatore dell'interfaccia all'oggetto dati degli Appunti.

Valore restituito

Questa funzione restituisce S_OK in caso di esito positivo. Altri valori possibili includono quanto segue.

Codice restituito Descrizione
CLIPBRD_E_CANT_OPEN
La funzione OpenClipboard usata in OleFlushClipboard non è riuscita.
CLIPBRD_E_CANT_CLOSE
La funzione CloseClipboard utilizzata in OleFlushClipboard non è riuscita.

Commenti

Attenzione I dati degli Appunti non sono attendibili. Analizzare attentamente i dati prima di usarli nell'applicazione.
 
Se si scrive un'applicazione in grado di accettare dati dagli Appunti, chiamare la funzione OleGetClipboard per ottenere un puntatore all'interfaccia IDataObject che è possibile usare per recuperare il contenuto degli Appunti.

OleGetClipboard gestisce tre casi:

  • L'applicazione che ha inserito i dati negli Appunti con la funzione OleSetClipboard è ancora in esecuzione.
  • L'applicazione che ha inserito dati negli Appunti con la funzione OleSetClipboard ha successivamente chiamato la funzione OleFlushClipboard .
  • Negli Appunti sono presenti dati provenienti da un'applicazione non OLE.
Nel primo caso, l'oggetto dati degli Appunti restituito da OleGetClipboard può inoltrare le chiamate in base alle esigenze dell'oggetto dati originale posizionato negli Appunti e, di conseguenza, può potenzialmente effettuare chiamate RPC.

Nel secondo caso, OLE crea un oggetto dati predefinito e lo restituisce all'utente. Poiché i dati negli Appunti provengono da una chiamata OleSetClipboard , l'oggetto dati fornito da OLE contiene informazioni più accurate sul tipo di dati negli Appunti. In particolare, il supporto originale (TYMED) su cui sono stati offerti i dati è noto. Pertanto, se un'applicazione di origine dati offre un particolare formato degli Appunti, ad esempio cfFOO, su un oggetto di archiviazione e chiama la funzione OleFlushClipboard , l'oggetto di archiviazione viene copiato in memoria e l'handle di memoria hglobal viene inserito negli Appunti. Quando quindi la funzione OleGetClipboard crea l'oggetto dati predefinito, l'oggetto hglobal dagli Appunti diventa nuovamente un oggetto IStorage . Inoltre, l'enumeratore FORMATETC e il metodo IDataObject::QueryGetData indicano tutti correttamente che il formato originale degli Appunti (cfFOO) è nuovamente disponibile in un TYMED_ISTORAGE.

Nel terzo caso, OLE crea comunque un oggetto dati predefinito, ma non sono disponibili informazioni speciali sui dati negli Appunti (in particolare per i formati degli Appunti definiti dall'applicazione). Pertanto, se un supporto di archiviazione basato su hGlobal è stato inserito negli Appunti direttamente da una chiamata alla funzione SetClipboardData , l'enumeratore FORMATETC e il metodo IDataObject::QueryGetData non indicano che i dati erano disponibili in un supporto di archiviazione. Tuttavia, una chiamata al metodo IDataObject::GetData per TYMED_ISTORAGE avrà esito positivo. A causa di queste limitazioni, è consigliabile che le applicazioni con riconoscimento OLE interagiscono con gli Appunti usando le funzioni degli Appunti OLE.

L'oggetto dati degli Appunti creato dalla funzione OleGetClipboard ha un'implementazione IDataObject abbastanza estesa. L'oggetto dati fornito da OLE può convertire i dati in formato Degli Appunti OLE 1 nella rappresentazione prevista da un chiamante OLE 2. Inoltre, tutti i dati strutturati sono disponibili in qualsiasi supporto strutturato o flat e tutti i dati flat sono disponibili in qualsiasi supporto flat. Tuttavia, gli oggetti GDI (ad esempio metafile e bitmap) sono disponibili solo sui rispettivi supporti.

Si noti che il membro tymed della struttura FORMATETC utilizzato nell'enumeratore FORMATETC contiene l'unione di supporti supportati. Le applicazioni che cercano informazioni specifiche(ad esempio se CF_TEXT è disponibile in TYMED_HGLOBAL) devono eseguire la maschera di bit appropriata durante il controllo di questo valore.

Se si chiama la funzione OleGetClipboard , è consigliabile tenere premuto l'oggetto IDataObject restituito per un breve periodo di tempo. Utilizza le risorse nell'applicazione che l'ha offerta.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ole2.h
Libreria Ole32.lib
DLL Ole32.dll
Set di API ext-ms-win-com-ole32-l1-1-5 (introdotto in Windows 10, versione 10.0.15063)

Vedi anche

OleSetClipboard