Capture d'écran (encore...)

jer-o-nimo - 18 juil. 2001 à 22:27
cs_Calou Messages postés 15 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 23 avril 2010 - 22 janv. 2010 à 07:28
J'ai récupéré le code de Nix pour faire des screenshots et je l'ai un peu modifier pour que ledit screenshot soit immédiatement affiché dans lepicturebox picture2 situé dans form2, les deux étant en plein écran.
On trouve donc ceci dans mon module :
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Pic As PictureBox
Public Picture2 As PictureBox
Public Function CaptEcran(Pic As PictureBox) As Boolean

'vider les mémoires
Clipboard.Clear
Form2.Picture2.Cls

'Pour Capturer l'ecran entier
Call keybd_event(vbKeySnapshot, 1, 0, 0)
Form2.Picture2.Picture = Clipboard.GetData(vbCFBitmap)
CaptEcran = True
Exit Function

SortieErreur:
MsgBox "Erreur dans le Module CaptEcran. Erreur #: " & Err.Number & ", " & Err.Description
End Function

Et ça marche pas!
Si qqn pouvais éclairer ma lanterne ce serait super chouette!

4 réponses

C'est normal, il faudrait que tu trouves le moyen de faire une pause entre Call keybd_event(vbKeySnapshot, 1, 0, 0) et Form2.Picture2.Picture = Clipboard.GetData(vbCFBitmap) pour que l'image soit loadé dans le clipboard
0
Pour la pause voici ce que tu devrais faire

Do Until Clipboard.GetFormat(vbCFBitmap) = True
DoEvents
Loop

Quand le code sortira de la boucle tu pourras récupérer l'écran dans le clipboard
0
vince153 Messages postés 3 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 6 décembre 2002
20 oct. 2002 à 23:40
D'accord pour la pause
T'as essayé avec DoEvents
A la fin de la ligne "Call keyb...", rajoute":DoEvents"
Cette instruction redonne la main au système, c'est peut être le temps qu'il est nécessaire

_=.=-- L.C. @gent --=.=_
0
cs_Calou Messages postés 15 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 23 avril 2010
22 janv. 2010 à 07:28
Do While stdpicture.Height = 0
Set stdpicture = Clipboard.GetData(vbCFBitmap)
Compt = Compt + 1
If Compt > 50 Then Exit Do
DoEvents
Loop

Juste pour info....
0
Rejoignez-nous