[R] Effectuer une fonction toutes les sec avec des param

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

[R] Effectuer une fonction toutes les sec avec des param

#1

Message par guitarist »

Bonjour voilà tout est dans le titre je voudrai savoir si il existe une fonction permettant de faire fonctionner une autre fonction avec des param mais toutes les secondes seulement.
Merci de vos reponses
Modifié en dernier par guitarist le ven. 16 oct. 2009 19:24, modifié 1 fois.
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: [..] Effectuer une fonction toutes les sec avec des param

#2

Message par Iste »

baaaah AdlibEnable() !
Par contre on peut pas lui passer de param a chaque foi, faut te débrouiller avec des variables Global :/
Signez ici
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: [..] Effectuer une fonction toutes les sec avec des param

#3

Message par pop45 »

sa depend?
C'est fonction son constante? ou bien elle augmente de 1 tout le temps dans se cas la tu peut faire (je suis pas sur en tout cas je fait comme sa sur ma TI-82)
► Afficher le texte
C'est vraiment du grosomodo et je suis même pas sur que sa marche
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.
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: [..] Effectuer une fonction toutes les sec avec des param

#4

Message par Iste »

Oui ca marcherait (si il a besoin d'incrémenter une variable), mais ya pas besoin de passer par deux fonctions ^^'
De plus, faut pasoublier non plus, comme je l'ai dit au début, d'utiliser des variable globales

pour reprendre ton code

Code : Tout sélectionner

Global $X = 0
adlibenable (1erfonction , 1000)

func 1erfonction ()
$X += 1
mdgbox (0,"",  $X)
enfunc
Signez ici
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [..] Effectuer une fonction toutes les sec avec des param

#5

Message par guitarist »

Non sa ne marche pas car declarer la variable ne sert a rien puisque il s'agit de la variable correspondant un un CTRL pour une GUI
Voila mon bout de script (la GUI que vous verrer est elle-meme une fonction appelée par une autre GUI)
La fontion et la gui qui l'appelle :

Code : Tout sélectionner

[spoiler=]Func _changecouleurguifenetre ($gui)

$Form2 = GUICreate("Option", 566, 109, 155, 193)
$couleur = GUICtrlCreateLabel("", 304, 8, 100, 89)
$Slider1 = GUICtrlCreateSlider(424, 8, 129, 17)
$Slider2 = GUICtrlCreateSlider(424, 40, 129, 17)
$Slider3 = GUICtrlCreateSlider(424, 72, 129, 17)
$B1 = GUICtrlCreateButton ("OK",1,1,290,100)
GUICtrlSetLimit ($Slider1 & $Slider2 & $Slider3,255,0)
GUISetState(@SW_SHOW)
$sec2 = 1

Do
    $nMsg3 = GUIGetMsg()    


_tooltip(304,404,8,97,"Cliquer pour tester la couleur",$Form2)
    Call ("_couleur",$Slider1 , $Slider2,$Slider3,$couleur,$Form2,$B1,$nMsg3,$sec2) 
    
Until $nMsg3 = $GUI_EVENT_CLOSE
FileDelete ("sec.txt")
    GUIDelete ($Form2)
EndFunc 

Func _couleur ($Slider1 , $Slider2 , $Slider3,$labelcouleur,$gui,$B1,$nMsg,$sec2)


    $rouge = Hex(GUICtrlRead($Slider1), 2)
    $vert = Hex(GUICtrlRead($Slider2), 2)   
    $bleu = Hex(GUICtrlRead($Slider3), 2)
    $CodeCouleurHexa = $rouge & $vert & $bleu
    GUICtrlSetBkColor($labelcouleur, "0x" & $CodeCouleurHexa)   


EndFunc 
[/spoiler]

Tout le script :

Code : Tout sélectionner

[spoiler=]#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <date.au3>
#Include <GuiButton.au3>
#include <SliderConstants.au3>



Dim $img = "\google.jpg"
FileInstall ("google.jpg","\google.jpg",1)
Dim $img2 = "\au3.jpg"
FileInstall ("au3.jpg","\au3.jpg",1)

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("SAE", 623, 386, 135, 124)
$Group1 = GUICtrlCreateGroup("Options", 8, 24, 257, 201)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 16, 56, 17, 17)
$Radio1 = GUICtrlCreateRadio("Radio1", 96, 56, 17, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 96, 80, 17, 17)
$Radio3 = GUICtrlCreateRadio("Radio3", 96, 104, 17, 17)
$Radio4 = GUICtrlCreateRadio("Radio4", 96, 128, 17, 17)
$Radio5 = GUICtrlCreateRadio("Radio5", 96, 152, 17, 17)
$Radio6 = GUICtrlCreateRadio("Radio6", 96, 176, 17, 17)
$Radio7 = GUICtrlCreateRadio("Radio7", 96, 200, 17, 17)
$Label1 = GUICtrlCreateLabel("Aide générale", 112, 56, 148, 17)
$Label2 = GUICtrlCreateLabel("Interface Utilisateur (GUI)", 112, 80, 148, 17)
$Label3 = GUICtrlCreateLabel("Active X/COM", 112, 104, 148, 17)
$Label4 = GUICtrlCreateLabel("Exemple de script", 112, 128, 148, 17)
$Label5 = GUICtrlCreateLabel("Fonction et UDF", 112, 152, 148, 17)
$Label6 = GUICtrlCreateLabel("Demande création de Scripts", 112, 176, 148, 17)
$Label7 = GUICtrlCreateLabel("Menu Principal", 112, 200, 148, 17)
$Label8 = GUICtrlCreateLabel("Rechercher", 32, 56, 60, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Go Autoit france", 336, 24, 193, 49, 0)
$Pic1 = GUICtrlCreatePic($img, 350, 150, 150, 100)
$Pic2 = GUICtrlCreatePic ($img2,150,304,50,50)
$Label9 = GUICtrlCreateLabel("Créé par guitarist", 8, 304, 100, 65)
$menu1 = GUICtrlCreateMenu ("Option")
$menuitem1 = GUICtrlCreateMenuItem ("Option de couleur",$menu1)
GUICtrlSetBkColor ($Button1,0x00CBFE)
GUISetState(@SW_SHOW)
GUISetBkColor (35421)
#EndRegion ### END Koda GUI section ###
$ttt = String ("Cliquez pour lancer Google")
$executeimg = String("http://www.google.fr")
While 1
_tooltip (350,500,150,250,$ttt,$Form1)
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
            Exit
    EndIf
    Select
            
    Case $nMsg = $button1 And _IsChecked ($Radio1) 
            _internetautoit ("http://www.autoitscript.fr/forum/viewforum.php?f=3")
        
    Case $nMsg = $button1 And  _IsChecked ($Radio7) 
            _internetautoit ("http://www.autoitscript.fr/forum/index.php")

    Case $nMsg = $button1 And _IsChecked ($Radio2)  
            _internetautoit ("http://www.autoitscript.fr/forum/viewforum.php?f=4")
    
    Case $nMsg = $button1 And _IsChecked ($Radio3) 
            _internetautoit ("http://www.autoitscript.fr/forum/viewforum.php?f=5")
    
    Case $nMsg = $button1 And _IsChecked ($Radio4)
            _internetautoit ("http://www.autoitscript.fr/forum/viewforum.php?f=6")

    Case $nMsg = $button1 And _IsChecked ($Radio5)
            _internetautoit ("http://www.autoitscript.fr/forum/viewforum.php?f=21")

    Case $nMsg = $button1 And _IsChecked ($Radio6) 
            _internetautoit ("http://www.autoitscript.fr/forum/viewforum.php?f=20")

    Case $nMsg = $button1 And _IsChecked ($CheckBox1)  
            _internetautoit ("http://www.autoitscript.fr/forum/search.php")
    
    Case $nMsg = $Pic1
            _internetautoit ($executeimg)
            
    Case $nMsg = $Button1
            MsgBox (1+16,"Erreur","Merci de rentrer une option",5)
    Case $nMsg = $menuitem1
                _changecouleurguifenetre ($Form1)
                        
EndSelect       

WEnd

Func _IsChecked($control)
    Return BitAnd(GUICtrlRead($control),$GUI_CHECKED) = $GUI_CHECKED
EndFunc

Func _tooltip($x1,$x2,$y1,$y2,$texteaff,$Form1)
    
$tabFenetre = WinGetPos($Form1)
$pos = GUIGetCursorInfo ($Form1)
$x = $pos[0]
$y = $pos[1]
    
        If $y >= $y1 And $y <= $y2 Then
            If $x >= $x1 And $x <= $x2 Then
                ToolTip($texteaff, $x + 12 + $tabFenetre[0], $y + 50 + $tabFenetre[1])
            EndIf   
        
    Else 
        ToolTip ("")
    EndIf

endfunc 

Func _internetautoit ($adresse)
$internetgui = GUICreate("Navigateur Perso", 800, 600, 0, 0, $WS_OVERLAPPEDWINDOW)
$lblAdresse = GUICtrlCreateLabel(" Adresse : ", 0, 8)
$txtAdresse = GUICtrlCreateInput("", 60, 5, 700)
$cmdGo = GUICtrlCreateButton(" Go ! ", 760, 5, 40, 22)
$lblHistorique = GUICtrlCreateLabel(" Historique : ", 0, 34)
$listeHistorique = GUICtrlCreateCombo("", 60, 30, 700)
$cmdGo2 = GUICtrlCreateButton(" Go ! ", 760, 30, 40, 22)

$gauche = 50
$cmdPrecedent = GUICtrlCreateButton(" <---- ", 60, 55, 70, 22)
$cmdSuivant = GUICtrlCreateButton(" ----> ", 130, 55, 70, 22)
$cmdArreter = GUICtrlCreateButton(" Arrêter ", 200, 55, 70, 22)
$cmdAcutaliser = GUICtrlCreateButton(" Acutaliser ", 270, 55, 70, 22)
$cmdDemarrage = GUICtrlCreateButton(" Démarrage ", 340, 55, 70, 22)
$cmdRechercher = GUICtrlCreateButton(" Rechercher ", 410, 55, 70, 22)
$cmdEnregistrer = GUICtrlCreateButton(" Enregistrer ", 480, 55, 70, 22)
$cmdImprimer = GUICtrlCreateButton(" Imprimer ", 550, 55, 70, 22)
_IEErrorHandlerRegister()
$ie = _IECreateEmbedded()
$ieobject = GUICtrlCreateObj($ie, 0, 82, 800, 540)
$ancien = ""
$go = 1
_IEAction($ie, "home")

GUISetState()
_IENavigate ($ie,$adresse)
Do
    Sleep(10)
    GUICtrlSetResizing($ieobject, $GUI_DOCKAUTO + $GUI_DOCKBOTTOM + $GUI_DOCKTOP)
    GUICtrlSetResizing($lblAdresse, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE)
    GUICtrlSetResizing($txtAdresse, $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    GUICtrlSetResizing($cmdGo, $GUI_DOCKRIGHT + $GUI_DOCKSIZE + $GUI_DOCKTOP)
    GUICtrlSetResizing($lblHistorique, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE)
    GUICtrlSetResizing($listeHistorique, $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    GUICtrlSetResizing($cmdGo2, $GUI_DOCKRIGHT + $GUI_DOCKSIZE + $GUI_DOCKTOP)
    GUICtrlSetResizing($cmdPrecedent, $GUI_DOCKALL)
    GUICtrlSetResizing($cmdSuivant, $GUI_DOCKALL)
    GUICtrlSetResizing($cmdArreter, $GUI_DOCKALL)
    GUICtrlSetResizing($cmdAcutaliser, $GUI_DOCKALL)
    GUICtrlSetResizing($cmdDemarrage, $GUI_DOCKALL)
    GUICtrlSetResizing($cmdRechercher, $GUI_DOCKALL)
    GUICtrlSetResizing($cmdEnregistrer, $GUI_DOCKALL)
    GUICtrlSetResizing($cmdImprimer, $GUI_DOCKALL)
    $nouveau = _IEPropertyGet($ie, "locationurl")
    
    If $ancien <> $nouveau Then
        GUICtrlSetData($txtAdresse, $nouveau)
        GUICtrlSetData($listeHistorique, _Now() & " => " & $nouveau, _Now() & " => " & $nouveau)
        $ancien = $nouveau
        $go = 0
    EndIf
$nMsg2 = GUIGetMsg ()
    Select
    Case $nMsg2 = $cmdGo
            _IENavigate($ie, GUICtrlRead($txtAdresse), 0)
    Case $nMsg2 = $cmdGo2
        _IENavigate($ie, StringMid(GUICtrlRead($listeHistorique), 24), 0)
    Case $nMsg2 = $cmdPrecedent 
            _IEAction($ie, "back")
            If @error Then
                MsgBox(0, "", "")
            EndIf
    Case $nMsg2 = $cmdSuivant
            _IEAction($ie, "forward")
    Case $nMsg2 = $cmdArreter   
            _IEAction($ie, "stop")
    Case $nMsg2 = $cmdAcutaliser    
            _IEAction($ie, "refresh")
    Case $nMsg2 = $cmdDemarrage 
            _IEAction($ie, "home")
    Case $nMsg2 = $cmdRechercher
            _IENavigate($ie, "http://www.google.fr", 0)
    Case $nMsg2 = $cmdEnregistrer
            _IEAction($ie, "saveas")
    Case $nMsg2 = $cmdImprimer
            _IEAction($ie, "print")

            
EndSelect
    
Until $nMsg2 = $GUI_EVENT_CLOSE
            GUIDelete ($internetgui)
EndFunc
Func _changecouleurguifenetre ($gui)

$Form2 = GUICreate("Option", 566, 109, 155, 193)
$couleur = GUICtrlCreateLabel("", 304, 8, 100, 89)
$Slider1 = GUICtrlCreateSlider(424, 8, 129, 17)
$Slider2 = GUICtrlCreateSlider(424, 40, 129, 17)
$Slider3 = GUICtrlCreateSlider(424, 72, 129, 17)
$B1 = GUICtrlCreateButton ("OK",1,1,290,100)
GUICtrlSetLimit ($Slider1 & $Slider2 & $Slider3,255,0)
GUISetState(@SW_SHOW)
$sec2 = 1

Do
    $nMsg3 = GUIGetMsg()    


_tooltip(304,404,8,97,"Cliquer pour tester la couleur",$Form2)
    Call ("_couleur",$Slider1 , $Slider2,$Slider3,$couleur,$Form2,$B1,$nMsg3,$sec2) 
    
Until $nMsg3 = $GUI_EVENT_CLOSE
FileDelete ("sec.txt")
    GUIDelete ($Form2)
EndFunc 

Func _couleur ($Slider1 , $Slider2 , $Slider3,$labelcouleur,$gui,$B1,$nMsg,$sec2)


    $rouge = Hex(GUICtrlRead($Slider1), 2)
    $vert = Hex(GUICtrlRead($Slider2), 2)   
    $bleu = Hex(GUICtrlRead($Slider3), 2)
    $CodeCouleurHexa = $rouge & $vert & $bleu
    GUICtrlSetBkColor($labelcouleur, "0x" & $CodeCouleurHexa)   


EndFunc    [/spoiler]
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: [..] Effectuer une fonction toutes les sec avec des param

#6

Message par Iste »

guitarist a écrit :Non sa ne marche pas car declarer la variable ne sert a rien puisque il s'agit de la variable correspondant un un CTRL pour une GUI
Et alors ? une variable reste une variable, suffit de la déclarer en global des le début pis ya plus besoin de la passer a la fonction..
Signez ici
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [..] Effectuer une fonction toutes les sec avec des param

#7

Message par guitarist »

HMMMMMMMMM merci de LIRE mon MESSAGE!!!!!!! la variable correspond a un controle et elle est primordiale pour changer la couleure du label!!!!
DONC sa c'est faut :
Et alors ? une variable reste une variable, suffit de la déclarer en global des le début pis ya plus besoin de la passer a la fonction..
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: [..] Effectuer une fonction toutes les sec avec des param

#8

Message par Iste »

Passer une variable correspond a donner la valeur d'une variable local ou global a une variable local de la fonction
soit,

Code : Tout sélectionner

Func fonction()
    Local $variable_local 
    $variable_local = GUICreate("gui")
    Autre_fonction($variable_local)
EndFunc

Func Autre_fonction($Recup)
    GUIDelete($Recup)
EndFunc

Peut aussi s'exprimer sans passage de variable a l'aide de global

Code : Tout sélectionner

Global $Variable_a_passer_n1, $Variable_a_passer_n2, $Variable_a_passer_n3 ;etc

Func fonction()
    Local $variable_local 
    $variable_local = GUICreate("gui")
    $Variable_a_passer_n1 = $variable_local
    Autre_fonction()
EndFunc

Func Autre_fonction()
    GUIDelete($Variable_a_passer_n1)
EndFunc
Bref, je commence a en avoir un petit peu marre de me justifier, PRENEZ le TEMPS de COMPRENDRE les messages des autres, merci (moi aussi je sais mettre des majuscule ;))

Edit : J'ai peu etre tord, mais dans ce cas, expliquez mieux votre probleme
Signez ici
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Effectuer une fonction toutes les sec avec des param

#9

Message par sylvanie »

Bonsoir,
+1 sur les remarques d'Iste

sinon, concernant la fonction "_changecouleurguifenetre", $gui est donné comme paramètre, mais n'est appelé nul par dans le corps de la fonction, il en est de même pour "_couleur" avec les paramètres $gui,$B1,$nMsg,$sec2
C'est parcequ'elles sont en cours de conception ? Car sinon on peut les enlever de l'appel ça aidera pas mal ^^
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [..] Effectuer une fonction toutes les sec avec des param

#10

Message par guitarist »

@Iste escus moi pour ce mouvement d'humeur (de un)
de deux mon probleme ce n'est as la variable mais le faite de pouvoir changer la couleur d'un controle donc que la variable soit egale a 1 a la limite sa sert a rien du tout et dans ton ex si j'ai bien tout vu ce que je dis la est vrai par a port a ce que ta marquer et comme je ne pas fair dan la fonction Guicreate puisque une fonction a deja ete créé^pour en creer une ,enfin (aller voir mon script^^)et bien je repete maquestion : Comment faire pour appeler une fonction toutes es sec avec des param de ctrl de gui a changer voila!!!
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: [..] Effectuer une fonction toutes les sec avec des param

#11

Message par Iste »

Ben, je suis désolé mais je vais me répéter, il suffit de mettre le controlID du control dans une variable global ^^'
Au moment ou tu crée ton control, tu assigne une variable a sont ID ($var = guicrtlcreatetc...), il suffit juste apres, de rendre une global égale a cette variable (Global $var2 = $var), par la suite, dans ta fonction qui arrive toute les seconde, suffit de changer la couleur du control don l'id et contenu dans $var2

En fait, avec un code simplifié mais fonctionnel, je crois qu'on se comprendrez mieux.
Essayez donc de reproduire le problème de facon isolé, car comme le dit sylvanie votre code actuel est plein d'incohérence (donc pas facile a débuger :s)
Une foi fait, si vous bloquez toujours, postez le code "qui ne peut pas marcher", et nous en reparlerons ;)
Signez ici
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Effectuer une fonction toutes les sec avec des param

#12

Message par sylvanie »

est ce que ceci s'approcherait du résultat :
► Afficher le texte
Ou bien est ce que les id de contrôle à changer ne sont pas les mêmes d'un appel à l'autre ? ie : on update un edit, puis on change la taile d'une icone, puis un label après ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [..] Effectuer une fonction toutes les sec avec des param

#13

Message par guitarist »

Merci j'ai ENFIN(!!!!) reussi grace a vous (et vous etes tres tres patients) et voila le script fini :
► Afficher le texte
Répondre