GUICtrlSetData() - Rafraîchissement du Bk.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Barthandelus
Niveau 4
Niveau 4
Messages : 53
Enregistré le : mer. 02 janv. 2019 14:34
Status : Hors ligne

GUICtrlSetData() - Rafraîchissement du Bk.

#1

Message par Barthandelus »

Bonjour,

J'utilise actuellement l'AU3 pour observer le réseau (via PCAP) et incrémenter une base de donnée des différentes IP / protocoles utilisés / etc pour faire un audit de sécurité en local. J'incrémente un champ (label) par le nombre de paquet reçu lors de l'analyse en "real-time". Bonne idée ou pas, cela fonctionne. Mais lors des piques de packets (1900 /sc), bien que le label se mette bien à jour, j'ai l'impression que l'AU3 détruit et recréer l'élément avec le nouveau texte, parce que je vois le background (Bk) devenir "blanc naturel", puis se ré-appliquer en transparent.

C'est bête, mais comme je compte mettre en libre service le code, je pense que ça va gêner l’œil des utilisateurs. Une idée de comment fonctionne GUICtrlSetData() à ce niveau et comment pallier au problème ? La solution simple serait d'incrémenter l'affichage toutes les x secondes en incrémentant la variable en background en temps réel, mais je me demande s'il y a une solution directement prévue en AU3.

Une idée ?
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: GUICtrlSetData() - Rafraîchissement du Bk.

#2

Message par TommyDDR »

Bonjour,
Je pense voir ce dont vous voulez parler, mais (et c'est valable en règle général si vous voulez que les gens vous aident) vous devriez fournir un code simplifié qui reproduit votre problème.
En effet, si quelqu'un veut vous aider, vous le forcez à créer un script et essayer de trouver ce dont vous voulez parler.

Voilà ce que j'ai fait (et je n'ai pas de problème) :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)

Global $gui
Global $taille[2] = [300, 300]
Global $label
Global $count = 0

$gui = GUICreate("", $taille[0], $taille[1])
GUISetOnEvent($GUI_EVENT_CLOSE, "quit", $gui)
GUISetBkColor(0x000000, $gui)
$label = GUICtrlCreateLabel("0", 10, 10, 100, 20)
GUICtrlSetColor($label, 0xFFFFFF)
GUICtrlSetBkColor($label, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW, $gui)

While(True)
	$count += 1
	GUICtrlSetData($label, $count)
	Sleep(10)
WEnd

Func quit()
	Exit
EndFunc
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre