[R] Optimisation de script (Sleep)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
eferlan
Niveau 2
Niveau 2
Messages : 15
Enregistré le : lun. 30 déc. 2013 03:19
Localisation : Corse
Status : Hors ligne

[R] Optimisation de script (Sleep)

#1

Message par eferlan »

Bonjour,

J'ai fait un programme qui commence à devenir assez gros et j'ai un petit soucis, j'utilise des sleep pour mettre le programme en pause.

Code : Tout sélectionner

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
		Case $Button3
		          runtime()
                          While 1
				If TimerDiff($iTimer) >= 60 * 60 * 1000 * 3 Or $incTimer = 1 Then ;60*60 = 3600s (1heure) * 1000 (ms => s) * 3 (3heures)
					<CODE>
						EndIf
					Next
              				<CODE>
					$iTimer = TimerInit()
				Else
					GUICtrlSetData($active, "Attente")
				EndIf
				$incTimer = 0
				Sleep(10)
			WEnd
WEnd
;---------------------------------------------------------------------------------
Func runtime()
	Local $sec, $min, $hr
	$sec = Mod($seconds, 60)
	$min = Mod($seconds / 60, 60)
	$hr = Floor($seconds / 60 ^ 2)
	GUICtrlSetData($Dtimer, StringFormat("%02i:%02i", $hr, $min))
	$seconds += 1
EndFunc   ;==>runtime
J'ai donc abréger le code pour éviter de vous dégouter direct, j'explique mon problème ici j'ai un timer (timerInit) pendant lequel le programme se met en pause pendant 3h après avoir fini sa tâche et recommence 3h après. Pour pas qu'il boucle constamment j'ai utiliser un Sleep() qui me permet de mettre le programme en pause temporairement. Sauf que j'ai aussi un timer qui affiche le temps écoulé (fonction runtime() ) qui elle est mit en pause ducoup elle compte plus.
Mon programme à une petite GUI qui une fois en Sleep() ne fonctionne plus ce qui me pose problème. J'ai donc fais diverse recherches j'ai trouver qu'on pouvait utiliser ça https://www.autoitscript.fr/autoit3/doc ... gister.htm , je suis donc aller chercher sur internet mais l'aide autoit n'est pas complète "Enregistre une fonction AdLib." cela ne m'avance pas beaucoup, j'ai lu sur des sites anglais sans trop tout comprendre qu'on pouvait utiliser aussi OnEventMode mais je suis tout aussi perdu, si quelqu'un pouvait m'éclairer ça serait sympa.

Cordialement, Eferlan
Modifié en dernier par eferlan le mer. 21 juin 2017 12:56, modifié 1 fois.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [] Optimisation de script (Sleep)

#2

Message par walkson »

Bonjour,
Quelque chose comme cela ?
(j'ai mis une MsgBox pour simuler un sleep() )
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 426, 324, 192, 124)
Global $Button1 = GUICtrlCreateButton("Button1", 144, 240, 137, 57)
Global $Input1 = GUICtrlCreateInput("Input1", 104, 64, 177, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
 Global $tps = 0, $aa = 0
 GUIRegisterMsg($WM_TIMER, "WM_TIMER")
 $g_iTimer1 = _Timer_SetTimer($Form1, 500)

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

    Case $Button1
       $aa = 1
       $tps = TimerInit()
      MsgBox(0,"","pause")
      $aa = 0
      $tps = ""
 EndSwitch
WEnd
Func WM_TIMER($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $lParam

    Switch _Timer_GetTimerID($wParam)
        Case $g_iTimer1
         myfunction()
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_TIMER
Func myfunction()
   If $aa = 1 Then
   $tpsE = Round(TimerDiff($tps)/1000,2)
   GUICtrlSetData($Input1,$tpsE)
   Else
   GUICtrlSetData($Input1,0)
   EndIf
EndFunc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
eferlan
Niveau 2
Niveau 2
Messages : 15
Enregistré le : lun. 30 déc. 2013 03:19
Localisation : Corse
Status : Hors ligne

Re: [] Optimisation de script (Sleep)

#3

Message par eferlan »

Bonjour,

Merci, j'ai pas tout compris comment ça fonctionne mais cela fonctionne,

Comment je pourrais faire en sorte que le temps soit afficher en Heures:Minutes, j'ai fait un truc comme ça mais j'arrive pas à l'intégré à votre script.

Code : Tout sélectionner

        Global $seconds
Func test()
        Local $sec, $min, $hr
	$sec = Mod($seconds, 60)
	$min = Mod($seconds / 60, 60)
	$hr = Floor($seconds / 60 ^ 2)
	GUICtrlSetData($Dtimer, StringFormat("%02i:%02i", $hr, $min))
	$seconds += 1
EndFunc
Avatar du membre
eferlan
Niveau 2
Niveau 2
Messages : 15
Enregistré le : lun. 30 déc. 2013 03:19
Localisation : Corse
Status : Hors ligne

Re: [] Optimisation de script (Sleep)

#4

Message par eferlan »

Re-bonjour,

Finalement j'ai reussi pour ce qui passerai par là et qui aurait le même soucis voici la solution :

Code : Tout sélectionner

Func temps()
	Local $sec, $min, $hr
	If $aa = 1 Then
		$tpsE = Round(TimerDiff($tps) / 1000, 2)
		$sec = Mod($tpsE, 60)
	    $min = Mod($tpsE / 60, 60)
	    $hr = Floor($tpsE / 60 ^ 2)
		GUICtrlSetData($Dtimer, StringFormat("%02i:%02i:%02i", $hr, $min, $sec)) ; $Dtimer est un label
;~ 		GUICtrlSetData($Dtimer, $tpsE)
	Else
		GUICtrlSetData($Dtimer, 0)
	EndIf
EndFunc   ;==>temps
J'aurai une autre petite question si vous êtes à l'aise avec IE.au3, j'ai un site web (pas le mien) sur lequel je récupère une statistique. Le problème c'est qu'elle est représentée comme ceci :

Code : Tout sélectionner

<table align="center" border="0" cellspacing="0" cellpadding="0">
		<tbody><tr>
		  <td align="left" height="20">Bienvenue</td>
		</tr>
		<tr>
		  <td align="left" height="33">Sessions :<b><i>9</i></b></td> Je voudrais récupérer la valeur 9
		</tr>
	      </tbody></table>
Je voudrais récupérer la valeur 9 j'ai essayé différentes façons ( _IETagNameGetCollection, _IEFormGetCollection, _IEGetObjectById...) sans résultat je n'arrive pas à me positionné sur cette valeur.

Si vous auriez une idée je suis preneur sinon tant pis, encore merci de votre aide vous m'enlevez une belle épine du pied.

Cordialement, Eferlan
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [] Optimisation de script (Sleep)

#5

Message par walkson »

Vous devriez regarder du coté _IETableGetCollection($oIE)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
eferlan
Niveau 2
Niveau 2
Messages : 15
Enregistré le : lun. 30 déc. 2013 03:19
Localisation : Corse
Status : Hors ligne

Re: [] Optimisation de script (Sleep)

#6

Message par eferlan »

Encore merci, bonne journée
Répondre