Page 1 sur 1

[R] Aide pour exécution automatique

Posté : ven. 24 août 2012 11:15
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

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

Posté : ven. 24 août 2012 11:40
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

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

Posté : ven. 24 août 2012 11:40
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

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

Posté : ven. 24 août 2012 11:54
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 ^^

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

Posté : ven. 24 août 2012 12:07
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

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

Posté : ven. 24 août 2012 12:09
par mikell
Regarde dans le fichier d'aide : ProcessExists (et WinExists) et Shutdown :wink:

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

Posté : ven. 24 août 2012 12:10
par Quentin1
J'ai répondu à votre édit plus haut, je vous recontacterai pour vous montrez ce que j'ai fais.

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

Posté : ven. 24 août 2012 12:15
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]")

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

Posté : ven. 24 août 2012 12:45
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
 

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

Posté : ven. 24 août 2012 12:55
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:

Re: [R] Aide pour exécution automatique

Posté : ven. 24 août 2012 13:03
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