Création d'une image à partir du contenu du clipboard

arno383 Messages postés 2 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 25 août 2008 - 12 avril 2007 à 10:42
arno383 Messages postés 2 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 25 août 2008 - 12 avril 2007 à 11:54
Bonjour à tous,

Je fais mes premiers pas en VBA (sous Powerpoint... ce qui ne rend pas les choses facicles). Je développe un petit programme pour mon boulot dans lequel je voudrais faie une capture d'écran, l'afficher en plein écran (de manière à ce que l'utilisateur ne se rende compte de rien) pour ensuite récupérer la couleur d'un pixel donné.

Je commence tout juste à me familiariser avec les API, mais j'ai encore beaucoup de mal à comprendre ces histoires de handler et autres... Résultat : la copie d'écran est effectuée mais je n'ai aucune idée de la manière dont je peux récupérer le contenu du clipboard pour créer un bitmap et le placer dans ma picturebox. Voila le code pour l'instant :

Public Declare Function GetCursorPos Lib "user32" (lpPoint As PointAPI) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function GetSystemMetrics Lib "user32" (ByVal index As Long) As Long
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Public Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long

sub pour_voir()

' Dimensionnement de la picturebox à la taille de l'écran
ScreenCapture.ScreenCaptureImage.Width = GetSystemMetrics(0)
ScreenCapture.ScreenCaptureImage.Height = GetSystemMetrics(1)

' Screen capture et chargement de l'image dans la picturebox
Dim format, bitmapData As Long
format = 2
OpenClipboard
EmptyClipboard
Call keybd_event(vbKeySnapshot, 1, 0, 0)
bitmapData = GetClipboardData(format)
' ### C'EST LA QUE CA COINCE....
CloseClipboard
ScreenCapture.Show

end sub

Pour toute la suite, je me suis débrouillé avec les fonctions GetCursorPos et GetPixel, donc pas de souci pour récupérer la couleur du pixel sélectionné.

Merci d'avance de votre aide...

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 avril 2007 à 11:48
heu... pourquoi vouloir passer par les API Windows pour accèder au presse-papier ?

L'objet Clipboard n'existe pas en VBA ?
0
arno383 Messages postés 2 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 25 août 2008
12 avril 2007 à 11:54
C'est bien ça le problème... J'ai trouvé plein de sources avec l'objet Clipboard et la méthode GetData, mais pour moi ce n'est pas possible, d'où la difficulté de la chose...
0
Rejoignez-nous