Page 1 sur 1
[Resolu] Commande POINT sur une appli externe?
Publié : mer. 20/août/2008 15:38
par gildev
Est-il possible de lire la couleur d'un pixel d'un fenêtre externe?
Je pourrai contourner le problème en faisant une capture d'écran de la fenetre externe puis en lisant ma capture dans mon appli PB, mais je préfererai le faire en direct, si c'est possible biensûr.
Publié : mer. 20/août/2008 20:52
par Droopy
essaye avec ça :
Code : Tout sélectionner
; Return the RGB color of the pixel at the specified coordinates
; or #CLR_INVALID (-1) if coordinates is outside the screen
Procedure GetPixelColor(x,y)
sysviewDC = GetDC_( hwndSysview )
ProcedureReturn GetPixel_( sysviewDC,x, y )
EndProcedure
Publié : jeu. 21/août/2008 13:20
par gildev
Merci Droopy! Je teste ça cet après-midi.
Publié : jeu. 21/août/2008 13:39
par gildev
En ajoutant ces quelques lignes, j'ai pu vérifier que les couleurs correspondent bien:
Code : Tout sélectionner
couleur=GetPixelColor(100,100)
ro = Red(couleur)
ve = Green(couleur)
bl = Blue(couleur)
Debug Str(ro)+" "+Str(ve)+" "+Str(bl)
Ca marche à 100%.
Droopy tu es un dieu! Merci encore.
Publié : jeu. 21/août/2008 15:47
par Kwai chang caine
Normalement DROOPY c'est un chien....
Mais dans notre forum à nous, qui est le plus beau forum du monde parce qu'il n'est pas comme les autres, et ben DROOPY, c'est vrai, c'est aussi un dieu
Et on est tres fier de notre talentueux, joli et gentil toutou
Merci DROPPY
PS pour DOBRO
Faire de la leche à un chien, si c'est pas un paradoxe ça

Publié : jeu. 21/août/2008 16:11
par gildev
Arf! Je rencontre une autre difficulté.
Je maximise la fenêtre externe de manière à ce que ses coordonnées soient à 0,0 (pour faciliter la lecture des pixels) avec:
Mais pour une raison qui m'échappe, parfois elle se maximise mal, elle se retrouve décalée vers la droite et vers le bas (à cause de mon double affichage je pense car je travaillle sur deux écrans).
Donc j'ai fais des recherches sur MSDN pour trouver l'argument #SC_MOVE qui devrait me permettre de la positionner aux coordonnées 0,0 comme prévu. J'ai donc tenté:
Mais aucune réaction! Je ne comprends pas le pourquoi du comment...
Publié : jeu. 21/août/2008 16:34
par gnozal
gildev a écrit :Je maximise la fenêtre externe de manière à ce que ses coordonnées soient à 0,0 (pour faciliter la lecture des pixels)
Il suffit de récupérer les coordonnées de la fenêtre (cf. GetWindowRect_(), GetClientRect_(), etc...) et de faire une petite correction de coordonnées, non ?
Publié : jeu. 21/août/2008 21:10
par gildev
Merci
gnozal!
En cherchant le mot
GetWindowRect_ sur le forum j'ai trouvé ça:
http://www.purebasic.fr/french/viewtopic.php?t=7641
C'est 100% ce que je cherchais, merci à toi encore, ainsi qu'à
Chris pour ce source très clair.