Capture d'écran

cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005 - 21 juil. 2005 à 09:53
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 21 juil. 2005 à 11:05
Bonjour à Tous,

je cherche mon bonheur deouis quelques temps mais je ne trouve pas ce
qu'il me faut...alors je me suis décidé à écrire ce petit message.



Je désire capturer une partie d'écran, l'enregistrer en fichier image
(soit jpeg ou bmp) et l'insérer dans une picturebox dans une autre
feuille...



J'ai essayé ce code mais je ne sais pas si avec celui ci il est possible de ne sélectionner qu'une partie de mon écran :



Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long)
As Long



Private Declare Function GetDesktopWindow Lib "user32" () As Long



Private Sub Command1_Click()

Dim a As String

Dim b As String

Form5.Show

form5.Picture1.AutoRedraw = True

Form5.Picture1.ScaleMode = vbPixels

a = GetDesktopWindow()

b = GetDC(a)

StretchBlt Form5.Picture1.hdc, 0, "0", Screen.Width,
Screen.Height, b, 0, 0,
Screen.Width, Screen.Height,
vbSrcCopy

End Sub



Merci à tous ceux qui pourront m'aider.

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
21 juil. 2005 à 10:02
La solution est dans ton code : la fonction StretchBlt te permet de définir le rectangle à copier :
StretchBlt Form5.Picture1.hdc, 0, "0", Screen.Width, Screen.Height, b, XSrc, YSrc, WidthSrc, HeightSrc, vbSrcCopy



Il te suffit donc de remplacer les 4 avant-derniers paramètres pour définir le rectangle à copier.


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005
21 juil. 2005 à 10:09
Oui c'est justement là mon problème, je ne sais pas trop par quoi les remplacer pour obtenir la fenêtre que je veux capturer....



Merci.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
21 juil. 2005 à 10:13
Et bien récupère les coordonnées de la fenêtre que tu veux en utilisant
la fonction de l'API Windows GetWindowRect par exemple (il te faut
connaître le hWnd de celle-ci).

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005
21 juil. 2005 à 10:53
Mes compétences en VB étant assez limité je suis assez perdu et je
n'arrive pas à voir comment utiliser cette fonction pour récupérer les
coordonnées de cette fenêtre et la capturer.



PS : la partie que je souhaite capturer est statique, ce sera toujours les mêmes coordonnées.



Encore Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
21 juil. 2005 à 11:05
Ben à ce moment là, fixe les coordonnées une fois pour toute, si tu es sûr que la fenêtre est toujours au même endroit.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0