[R] Détécter presence bouton

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
polo46
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 18 nov. 2009 11:34
Status : Hors ligne

[R] Détécter presence bouton

#1

Message par polo46 »

Bonjour
Je suis actuellement en train de creer un installateur automatique de Sage, dans le cadre de mon entreprise.

Pour le moment, il ressemble à ce code avec des sleep, des WinWait, ControlClick:
http://www.autoitscript.fr/forum/viewto ... tus#p22319.

install_sql.au3:

Code : Tout sélectionner

Func install_sql()

    $fenetre = "Sage 100 pour SQL Server poste Client - InstallShield Wizard"

    Run($repertoire_install & "clientsql\setup.exe")
    WinWaitActive($fenetre)
    Sleep(2000)
    ControlClick($fenetre, "", "&Suivant >")
    Sleep(2000)
    Send("srv-appli")
    ControlClick($fenetre, "", "&Suivant >")
    Sleep(60000)
    Send("{RIGHT}")
    ControlClick($fenetre, "", "Terminer")

EndFunc   ;==>install_sql

 
setup.au3: (code trés simplifier)

Code : Tout sélectionner

#include <install_sql.au3>
#include <install.au3>
install_sql()
reboot()

install1()
reboot()

install2()
reboot()
 


Seulement, cette installation est basé sur un timer, et suivant la rapidité des pc, sa fonctionne bien, ou des fois le script se lance, mais la première étape de l'install met plus de temps et decal tout.
Pour peut que un utilisateur posséde un logiciel qui se lance automatiquement, après mon programme, sa foire tout aussi

Au finale, j'ai trouvé une solution, simple qui me parait correct:
Comment je pourrait détecter que le bouton "&Suivant >" de la fenêtre est bien présent? afin continuer le déroulement de mon programme?

En vous remerciant,
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Détécter presence bouton

#2

Message par sylvanie »

pour commencer, il faudrai récupérer l'ID du bouton grâce à l'outil au3info (dsipo dans scite, menu tools si le fichier en cours d'édition est un .au3)

puis essayer de détecter le bouton grâce à ControlCommand ( "title", "text", controlID, "command" [, "option"] )
avec command = "IsVisible"

puis en cas de succès compléter avec le test (même commande) "IsEnabled"

Enfin pour avoir coder des scripts de ce ce type je conseil fortement entre chaque action (send, click ...) de faire un winactivate de la fenêtre visée, afin d'éviter le cas embêtant de la fenêtre parasite qui viens s'intercaller
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
polo46
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 18 nov. 2009 11:34
Status : Hors ligne

[R] Détécter presence bouton

#3

Message par polo46 »

Merci beaucoup sa marche :)

Ci dessous une fonction qui indique l'état du bouton dans une fenêtre, quand elle est active.


Utile pour les installshield ou autre install automatique,

Code : Tout sélectionner

Func verif_win($fenetre, $controleid="", $button="&Suivant >")
    WinWaitActive($fenetre)
    $suivant = ControlCommand ( $fenetre, $button, $controleid, "IsVisible" )
    $actif=ControlCommand ( $fenetre, $button, $controleid, "IsEnabled" )
    If ($suivant AND $actif) Then
        Return True
    Else
        Return False
    EndIf
EndFunc


MsgBox(0,"test",verif_win("Nom_de_la_fenetre"))
 
@+
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Détécter presence bouton

#4

Message par sylvanie »

Bravo pour le respect global des règles de présentation pour un premier post ^^
Il manquait juste le [R] à mettre sur le premier post pour qu'il se répercute sur le reste.
Du coups je le fait pour souligner l'effort :D
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre