Page 1 sur 1
[..] Faires cohabiter plusieurs boucles via des fonctions
Posté : jeu. 28 mai 2009 16:45
par hagmar
Bonjour à tous,
J’ai 2 scripts simples contenant 1 boucle while wend, chacune s'exécutant à un intervalle de temps donné.
J’aimerais les fusionner, je dois donc passer par des fonctions, comment dois-je les déclarer pour qu’elles continuent de fonctionner simultanément ?
Merci par avance pour votre aide.
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : jeu. 28 mai 2009 18:20
par Iste
Si c'est des boucles "lentes", tu peux soit mettre un compteur dans la boucle et des condition pour executer le code
Code : Tout sélectionner
while 1
Sleep(1000)
$i = $i+1
code_a_executer_toutes_les_secondes()
If $i = 10 Then
$i = 0
code_a_executer_toutes_les_dix_secondes()
EndIf
wend
► Afficher le texteOu bien
Code : Tout sélectionner
while 1
Sleep(100)
$i1 = $i1+1
$i2 = $i2+1
If $i1 = 10 Then
$i1 = 0
code_a_executer_toutes_les_secondes()
EndIf
If $i2 = 15 Then
$i2 = 0
code_a_executer_toutes_les_une_secondes_et_demi()
EndIf
wend
soit passer par la fonction
AdlibEnable()
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : jeu. 28 mai 2009 20:58
par Tlem
Je dirais qu'un bout de code ne ferait pas de mal. Cela éviterait des questions inutiles et des réponses qui peuvent ne pas convenir.
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : ven. 29 mai 2009 09:31
par hagmar
Code : Tout sélectionner
Run(xxx.exe)
WinWaitActivate("xxxx", "")
Global $Paused
HotKeySet( "{PAUSE}", "Pause")
HotKeySet( "{ESC}", "Sortir")
Func Pause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('EN PAUSE',0,0)
WEnd
ToolTip("")
EndFunc
Func Sortir()
Exit 0
EndFunc
While 1
Send("{F5}")
Sleep(xxxx)
Wend
J'ai donc 2 scripts de ce type lancés en simultané, qui Switch entre 2 applications et en rafraichit l’affichage toute les X minutes. Le nombre d’applications à monitorer allant augmenter, je souhaiterais avoir qu’un script.
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : mer. 03 juin 2009 12:47
par Tlem
Dans l'optique de l'évolution de votre menu, je pense que le plus simple serait de faire une GUI ou un menu systray, et de permettre la sélection du programme à rafraîchir (enregistrement de cette info dans un .ini).
Une fois vos programme sélectionner, une boucle vient lire la liste des programmes à rafraîchir et fait ce qu'elle doit faire.
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : mer. 03 juin 2009 13:22
par hagmar
bonne idée, je vais creuser cette option.
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : sam. 06 juin 2009 11:31
par SagePourpre
Code : Tout sélectionner
$refresh = ""
$timer = TimerInit()
$ini = "settings.ini"
$iniload = IniReadSectionNames($ini)
While 1
$time = Round(TimerDiff($timer) / 60000, 0)
For $i = 1 To $iniload
If IsInt($time / $refresh) Then
$refresh = IniRead($ini, $iniload[$i], "refreshtime", "5")
; Code pour rafraîchir l'application
EndIf
Next
Sleep(20000)
WEnd
Voici un canvas d'un script faisant ce que tu décris utilisant un timer et un fichier *.ini
Dans le fichier ini
- chaque section représente un programme
on rajoute refreshtime= "X minutes"
Au début du script, un minuteur (timer) est initialisé.
Chaque 20 secondes, le script lit le fichier ini et pour chaque programmes, il vérifie le temps de rafraîchissement
en comparaison avec le minuteur. Si le résultat du minuteur divisé par le temps de rafraîchissement donne un nombre
entier, cela signifie qu'il est temps d'exécuter le code correspondant.
Simple et efficace...
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : mer. 10 juin 2009 15:58
par hagmar
Vraiment intéressant comme début, c’est vers un script comme cela que je m’orientais.
Actuellement j’ai 3 applications à superviser et chacune ayant 1 ou 2 hotkeys pour rafraichir l’affichage.
Dès que j’arrive à quelque chose qui tourne correctement je le poste ici. A voir après pour une GUI permettant de sélectionner les applis, et donc les scripts à exécuter.
Re: [..] Faires cohabiter plusieurs boucles via des fonctions
Posté : mer. 10 juin 2009 22:47
par SagePourpre
Oui... Le bout de code que j'ai mis en exemple te permettrait de faire cela relativement facilement...
Par contre, une petite précision s'impose.
J'ai fais une petite erreur que je viens de remarquer.
Cette ligne
devrait se trouver avant le If Then et non pas à l'intérieur.
