[R] Aide pour exécution automatique

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Quentin1
Niveau 1
Niveau 1
Messages : 8
Enregistré le : ven. 24 août 2012 10:46
Status : Hors ligne

[R] Aide pour exécution automatique

#1

Message par Quentin1 »

Bonjour !
J'ai un petit problème concernant un script que je voudrais réaliser, j'espère que vous allez pouvoir m'aider.

J'ai un programme qui fait une sauvegarde automatique de la base de donnée d'un salon de coiffure. C'est une petite fenêtre :
- Le titre de la fenêtre ne change pas et reste pareil
- Les boutons ne changent pas et reste pareil.

Pour me dire que la sauvegarde est terminée une phrase s'affiche : "Sauvegarde terminée".
Et je voudrais que quand la Sauvegarde se termine qu'il me ferme le programme.

Voilà ce que j'ai :

Code : Tout sélectionner

ShellExecute ( "Z:\" ) ;Ca me permet de me connecter au réseau car il se déconnecte sinon
 WinWaitActive ( "Z:\" )
  sleep ( 500 )
   Send("!{F4}"); 
   
Run ( "C:\Program Files\xxxx\xxxx\sauvegarde.exe" ) 
 WinWaitActive ( "Sauvegarde" ) ;
 
 sleep ( 500 )
 send ( "{ENTER}" )
Voilà ca me permet d'éxecuter le programme.
Mais je ne sais pas comment le fermer quand la phrase "Sauvegarde terminée" apparait, voici le détail de la phrase :
ID: 263418
Name : lblProgress
Instance : 3
Je précise que cette change au cours du programme, elle n'apparait pas a la fin. Le texte change en fonction de la phase de sauvegarde.
A la fin, le texte change en : "Sauvegarde terminée".
Cette phrase s'affiche dans la même fenêtre

J'espère que c'est clair :?

Cordialement
Modifié en dernier par Quentin1 le ven. 24 août 2012 13:02, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...]Aide pour exécution automatique

#2

Message par mikell »

Les infos que tu donnes sur la fenêtre "sauvegarde" sont insuffisantes
Utilise l'infotool sur le label qui dans cette fenêtre contient la phrase "Sauvegarde terminée" et envoie une copie du "Summary" que tu obtiens
L'idée est de pouvoir utiliser un ControlGetText dans une boucle while
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Quentin1
Niveau 1
Niveau 1
Messages : 8
Enregistré le : ven. 24 août 2012 10:46
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#3

Message par Quentin1 »

Voilà :
>>>> Window <<<<
Title: Sauvegarde
Class: WindowsForms10.Window.8.app3
Position: 1097, 322
Size: 456, 232
Style: 0x16CA0000
ExStyle: 0x00050109
Handle: 0x000B0480

>>>> Control <<<<
Class: WindowsForms10.STATIC.app3
Instance: 3
ClassnameNN: WindowsForms10.STATIC.app33
Name: lblProgress
Merci de votre réponse
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#4

Message par mikell »

Faudrait voir ce que donne un truc comme ça

Code : Tout sélectionner

$wnd = WinGetHandle("Sauvegarde", "")
$label = ControlGetHandle($wnd, "", "[NAME:lblProgress]")
While 1
    WinActivate($wnd)
    If ControlGetText ($wnd, "", $label) = "Sauvegarde terminée" Then Exitloop
    Sleep(200)
Wend
WinClose($wnd)
Et évite les Send dans la mesure du possible ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Quentin1
Niveau 1
Niveau 1
Messages : 8
Enregistré le : ven. 24 août 2012 10:46
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#5

Message par Quentin1 »

Ca fonctionne très bien ! Je vous remercie beaucoup !

J'ai une deuxième question, mais cela devrait être simple :
J'ai un autre programme que j'ouvre à la suite que le premier programme s’éteint.
Ce deuxième programme s'éteint tout seul dès qu'il a fini, je voudrais savoir comme éteindre l'ordinateur quand le deuxième programme a fini.
Disons que le titre du programme est "Sauvegarde 2"

Merci beaucoup de votre aide, c'est génial !

Comment je pourrais remplacer les sends ? Par exemple pour fermer je pourrais faire :
$wnd = WinGetHandle("Z:\", "")
WinClose($wnd)

mais pour faire le "Entrer" ?
Voilà le bouton Sauvegarder du programme :
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#6

Message par mikell »

Regarde dans le fichier d'aide : ProcessExists (et WinExists) et Shutdown :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Quentin1
Niveau 1
Niveau 1
Messages : 8
Enregistré le : ven. 24 août 2012 10:46
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#7

Message par Quentin1 »

J'ai répondu à votre édit plus haut, je vous recontacterai pour vous montrez ce que j'ai fais.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#8

Message par mikell »

Comment je pourrais remplacer les sends ? Par exemple pour fermer je pourrais faire :
$wnd = WinGetHandle("Z:\", "")
WinClose($wnd)
Oui c'est bien ça :wink:
Et pour le bouton

Code : Tout sélectionner

ControlClick ($wnd, "", "[NAME:btnBackup]")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Quentin1
Niveau 1
Niveau 1
Messages : 8
Enregistré le : ven. 24 août 2012 10:46
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#9

Message par Quentin1 »

Voilà voilà, j'ai réussi !!!!
Merci à vous de m'avoir aiguiller et aider, je vous montre le programme complet :

Code : Tout sélectionner

$wnd = WinGetHandle("Sauvegarde", "")
$wnd2 = WinGetHandle("Z:\", "")

ShellExecute ( "Z:\" )
 WinWaitActive ( "Z:\" )
  sleep ( 500 )
  WinClose($wnd2)
   
Run ( "C:\Program Files\xxx\xxx\Backup.exe" ) 
 WinWaitActive ( "Sauvegarde" ) ;
 
 sleep ( 500 )
 ControlClick ($wnd, "", "[NAME:btnBackup]")

While 1
   $wnd = WinGetHandle("Sauvegarde", "")
   $label = ControlGetHandle($wnd, "", "[NAME:lblProgress]")
    WinActivate($wnd)
    If ControlGetText ($wnd, "", $label) = "Sauvegarde terminée" Then Exitloop
    Sleep(200)
Wend
WinClose($wnd)

Run ( "C:\xxx\compresse.exe" ) 
While 1
    If not ProcessExists("compress.exe") Then Shutdown(8)
    Sleep(500)
Wend
 
Modifié en dernier par Quentin1 le ven. 24 août 2012 13:02, modifié 2 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Aide pour exécution automatique

#10

Message par mikell »

Code : Tout sélectionner

While 1
    If not ProcessExists("compress.exe") Then Shutdown(8)
    Sleep(500)
Wend
Un [R] dans le titre du 1er message please :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Quentin1
Niveau 1
Niveau 1
Messages : 8
Enregistré le : ven. 24 août 2012 10:46
Status : Hors ligne

Re: [R] Aide pour exécution automatique

#11

Message par Quentin1 »

Voilà, titre modifié et merci encore pour votre aide.
Je vous donnerai des nouvelles ce soir lors de la sauvegarde quotidienne du soir !!

J'ai actualisé le code par le votre
Répondre