stopsoftwarepatents.eu petition banner

AutoIt Français

Communauté Francophone AutoIt
* Connexion   * M’enregistrer

Heures au format UTC + 1 heure


Règles du forum

Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
Hors ligne
Niveau 2
Niveau 2
Inscription: Mer 17 Fév 2010 23:50
Messages: 18

Dernier message
Sujet du message: [..] Creer minuteur simple
MessagePosté: Mar 09 Mar 2010 01:08 

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

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Avatar de l’utilisateur
Inscription: Ven 26 Déc 2008 11:54
Messages: 67
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mar 09 Mar 2010 10:49 

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


$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.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Mer 17 Fév 2010 23:50
Messages: 18
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mar 09 Mar 2010 21:31 

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

 Profil  
 
AutoIt Français
Hors ligne
Niveau 5
Niveau 5
Avatar de l’utilisateur
Inscription: Dim 30 Aoû 2009 15:18
Messages: 195
Age: 15
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mar 09 Mar 2010 22:05 

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, dis bonjour a ton père,

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Mer 17 Fév 2010 23:50
Messages: 18
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mar 09 Mar 2010 22:30 

Merci, ça marche :D

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Mer 17 Fév 2010 23:50
Messages: 18
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mar 09 Mar 2010 23:00 

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... :|

 Profil  
 
AutoIt Français
Hors ligne
Site Admin
Site Admin
Avatar de l’utilisateur
Inscription: Ven 20 Juil 2007 20:00
Messages: 5596
Age: 43

Localisation: Bordeaux
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 02:05 

Très étonnant si vous utilisez la fonction Timer !!!
Un bout de code permettrait plus de compréhension.



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 ...

Salutations.
Thierry

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Mer 17 Fév 2010 23:50
Messages: 18
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 13:33 

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

$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

 Profil  
 
AutoIt Français
Hors ligne
Niveau 5
Niveau 5
Avatar de l’utilisateur
Inscription: Dim 30 Aoû 2009 15:18
Messages: 195
Age: 15
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 14:18 

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, dis bonjour a ton père,

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Mer 17 Fév 2010 23:50
Messages: 18
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 14:32 

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 :)

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Avatar de l’utilisateur
Inscription: Jeu 04 Déc 2008 14:21
Messages: 1028
Age: 22

Localisation: 76
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 15:11 

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

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Mer 17 Fév 2010 23:50
Messages: 18
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 15:43 

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

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

 Profil  
 
AutoIt Français
Hors ligne
Site Admin
Site Admin
Avatar de l’utilisateur
Inscription: Ven 20 Juil 2007 20:00
Messages: 5596
Age: 43

Localisation: Bordeaux
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 16:08 

Pourquoi faire compliqué ???
Spoiler pour :
Code
Global $Minuteur = 10000 ; Temps en millisecondes
Global $Init = TimerInit () ; on démarre le timer ici.

AdlibRegister("TimerControl", 250) ; Appel la fonction TimerControl() toutes les 250ms

; La boucle d'attente.
While 1
    sleep (3000)   ; action à effectuer
WEnd

Func TimerControl()
    Local $Diff = TimerDiff ($Init) ; On récupère le temps depuis le lancement du timer.
    If $Diff >= $Minuteur Then ; On vérifie si le temps passé est supérieur à la variable $Minuteur.
        MsgBox(0, "", "Il s'est écoulé " & int($Diff/1000) & " secondes depuis le début du script" )
        Exit ; On sort ...
    EndIf
EndFunc



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 ...

Salutations.
Thierry

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Avatar de l’utilisateur
Inscription: Ven 26 Déc 2008 11:54
Messages: 67

Haut
Sujet du message: Re: [..] Creer minuteur simple
MessagePosté: Mer 10 Mar 2010 17:55 

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

$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

 Profil  
 
Afficher les messages postés depuis:  Trier par  

Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Utilisateurs parcourant ce forum: Exabot [Bot], Google [Bot] et 6 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  

AutoIt Français
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Sniper_Blue phpBB-3.0 Style © 2007 Sniper_E
Traduction par: phpBB-fr.com