MAGIQUE CAPTURE (CAPTURE D'ÉCRAN ET DE SOUS FENÊTRES)

PierrotVB Messages postés 58 Date d'inscription vendredi 12 juillet 2002 Statut Membre Dernière intervention 20 août 2004 - 10 janv. 2003 à 12:44
hunter_vb Messages postés 2 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 10 août 2005 - 2 juin 2005 à 20:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/4251-magique-capture-capture-d-ecran-et-de-sous-fenetres

hunter_vb Messages postés 2 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 10 août 2005
2 juin 2005 à 20:09
Rien à dire sur ce point, vraiment exellent travail,
vous m'avez sauver Merci
jpb14 Messages postés 18 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 22 janvier 2013
1 juin 2004 à 09:46
j'ai sans doute la solution ds ce code à ce que je cherche (envoyer mon image-écran complète ds le Presse papier avec une autre technique que la touche "impr écran"), mais ce sans doute superbe programme manque cruellement de présentation: comment fonctionne t'il, à quoi sert t'il; une fois le prog lancé, que faire de cette jolie flèche bleue ? ... merci à tous ceux qui s'extasient d'un air convaincu de bien vouloir me dire ce qu'ils ont compris ...
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
6 mai 2004 à 21:09
Je viens de tester la source sans trop regarder au code...

Il me semble qu'il n'est pas possible de capturer un menu déroulé.

Si je me trompe, quel est la procédure à suivre ?
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
13 janv. 2004 à 21:38
Juste pour simplifier la source, et puis mettre une methode efficace ici, pour qu'on soit pas obligé de télécharger l'exe (qui est super!!... mais c'est un gain de tps)

Dans un module mettez ça :

Private Const SRCCOPY &HCC0020 ' (DWORD) destination source

'API
Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
Private Declare Function BitBlt Lib "gdi32.dll" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateDC Lib "gdi32.dll" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE) As Long
Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Public Sub CaptureScreen(Left As Long, Top As Long, Width As Long, Height As Long, ByVal dest As Long)
Dim srcDC As Long
srcDC = CreateDC("DISPLAY", "", "", dm)
BitBlt dest, 0, 0, Width, Height, srcDC, Left, Top, SRCCOPY
ReleaseDC dest, srcDC
DeleteDC srcDC
End Sub

Dans un form avec une picturebox

Private Sub Form_Load()
CaptureScreen 0, 0, 100, 100, Picture1.hdc
End Sub

Bréf comme vous le verrez j'ai modifié sa fonction afin de faire une capture écran et ne plus la passer dans le clipboard.

C'est vraiment ça que je cherchais, alors un grand merci :-)

PS : Une fonction existe seulement pour XP pour capturer une fenetre à partir de son handle :
Declare Function PrintWindow Lib "user32" (ByVal hWnd As Long, ByVal hdcBlt As Long, ByVal nFlags As Long) As Long

· hwnd
Handle to the window that will be copied.

· hdcBlt
Handle to the device context.

· nFlags
Specifies the drawing options. It can be one of the following values.

PW_CLIENTONLY
Only the client area of the window is copied to hdcBlt. By default, the entire window is copied.

Un exemple d'utilisation :

Private Declare Function PrintWindow Lib "user32" (ByVal hWnd As Long, ByVal hdcBlt As Long, ByVal nFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim mWnd As Long
'launch notepad
Shell "notepad.exe", vbNormalNoFocus
DoEvents
'set the graphics mode to persistent
Me.AutoRedraw = True
'search the handle of the notepad window
mWnd = FindWindow("Notepad", vbNullString)
If mWnd = 0 Then
Me.Print "NotePad window not found!"
Else
'draw the image of the notepad window on our form
PrintWindow mWnd, Me.hDC, 0
End If
End Sub

Bonne prog à tous, et merci d'avoir posté cette source super interessante !

Je la note 10/10 elle déchire de trop ...
PS : Dommage qu'il y ait pas de capture d'écran (c un comble...)
carabidule Messages postés 13 Date d'inscription samedi 10 août 2002 Statut Membre Dernière intervention 7 janvier 2004
17 déc. 2003 à 12:59
Etonnant, Bravo !
cs_zappy Messages postés 161 Date d'inscription mardi 19 juin 2001 Statut Membre Dernière intervention 10 avril 2007 2
10 janv. 2003 à 14:00
merci bcp :)
cs_Evil Messages postés 33 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 4 novembre 2004
10 janv. 2003 à 13:55
Excellent !! 10/10 !
cs_zappy Messages postés 161 Date d'inscription mardi 19 juin 2001 Statut Membre Dernière intervention 10 avril 2007 2
10 janv. 2003 à 12:46
J'ai bourriné un peu le code, prière de me pardonner ;)
PierrotVB Messages postés 58 Date d'inscription vendredi 12 juillet 2002 Statut Membre Dernière intervention 20 août 2004
10 janv. 2003 à 12:44
trop bon!
Rejoignez-nous