[..] Fonction de GUI qui empeche les autres actions

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
astaroth
Niveau 4
Niveau 4
Messages : 65
Enregistré le : dim. 28 oct. 2007 15:22
Status : Hors ligne

[..] Fonction de GUI qui empeche les autres actions

#1

Message par astaroth »

Bonjour,

Voila je voudrais integrer une partie d'un script dans un autre mais quand je le fait cela bloque mes autre actions (je ne peut plus cliqué sur le Label de ma GUI.

Je voudrais mettre:

Code : Tout sélectionner

$oIE = _IECreate ($url3,0 ,0)
            If ($url3 <> $url4) Or (Sleep(10000)) Then
                 $retour = MsgBox ( 4+32, "Erreur", "Continuer?")                
               if $retour = 6 Then
                     Run(@ComSpec & " /c start file:" & $url, "", @SW_HIDE)
                     _IEQuit ($oIE)
                  Else
                          _IEQuit ($oIE)
                EndIf
                   _IELinkClickByText ($oIE, "cliquer pas la")
                    SplashOff()
                   Sleep (1000)
                   _IEAction ($oIE, "visible")
            EndIf
Dans:

Code : Tout sélectionner

#include <IE.au3>
#NoTrayIcon
#include <GUIConstants.au3>

$Image2 = "\Patientez.jpg"
 
$url = "http://www.Blabla.com/"
$url3 = "http://www.1234.fr"
$url4 = "http://www.1234.fr"


GUICreate("Patientez", 480, 350)
GUICtrlCreatePic(@TempDir & $Image2, 0, 0, 480, 350, $SS_CENTERIMAGE)
GUISetBkColor(0x000000)

GUISetFont(10, 50, 1, "Comic Sans MS")

GUICtrlCreateLabel("Label rouge", 250, 270, 200, 25, $BS_CENTER)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT )
GUICtrlSetColor(-1, 0xFFFFFF)

GUISetFont(14, 800, 1, "Comic Sans MS")

$Button_1 = GUICtrlCreateLabel("Accès", 260, 320, 120,25, $BS_CENTER)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT )
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetCursor(-1, 0)

GUISetState()


While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Button_1
            Run(@ComSpec & " /c start file:" & $url, "", @SW_HIDE)
            ExitLoop
    EndSelect
WEnd
Si quelqu'un a une solution pour que, lorsque la GUI s'ouvre (le 2iem script donc) le premier script s'execute automatiquement (par defaut) et lorsque je click sur le label le premier script s'arrette et le "While" s'execute normalement (c'est a dire qu'il ouvre le site en question et ferme le script). :)

Merci
Modifié en dernier par astaroth le sam. 23 févr. 2008 17:29, modifié 2 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [...] Fonction de GUI qui empeche les autres actions

#2

Message par ani »

je comprend pas :o

dans le premier code, on voit des splashoff() mais...ou sont les splash ? pour integrer le bout de code dans le second, faut juste faire ... l'action est défini sur le $bouton_1 ?

dans le second code.
$msg = $GUI_EVENT_CLOSE est noté deux fois , une seul fois suffit ;)
retire le if $msg = $GUI_EVENT_CLOSE then exitloop
astaroth
Niveau 4
Niveau 4
Messages : 65
Enregistré le : dim. 28 oct. 2007 15:22
Status : Hors ligne

Re: [...] Fonction de GUI qui empeche les autres actions

#3

Message par astaroth »

les splash c'estait des p'tit residu oublier ^^

En fait il faut que quand la GUI s'ouvre il créer une page IE en silencieux, s'il y a une erreur la msg box s'ouvre et selon la réponse renvoi ver une page ou quitte la GUI (code 1 en fait), et lorsqu'on click sur le $bouton_1 toute actions du code 1 s'arretent et laisse place a ce que le bouton doit faire.. (j'ai du mal a expliquer ^^)

"faut juste faire ... "

C'est a dire?

Merci
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Fonction de GUI qui empeche les autres actions

#4

Message par tolf »

Déjà, le sleep dans la ligne suivante n'est pas une bonne idée :

Code : Tout sélectionner

If ($url3 <> $url4) Or (Sleep(10000)) Then
car le script ne comprendra pas qu'il faut afficher le message d'erreur aubout de 10 secondes. Tu devrais utiliser un TimerInit() / TimerDiff() comme ceci :

Code : Tout sélectionner

$time1 = TimerInit()
If TimerDiff($time1) > 10000 Then
Mais de toute façon, cela me parait difficile de tester le temps mis pour la fonction "_IECreate" (il faudrait placer le test de temps à l'intérieur de la fonction).

Désolé si cela ne répond pas au problème principal (je n'ai pas testé le script) mais déjà, regarde la question du sleep.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Répondre