Lecture du contenu du presse-papiers

 

Avant de lire le contenu du presse papier, il faudra tout d'abord s'assurer que l'application saura interpréter les données contenues dedans.

Pour cela, il faut demander le type de données stockées.

BOOL IsClipboardFormatAvailable (type);
Où type est le type que l'application sera lire dans le presse-papiers (CF_TEXT, ...)

Si TRUE, le presse papiers contient des données correspondant au type. L'application peut dans ce cas ouvrir le presse papier pour récupérer les données:
OpenClipboard (hwnd);

Puis récupérer un handle sur le tampon mémoire contenant les données.
hClipMemory = GetClipboardData (type); avec type = CF_TEXT par exemple...

Vérifiez hClipMemory, si la valeur retournée est NULL, c'est qu'il n'y a pas de données correspondant à type...

Image non trouvée ! Le handle ainsi récupéré ne vous permet pas de libérer ou de modifier les données qu'il représente.

A savoir, ce handle ne sera valide qu'entre GetClipboardData et la fermeture à l'accès du presse-papiers par CloseClipboard().

Vous pouvez maintenant lire les données, en allouant tout d'abord une zone mémoire.

Par exemple hMemAppli = GlobalAlloc (GHND, GlobalSize (hClipMemory));

Puis récupérer un pointeur sur les deux tampons via GlobalLock, faire la recopie, sans oublier de dévérouiller la mémoire via la fonction GlobalUnlock();

Enfin, fermer l'accès au presse-papiers via CloseClipboard.
Comme le handle hClipMemory n'est plus valide, vous pourrez affecter la valeur 0 à la variable utilisée.