Saturation de la mémoire ?...... [Résolu]

Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Bonjour,

Je recherche dans un boucle et dans un espace délimité sur l'écran, un groupe de pixels de couleur par exemple Rouge.
Lorsqu'un pixel rouge est trouvé, le traitement se déroule normalement.
Lorsqu'il n'est pas trouvé, il semble y avoir saturation de la mémoire.

For I1 = 660 To 700 Step 3
    For I2 = 420 To 464 Step 3
        If GetPixel(GetDC(0&), I1, I2) = Vbred Then
            SetCursorPos I1, I2
            Call mouse_event(MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, I1,
            I2, 0, 0)
            Exit sub  ' Le traitement est correcte
    Next i2
Next i1

'-----------------------------------
SetCursorPos PosGoL, PosGoT
Call mouse_event(MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, PosGoL, PosGoT, 0, 0)


Ici il doit y avoir saturation de la mémoire (Des parties de l'écran sont alors incrusté de rectangles noirs, du texte disparaît, impossible de sortir proprement du programme.

Avez vous une idée sur la question ?.....

Par avance merci.


Ps: L'espace dans lequel se trouve le groupe de pixels recherchés se trouve en dehors de la Form
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
3
Merci
si
J2 = GetDesktopWindow()
alors prendre:
J1 = GetDC(J2)

relativement identique, mais plus cohérent

mais ok, sinon

Dire « Merci » 3

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 205 internautes nous ont dit merci ce mois-ci

mesangeai
Messages postés
13
Date d'inscription
samedi 4 août 2012
Statut
Membre
Dernière intervention
26 août 2019
-
merci
Commenter la réponse de Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
0
Merci
passons sur le coté performances d'un GetPixel.


mais ton GetDC(0&) en boucle => fuites mémoires

(et faut pas oublier le ReleaseDc)

en somme, demande ton DC UNE fois, joues avec, release le.
Commenter la réponse de Renfield
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
0
Merci
J'ai mis comme conseillé le Getdc avant la Boucle, c'est performant et ça marche impeccable.

En ce qui concerne le ReleaseDC, je me demande si je l'ai codifié correctement

Avant la boucle:
J2 = GetDesktopWindow()
J1 = GetDC(0&)

Dans la Boucle:
If GetPixel(J1, I1, I2) = vbred Then .............

Et après la Boucle:
ReleaseDC J2, J1

Est-ce correcte ?

Encore Merci.
Commenter la réponse de Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
0
Merci
Encore Merci
Commenter la réponse de Cjvg