OleGetClipboard, fonction (ole2.h)

Récupère un objet de données que vous pouvez utiliser pour accéder au contenu du Presse-papiers.

Syntaxe

HRESULT OleGetClipboard(
  [out] LPDATAOBJECT *ppDataObj
);

Paramètres

[out] ppDataObj

Adresse de la variable de pointeur IDataObject qui reçoit le pointeur d’interface vers l’objet de données du Presse-papiers.

Valeur retournée

Cette fonction retourne S_OK en cas de réussite. Les autres valeurs possibles sont les suivantes.

Code de retour Description
CLIPBRD_E_CANT_OPEN
La fonction OpenClipboard utilisée dans OleFlushClipboard a échoué.
CLIPBRD_E_CANT_CLOSE
La fonction CloseClipboard utilisée dans OleFlushClipboard a échoué.

Remarques

Attention Les données du Presse-papiers ne sont pas approuvées. Analysez soigneusement les données avant de les utiliser dans votre application.
 
Si vous écrivez une application qui peut accepter des données du Presse-papiers, appelez la fonction OleGetClipboard pour obtenir un pointeur vers l’interface IDataObject que vous pouvez utiliser pour récupérer le contenu du Presse-papiers.

OleGetClipboard gère trois cas :

  • L’application qui a placé des données dans le Presse-papiers avec la fonction OleSetClipboard est toujours en cours d’exécution.
  • L’application qui a placé des données dans le Presse-papiers avec la fonction OleSetClipboard a ensuite appelé la fonction OleFlushClipboard .
  • Il existe des données provenant d’une application non OLE dans le Presse-papiers.
Dans le premier cas, l’objet de données du Presse-papiers retourné par OleGetClipboard peut transférer des appels si nécessaire à l’objet de données d’origine placé dans le Presse-papiers et, par conséquent, peut effectuer des appels RPC.

Dans le deuxième cas, OLE crée un objet de données par défaut et le retourne à l’utilisateur. Étant donné que les données du Presse-papiers proviennent d’un appel OleSetClipboard , l’objet de données fourni par OLE contient des informations plus précises sur le type de données dans le Presse-papiers. En particulier, le support d’origine (TYMED) sur lequel les données ont été proposées est connu. Ainsi, si une application source de données offre un format particulier de Presse-papiers, par exemple cfFOO, sur un objet de stockage et appelle la fonction OleFlushClipboard , l’objet de stockage est copié en mémoire et le handle de mémoire hglobal est placé dans le Presse-papiers. Ensuite, lorsque la fonction OleGetClipboard crée son objet de données par défaut, le hglobal du Presse-papiers redevient un objet IStorage . En outre, l’énumérateur FORMATETC et la méthode IDataObject ::QueryGetData indiquent tous correctement que le format du Presse-papiers d’origine (cfFOO) est à nouveau disponible sur un TYMED_ISTORAGE.

Dans le troisième cas, OLE crée toujours un objet de données par défaut, mais il n’existe aucune information spéciale sur les données dans le Presse-papiers (en particulier pour les formats de Presse-papiers définis par l’application). Ainsi, si un support de stockage basé sur hGlobal était placé directement dans le Presse-papiers par un appel à la fonction SetClipboardData , l’énumérateur FORMATETC et la méthode IDataObject ::QueryGetData n’indiqueraient pas que les données étaient disponibles sur un support de stockage. Toutefois, un appel à la méthode IDataObject ::GetData pour TYMED_ISTORAGE réussit. En raison de ces limitations, il est vivement recommandé que les applications prenant en charge OLE interagissent avec le Presse-papiers à l’aide des fonctions du Presse-papiers OLE.

L’objet de données du Presse-papiers créé par la fonction OleGetClipboard a une implémentation IDataObject assez étendue. L’objet de données fourni par OLE peut convertir les données au format du Presse-papiers OLE 1 en représentation attendue par un appelant OLE 2. En outre, toutes les données structurées sont disponibles sur n’importe quel support structuré ou plat, et toutes les données plates sont disponibles sur n’importe quel support plat. Toutefois, les objets GDI (tels que les métafichiers et les bitmaps) ne sont disponibles que sur leurs supports respectifs.

Notez que le membre joint de la structure FORMATETC utilisé dans l’énumérateur FORMATETC contient l’union des supports pris en charge. Les applications qui recherchent des informations spécifiques (par exemple, si CF_TEXT est disponible sur TYMED_HGLOBAL) doivent effectuer le maquage de bits approprié lors de la vérification de cette valeur.

Si vous appelez la fonction OleGetClipboard , vous ne devez conserver l’objet IDataObject retourné que très peu de temps. Il consomme des ressources dans l’application qui l’a proposé.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ole2.h
Bibliothèque Ole32.lib
DLL Ole32.dll
Ensemble d’API ext-ms-win-com-ole32-l1-1-5 (introduit dans Windows 10, version 10.0.15063)

Voir aussi

OleSetClipboard