Bonjour;
J'ai une connexion pourrie à la maison et comme je joue beaucoup, je laisse souvent mon PC allumé la nuit pour que les mises à jours se fassent afin de ne pas avoir à les faire quand j'en ai besoin.
Je dispose déjà d'un petit logiciel qui s’appelle FreeMeter et qui m'affiche un graphe en temps réel de ma bande passante et je souhaite donc m'appuyer dessus pour savoir dans quel état est mon téléchargement, couleur verte sur le logiciel)
Je souhaite mettre en place une détection de couleur afin de savoir dans quel état est ma bande passante avant d'effectuer une coupure de mon ordinateur, en effet si il n'y a pas de mise à jours, aucun intérêt à ce que mon PC reste allumé toute la nuit.
Sachant que cette fenêtre n'ai jamais précisément au même endroit tout le temps sur mon second écran, j'aimerai savoir comment je peux dire à Autoit de prendre les coordonnées spécifiques à cette fenêtre. D'habitude pour un balayage avec détection de couleur, j'utilise les coordonnées de l'écran et non pas de la fenêtre à analyser précisément mais pour le coup ça ne va pas m'aider.
Je n'ai pas l'impression que ce soit possible lorsque l'on regarde les arguments de la fonction PixelSearch mais dans le doute je préfère demander.
Peut être avez vous une astuce.
***************************************
J'ai également besoin de votre aide pour une seconde phase. La détection d'un pixel pur et simple ne peux pas suffire car un pic de bande passante est toujours possible pour une raison inconnue. Pour faire cela bien j'ai besoin non pas de détecter un seul pixel mais une suite de pixel. Dans l'idée si je pouvais détecter une bande de verte de 50*50 ça serrait l'idéal.
Ça serait suffisamment significatif en hauteur pour indiquer qu'il y a beaucoup de débit et en longueur pour indiquer que ça dure sur le temps.
A votre avis comment je peux faire pour tester toute une portion de zone après une détection d'un pixel ?
Je pense à détecter x+1, x+2 jusqu'a 50 et idem pour Y mais ca ferai une boucle énorme de 2500 possibilités, certes je ne suis pas obligés de toutes les tester car si c'est à 49 ca veux dire que c'est aussi à 40 et 30 etc.
Avec vous dans vos cartons quelque chose pour simplifier la chose ?
PixelChecksum semble pas mal, mais je ne sais pas l'utiliser. De plus comme le fond de la fenêtre est noire si pas de débit et verte si débit, est ce que le checksum ne sera pas le même quelque soit la couleur ?
Voici les propriétés de la fenêtre et un aperçu de ce que donne la fenêtre. Lorsqu'il y a du vert c'est qu'il y a eu un téléchargement de donnée.
Le plafond de ma bande passante, se trouve en haut de la fenêtre.
Et voici la même fenêtre lors d'un gros téléchargement à pleine bande passante.
Merci d'avance pour les conseils que vous pourriez me fournir.
*****
Voici les tests que j'ai fait avec CheckSum, j'ai repris le script de base de la fonction pour l'adapter à la détection dans ma fenêtre.
Pour cela j'ai rajouter le WinGetHandle mais ça ne semble pas marcher. Il me fait une détection sur l'écran et non pas sur la fenêtre indiqué.
Le script se déclenche lorsque je passe une fenêtre sur mon écran de gauche, alors que la fenêtre de Freemeter est sur mon écran de droite.
; Obtient une somme de contrôle initiale
$hWnd = WinGetHandle("[CLASS:WindowsForms10.Window.8.app.0.33c0d9d]")
Local $iCheckSum = PixelChecksum(380, 7, 409, 18, 1, $hWnd)
; Attend que la région change, la région est contrôlée toutes les 100 ms pour réduire la charge du CPU
$i = 0
While $iCheckSum = PixelChecksum(380, 7, 409, 18, 1, $hWnd)
Sleep(100)
$i = $i + 1
ToolTip("Test n°: " & $i & " - ChkSum: " & $iCheckSum, 100, 100, "", 0, 2)
WEnd
MsgBox($MB_SYSTEMMODAL, "", "Quelque chose a changé dans la région!")
$hWnd = WinGetHandle("[CLASS:WindowsForms10.Window.8.app.0.33c0d9d]")
Local $iCheckSum = PixelChecksum(380, 7, 409, 18, 1, $hWnd)
; Attend que la région change, la région est contrôlée toutes les 100 ms pour réduire la charge du CPU
$i = 0
While $iCheckSum = PixelChecksum(380, 7, 409, 18, 1, $hWnd)
Sleep(100)
$i = $i + 1
ToolTip("Test n°: " & $i & " - ChkSum: " & $iCheckSum, 100, 100, "", 0, 2)
WEnd
MsgBox($MB_SYSTEMMODAL, "", "Quelque chose a changé dans la région!")