Un coup de main pour trouver la couleur d'un pixel dans tout l'écran windows

esc2004 Messages postés 7 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 1 novembre 2005 - 8 avril 2004 à 22:40
neonecc Messages postés 9 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 30 décembre 2009 - 30 déc. 2009 à 17:07
Avec toutes les réponses du forum, j'ai réussi à faire ceci :
-----
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Private Sub Command1_Click()
Call keybd_event(vbKeySnapshot, 0, 0, 0)
DoEvents
Picture1.Picture = Clipboard.GetData(vbCFBitmap)
End Sub

Private Sub Form_Load()
Largeur = Screen.Width \ Screen.TwipsPerPixelX
Hauteur = Screen.Height \ Screen.TwipsPerPixelY

End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim C As Long
C = GetPixel(Picture1.hdc, X, Y)
DoEvents
lblcouleur.Caption = Hex(C)
Lblcoord.Caption = X & " " & Y
DoEvents
End Sub
--------
Comme je l'ai lu dans le forum, il faut récupéré l'image de l'écran dans une picturebox et tester dans cette picture.
Pout tester tout cela, j'ai fait un code qui quand on clique nous donne les coordonnées de la souris dans la picture et la couleur du pixel sous la souris.
Le souci, c'est que la couleur est toujours à -1 dès que l'on se déplace dans la picturebox. Pourtant les coordonnées varient bien.
Merci d'avance pour votre aide.

6 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
8 avril 2004 à 23:40
attention as tu verifier que le scalemode etait bien en pixel
et pas en twip ?

Si tu veux un code plus simple sans conversion
je te conseil d'utiliser celui ci
(il te faut un timer et un text box) :

Private Type POINTAPI
x As Long
y As Long
End Type

Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Any) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Sub Timer1_Timer()
Dim pt As POINTAPI
Dim dc As Long
Dim px As Long
dc = CreateDC("DISPLAY", vbNullString, vbNullString, 0&)
Call GetCursorPos(pt)
px = GetPixel(dc, pt.x, pt.y)
DeleteDC dc
Text1.BackColor = px
End Sub

@+

E.B.
0
esc2004 Messages postés 7 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 1 novembre 2005
9 avril 2004 à 16:46
Alors là merci EBArtSoft, j'ai testé ton code et adapté à mon programme.
C'est exactement les infos qu'il me fallait.
Gràce à toi, plus besoin de picturebox qui me sert à rien.

J'avais juste besoin de vérifier la couleur d'un pixel sur le bureau alors que mon appli tourne en tache de fond.

TRES GAND MERCI A TOI.
0
cs_danone Messages postés 28 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 octobre 2009
17 août 2004 à 02:07
merci ,

vraiment genial c'est ce que je cherchai ;o)

c'est bete que l'on puisse pas mettre de note

danone
0
neonecc Messages postés 9 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 30 décembre 2009
30 déc. 2009 à 15:02
dans Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Any) As Long


le lpInitData As Any ne fonctionne pas...
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 déc. 2009 à 16:26
Bonjour, neonecc

1) tu devrais ouvrir ta propre discussion
2) la présente discussion a étré ouverte sous VB.Net. Et la réponse de satisfaction du demandeur (avec le code montré) donne à penser que son outil de développement était finalement VB6 (et non VB.Net !)
Comme quoi le choix du thème adéquat est de la plus grande importance, si l'on ne veut pas s'égarer ...
Et toi : sous quoi développes-tu donc ? (je pense que sous VB.Net ... et que tu es tombé sur du code VB6 dans une discussion VB.Net !)
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
neonecc Messages postés 9 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 30 décembre 2009
30 déc. 2009 à 17:07
ouais je suis sur VB.NET et mon problème est la http://www.vbfrance.com/forum/sujet-API-GETPIXEL-GETDC-VB-NET_1391409.aspx
0
Rejoignez-nous