Capture d'écran (encore...)

Signaler
-
Messages postés
15
Date d'inscription
jeudi 26 octobre 2000
Statut
Membre
Dernière intervention
23 avril 2010
-
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
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
Messages postés
3
Date d'inscription
samedi 19 octobre 2002
Statut
Membre
Dernière intervention
6 décembre 2002

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 --=.=_
Messages postés
15
Date d'inscription
jeudi 26 octobre 2000
Statut
Membre
Dernière intervention
23 avril 2010

Do While stdpicture.Height = 0
Set stdpicture = Clipboard.GetData(vbCFBitmap)
Compt = Compt + 1
If Compt > 50 Then Exit Do
DoEvents
Loop

Juste pour info....