[R] Timer.tick ??!
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
[R] Timer.tick ??!
Bonsoir a tous, encore félicitation pour le forum j'y trouve souvent mon "bonheur"!
Petite question : sous vb net j'utilise des timers qui me déclencher des évènements au "timer.tick"
Sous Autoit j'utilise "AdlibRegister", il n' y a pas autre chose? pas de timer.tick?
Petite question : sous vb net j'utilise des timers qui me déclencher des évènements au "timer.tick"
Sous Autoit j'utilise "AdlibRegister", il n' y a pas autre chose? pas de timer.tick?
Modifié en dernier par cutprod le dim. 17 oct. 2010 09:31, modifié 3 fois.
Cut, srcipteur du dimanche...désolé !-)
- jbnh
- Niveau 11

- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [..] Timer.tick ??!
En quoi AdlibRegister ne convient-il pas ?
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Timer.tick ??!
Si si ça convient très bien!
C'était juste pour savoir...
C'était juste pour savoir...
Cut, srcipteur du dimanche...désolé !-)
- jbnh
- Niveau 11

- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [R] Timer.tick ??!
Je crois bien que l'équivalent est bien AdlibRegister et AdlibUnRegister.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [R] Timer.tick ??!
ok, je te remercie.
Pourquoi lorsque sur un événement je lance 2 "AdlibRegister" avec la même valeure "time" sa flambe mon programme (je peut plus sortir!) ?
Pourquoi lorsque sur un événement je lance 2 "AdlibRegister" avec la même valeure "time" sa flambe mon programme (je peut plus sortir!) ?
Cut, srcipteur du dimanche...désolé !-)
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Timer.tick ??!
Regarde sur un script de ce genre ca bloque quand j'active mes deux fonctions : Pourquoi?
(Je suis sur que c'est tout bête mais je débute...)
(Je suis sur que c'est tout bête mais je débute...)
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 364, 221, 192, 124)
$Button1 = GUICtrlCreateButton("fonction1", 43, 53, 121, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("fonction2", 197, 54, 121, 33, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("", 43, 141, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
$Label2 = GUICtrlCreateLabel("", 203, 143, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
AdlibRegister("one",1000)
Case $Button2
AdlibRegister("two",1000)
EndSwitch
WEnd
Func one()
GUICtrlSetBkColor($Label1, 0xff0000)
Sleep (500)
GUICtrlSetBkColor($Label1, 0xC0C0C0)
EndFunc
Func two ()
GUICtrlSetBkColor($Label2, 0xff0000)
Sleep (500)
GUICtrlSetBkColor($Label2, 0xC0C0C0)
EndFunc
Cut, srcipteur du dimanche...désolé !-)
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Timer.tick ??!
En regardant votre code, je dirais simplement que si vous cliquez sur le bouton 1, vous activez une première fonction qui est exécutée une fois par seconde. Or cette fonction dure un tout petit peut plus que 500ms ce qui ne laisse pas beaucoup de temps à votre boucle de message (moins de 500 ms)
.
Si vous cliquez sur le bouton 2, vous activez une nouvelle fonction qui dure un peut plus de 500 ms et qui doit être exécutée toute les secondes.
Donc 500 ms + 500 ms = 1 seconde
Autrement dit, vos fonctions utilisent 100% des ressources du script, ce qui le rend 'sourd' aux autres commandes puisque la boucle de message ne peut être exécutée normalement.
Si vous cliquez sur le bouton 2, vous activez une nouvelle fonction qui dure un peut plus de 500 ms et qui doit être exécutée toute les secondes.
Donc 500 ms + 500 ms = 1 seconde
Autrement dit, vos fonctions utilisent 100% des ressources du script, ce qui le rend 'sourd' aux autres commandes puisque la boucle de message ne peut être exécutée normalement.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Timer.tick ??!
OK je vois, y a t il une solution ?(Pour ce genre d'actions)
Cut, srcipteur du dimanche...désolé !-)
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Timer.tick ??!
Oui, il y a deux solutions.
1 - Diminuer le temps de chaque fonctions en modifiant le Sleep(500) par un Sleep(100) par exemple.
2 - Augmenter la périodicité d'appel aux fonctions. Au lieu de 1 seconde, utilisez 5 secondes ou plus.
Il est aussi possible de faire un mix des deux solutions.
1 - Diminuer le temps de chaque fonctions en modifiant le Sleep(500) par un Sleep(100) par exemple.
2 - Augmenter la périodicité d'appel aux fonctions. Au lieu de 1 seconde, utilisez 5 secondes ou plus.
Il est aussi possible de faire un mix des deux solutions.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Timer.tick ??!
Merci pour ton aide.
Ça m'étonne un peut! On ne peut pas faire un script ou figure deux pauvres boutons qui clignotent 1 fois par seconde ,sans faire planter le prog!!
Rassure moi?
Ça m'étonne un peut! On ne peut pas faire un script ou figure deux pauvres boutons qui clignotent 1 fois par seconde ,sans faire planter le prog!!
Rassure moi?
Cut, srcipteur du dimanche...désolé !-)
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Timer.tick ??!
Le programme ne plante pas !!!
Il fait ce que vous lui demandez de faire, sauf que là vous lui demandez d'être à plus de 100%.
Le problème vient de la commande Sleep(). Elle est à proscrire dans les fonctions comme AdlibRegister().
Lisez ceci : http://www.autoitscript.fr/forum/viewto ... 560#p36560
Voici une alternative :
Il fait ce que vous lui demandez de faire, sauf que là vous lui demandez d'être à plus de 100%.
Le problème vient de la commande Sleep(). Elle est à proscrire dans les fonctions comme AdlibRegister().
Lisez ceci : http://www.autoitscript.fr/forum/viewto ... 560#p36560
Voici une alternative :
► Afficher le texte
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Timer.tick ??!
Ton alternative fonctionne très bien.
Je te remercie.
Je te remercie.
Cut, srcipteur du dimanche...désolé !-)
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Timer.tick ??!
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [R] Timer.tick ??!
A la recherche d'une fonctionnalité similaire (pour mon controle parental, ou je veux surveiller que les process voulus tournent, et que que les indésirables eux ne tournent pas) je suis tombé sur ce topic
Je ne connaissais pas adlibregister, et c'est exactement ce qu'il me fallait, du coup je me suis servi de ton script pour voir comment ca marche... et j'ai eu l'idée d'une autre solution a ton pb.
Comme l'a dit Tlem, le pb vient des sleep. D'ou ma question, pourquoi les garder si ils sont source de probleme ?
Donc voici ce sur quoi je t'aurai orienté.
(j'ai rajouté un 3eme bouton qui lance les 2 compteurs simultanément pour etre sur que ca ne pose pas de pb et qu'ils restent bien synchrones)
Je ne connaissais pas adlibregister, et c'est exactement ce qu'il me fallait, du coup je me suis servi de ton script pour voir comment ca marche... et j'ai eu l'idée d'une autre solution a ton pb.
Comme l'a dit Tlem, le pb vient des sleep. D'ou ma question, pourquoi les garder si ils sont source de probleme ?
Donc voici ce sur quoi je t'aurai orienté.
(j'ai rajouté un 3eme bouton qui lance les 2 compteurs simultanément pour etre sur que ca ne pose pas de pb et qu'ils restent bien synchrones)
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 364, 221, 192, 124)
$Button1 = GUICtrlCreateButton("fonction1", 20, 54, 90, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("fonction2", 240, 54, 90, 33, $WS_GROUP)
$Button3 = GUICtrlCreateButton("fonction3", 130, 94, 90, 33, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("", 43, 141, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
$Label2 = GUICtrlCreateLabel("", 203, 143, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$color1 = 0xff0000
$color2 = 0xC0C0C0
$color3 = 0x00ff00
$color4 = 0xC0C0C0
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
AdlibRegister("one", 500)
Case $Button2
AdlibRegister("two", 500)
Case $Button3
AdlibRegister("one", 500)
AdlibRegister("two", 500)
EndSwitch
WEnd
Func one()
_swap($color1,$color2)
GUICtrlSetBkColor($Label1, $color1)
EndFunc
Func two()
_swap($color3,$color4)
GUICtrlSetBkColor($Label2, $color3)
EndFunc
Func _swap(ByRef $v1, ByRef $v2)
$v3 = $v2
$v2 = $v1
$v1 = $v3
Return
EndFuncSi vis pacem para bellum
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [R] Timer.tick ??!
ha oui ok, c'est très bon aussi!!
Mais put tu m'expliquer pourquoi tu donne la même valeur a deux variables, pourquoi ne pas en utiliser qu'une seule ?
$color2 = 0xC0C0C0
$color4 = 0xC0C0C0
Mais put tu m'expliquer pourquoi tu donne la même valeur a deux variables, pourquoi ne pas en utiliser qu'une seule ?
$color2 = 0xC0C0C0
$color4 = 0xC0C0C0
Cut, srcipteur du dimanche...désolé !-)
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [R] Timer.tick ??!
cette question je l'attendais...
Comme les valeurs swapent par paquet de 2 ($color1 avec $color2 et $color3 avec $color4) si on en utilisait que 2 quand la premiere fonction fait son swap ca marcherait, puis la 2eme viendrait remettre tout d'aplomb, ce qui fait que quand la premiere reviendrait, elle remetrait a nouveau comme elle avait mis apres son premier passage, du coup ca clignoterait plus.
Pire si on en met que 3 (col1=fond, col2 et col3 etant des couleurs distinctes pour les 2 cases).
Donc fonction1 swap col1 et col2
et fonction 2 swap col1 et col3
Si les 2 fonctions sont activées on se retrouve avec un chenillard ou les 3 couleurs se succedent sur chaque case.
De plus comme ca rien ne t'empeche de mettre
$color1 = 0x00ff00
$color2 = 0x000000
$color3 = 0x0c0c0c
$color4 = 0xffffff
pour faire clignoter la premiere en noir et vert, et la seconde en gris et blanc (si je me trompe pas dans mes codes couleur...)
Comme les valeurs swapent par paquet de 2 ($color1 avec $color2 et $color3 avec $color4) si on en utilisait que 2 quand la premiere fonction fait son swap ca marcherait, puis la 2eme viendrait remettre tout d'aplomb, ce qui fait que quand la premiere reviendrait, elle remetrait a nouveau comme elle avait mis apres son premier passage, du coup ca clignoterait plus.
Pire si on en met que 3 (col1=fond, col2 et col3 etant des couleurs distinctes pour les 2 cases).
Donc fonction1 swap col1 et col2
et fonction 2 swap col1 et col3
Si les 2 fonctions sont activées on se retrouve avec un chenillard ou les 3 couleurs se succedent sur chaque case.
De plus comme ca rien ne t'empeche de mettre
$color1 = 0x00ff00
$color2 = 0x000000
$color3 = 0x0c0c0c
$color4 = 0xffffff
pour faire clignoter la premiere en noir et vert, et la seconde en gris et blanc (si je me trompe pas dans mes codes couleur...)
Si vis pacem para bellum
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [R] Timer.tick ??!
OK merci pour tes "lumières", on progresse chaque jours...
Cut, srcipteur du dimanche...désolé !-)
