[..] Creer minuteur simple

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
tuyn00txa
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 17 févr. 2010 23:50
Status : Hors ligne

[..] Creer minuteur simple

#1

Message par tuyn00txa »

Bonjour, comment créer un minuteur simple sans passer par l'interface GUI , de type "ToolTip"... ?

Par exemple aller sur une page internet et après le chargement, effectuer des actions sur cette page tout en attendant 20 secondes (le minuteur se trouvant en haut sur la fenêtre).


Merci pour votre aide
Avatar du membre
Stigmate
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 26 déc. 2008 11:54
Status : Hors ligne

Re: [..] Creer minuteur simple

#2

Message par Stigmate »

Bonjours, et bien vous n'avez pas besoin de passer par une GUI pour avoir un Timer dans votre programme, mais si vous désirez quant même le visualiser sans passer par votre propre GUI, essayez donc quelque chose comme sa :

Code : Tout sélectionner


$Minuteur = 20

$Init = TimerInit ()
$Compteur = 0
WinWait ("Google - Mozilla Firefox")
$TitreActuel = WinGetTitle("[ACTIVE]")

While $Minuteur <> 0
    
$Diff = TimerDiff ($Init)

; Les différentes actions du programme...

If $Diff >= ($Compteur + 1000) Then
 WinSetTitle ( $TitreActuel, "", $TitreActuel & "  [" & $Minuteur & "]" )
 $Minuteur = $Minuteur - 1
 $Compteur = $Diff
EndIf

WEnd

 
Pour cet exemple ouvrez Firefox et regardez dans la barre de titre si cela vous conviens =)
(Si vous n'avez pas Firefox remplacer le "Google - Mozilla Firefox" par le nom d'une fenêtre de votre choix et ouvrez cette fenêtre).

Adaptez tous sa à votre guise.
tuyn00txa
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 17 févr. 2010 23:50
Status : Hors ligne

Re: [..] Creer minuteur simple

#3

Message par tuyn00txa »

C'est exactement ça que je cherchais merci Stigmate :D ...mais par contre le processeur n'aime pas trop... :?


Peut être y aurait t'il une simplification ?

Ou sinon je passerais par l'interface GUI
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Creer minuteur simple

#4

Message par pop45 »

Mettez un sleep dans la boucle(même un sleep (1) c'est bien)
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
tuyn00txa
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 17 févr. 2010 23:50
Status : Hors ligne

Re: [..] Creer minuteur simple

#5

Message par tuyn00txa »

Merci, ça marche :D
tuyn00txa
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 17 févr. 2010 23:50
Status : Hors ligne

Re: [..] Creer minuteur simple

#6

Message par tuyn00txa »

Il reste tout de même un petit problème que je n'arrive pas à résoudre... :?

J'ai dans les actions à effectuer des "sleep(3000)"... ce qui me fausse le minuteur car il doit attendre à ce moment là 3 secondes pour décrémenter 1 seconde dans le minuteur... :|
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Creer minuteur simple

#7

Message par Tlem »

Très étonnant si vous utilisez la fonction Timer !!!
Un bout de code permettrait plus de compréhension.
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é".
tuyn00txa
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 17 févr. 2010 23:50
Status : Hors ligne

Re: [..] Creer minuteur simple

#8

Message par tuyn00txa »

Je veux en faite effectuer plusieurs actions (pouvant durer une dizaine de secondes) jusqu'en que le minuteur arrive à 0.
Sur ce code, j'ai mis comme action d'attendre, du coup le minuteur ne décrémente pas toutes les secondes mais toutes les 4 secondes...

Code : Tout sélectionner

$Minuteur = 10
$Init = TimerInit ()
$Compteur = 0

While $Minuteur <> 0

$Diff = TimerDiff ($Init)
sleep(1)

sleep (3000)   ; action à effectuer


If $Diff >= ($Compteur + 1000) Then
 ToolTip ($Minuteur,1120,0)
 $Minuteur = $Minuteur - 1
 $Compteur = $Diff
EndIf

WEnd
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Creer minuteur simple

#9

Message par pop45 »

Ben vous avez un time diff de lancer alors utiliser le :D

Recupere la dates et dite lui de ne plus rien faire tan qu'il ne c'est pas ecouler 3 seconde

Et malheureusement je ne peut pas vous aider car je ne connais rien a cette fonction (jamais utiliser)
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
tuyn00txa
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 17 févr. 2010 23:50
Status : Hors ligne

Re: [..] Creer minuteur simple

#10

Message par tuyn00txa »

Mais mon temps pendant laquelle se déroule les actions est supposé inconnu. Ici le "sleep(300)" était juste un exemple... Faudrait-il à ce moment là utiliser une fonction à part minuteur() qui est lancé grâce à "AdlibRegister" et qui se lance dès que ces actions commencent?

:?


Merci pour votre aide :)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Creer minuteur simple

#11

Message par Iste »

Si le temps d'execution de vos actions est plus long que le temps d'attente, en effet, vous aurez un probleme..
Lancez le code dans un nouveau process, c'est la solution la plus simple.
Signez ici
tuyn00txa
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 17 févr. 2010 23:50
Status : Hors ligne

Re: [..] Creer minuteur simple

#12

Message par tuyn00txa »

Le problème reste identique avec un nouveau process pour moi (il est possible que je me trompe...) :(
Voici le code pour le programme principal (sachant que minuteur.exe "se ferme" dès que le minuteur arrive à 0)

Code : Tout sélectionner

ShellExecute("minuteur.exe")
$timer=ProcessExists("minuteur.exe")
while ($timer ==1)

; mon programme

Wend
 
Je voudrais pour le rappeler, éxecuter certains actions jusqu'en que mon minuteur arrive à 0 ,c'est à dire que mon minuteur en passant à 0, arrêterait les actions en cours même si ils n'ont pas eu le temps de finir.

Merci encore
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Creer minuteur simple

#13

Message par Tlem »

Pourquoi faire compliqué ???
► 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é".
Avatar du membre
Stigmate
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 26 déc. 2008 11:54
Status : Hors ligne

Re: [..] Creer minuteur simple

#14

Message par Stigmate »

Oops, j'avais oublié le petit Sleep pour le cœur du pauvre PC :)

Maintenant que votre problème est un peu moins flou, et pour rester dans la même ligné que le premier code, je peu vous proposer de faire comme ceci :

Code : Tout sélectionner

$Minuteur = 20
$Compteur = 0

$Init = TimerInit ()
WinWaitActive ("Google - Mozilla Firefox")
$TitreActuel = WinGetTitle("[ACTIVE]")

While $Minuteur <> 0
   
Timer()

ToolTip ("Attente 1") ; Action du programme.
Pause(3000)
ToolTip ("Attente 2") ; Action du programme.
Pause(3000)
; ect...

Sleep (10)
WEnd


Func Timer()
$Diff = TimerDiff ($Init)
If $Diff >= ($Compteur + 1000) Then
 WinSetTitle ( $TitreActuel, "", $TitreActuel & "  [" & $Minuteur & "]" )
 $Minuteur = $Minuteur - 1
 $Compteur = $Diff
EndIf
If $Minuteur < 0 Then Exit
EndFunc

Func Pause ($Temps)
$Diff2 = TimerDiff ($Init)
Do
$Diff3 = TimerDiff ($Init)  
Sleep (1)
Timer()
Until $Diff3 >= ($Diff2 + $Temps)
EndFunc
Vous pouvez ainsi utiliser la fonction pause quant vous le souhaitez. :)
Je ne suis pas du tout le plus expérimenté alors il y a certainement mieux à faire (Etudiez la solution de Tlem !) mais sa fonctionne :o

Edit : Oops, - maintenant ! - sa fonctionne, j'ai rajouté ceci : "If $Minuteur < 0 Then Exit", sinon le minuteur continuait en dessous de 0 :P
Répondre