[R] Fermeture automatique d'un programme

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
dann
Niveau 1
Niveau 1
Messages : 6
Enregistré le : dim. 02 sept. 2007 08:07
Localisation : Bordeaux
Status : Hors ligne

[R] Fermeture automatique d'un programme

#1

Message par dann »

Bonjour, Je me suis fait un script pour me connecter sur un site professionnel. Le script fonctionne bien pour la connexion, mais j'aimerais, rendre la deconnexion de l'extranet automatique à la fermeture d'internet explorer. Je pense que "ProcessClose" est une partie de la solution mais je ne trouve pas comment l'utiliser dans mon script (c'est mon premier) :
Merci d'avance pour votre aide

Code : Tout sélectionner

Run("C:\Program Files\Nortel Networks\extranet.exe")
WinWaitActive("Contivity VPN Client")
AutoItSetOption("SendKeyDelay", 30)

;écrire le mot de passe 
Send("456789{ENTER}") 

;Attendre ouverture login 
Sleep(10600)

#include <IE>
$oIE = _IECreate ("http://xxxxxxxxxxxxxxxx/")
$oForm = _IEFormGetObjByName ($oIE, "LoginForm")
$oText = _IEFormElementGetObjByName ($oForm, "Num")

;ecrire le code 
_IEFormElementSetValue ($oText, "012345")

$oText = _IEFormElementGetObjByName ($oForm, "Password")

;ecrire mot de passe
_IEFormElementSetValue ($oText, "XXXX")

_IEFormSubmit ($oForm)
Modifié en dernier par dann le mer. 05 sept. 2007 23:28, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#2

Message par sylvanie »

je pense que tu n'as qu'à stocker le pid lors du lancement de ton client vpn, dès le début :

Code : Tout sélectionner

$pid=Run("C:\Program Files\Nortel Networks\extranet.exe") 

... reste du script ....

processclose($pid)
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
dann
Niveau 1
Niveau 1
Messages : 6
Enregistré le : dim. 02 sept. 2007 08:07
Localisation : Bordeaux
Status : Hors ligne

#3

Message par dann »

sylvanie a écrit :je pense que tu n'as qu'à stocker le pid lors du lancement de ton client vpn, dès le début :

Code : Tout sélectionner

$pid=Run("C:\Program Files\Nortel Networks\extranet.exe") 

... reste du script ....

processclose($pid)
Merci pour ta réponse rapide, mais tel quel, l'extranet se ferme dès le début de la connexion. Moi je souhaite que la deconnexion se fasse après fermeture d'internet explorer. Je pense que j'ai besoin d'une condition mais je n'arrive pas à la rédiger.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#4

Message par ani »

je ne suis pas trop sure, enfin j'essaie de faire avancer le script ;)

Code : Tout sélectionner

If ProcessWaitClose($oIE) Then
ProcessClose($PID)
EndIf
en français
IF = si
Then = alors
EndIf = fermeture de la condition (fin de procedure)

Si le processus IE se ferme alors fermeture du processus($pid)

j'ai utilisé le wait (voir, regarder,observer)
observer la fermeture du processus ? je sais pas si c'est bon
dann
Niveau 1
Niveau 1
Messages : 6
Enregistré le : dim. 02 sept. 2007 08:07
Localisation : Bordeaux
Status : Hors ligne

#5

Message par dann »

ani a écrit :je ne suis pas trop sure, enfin j'essaie de faire avancer le script ;)

Code : Tout sélectionner

If ProcessWaitClose($oIE) Then
ProcessClose($PID)
EndIf
en français
IF = si
Then = alors
EndIf = fermeture de la condition (fin de procedure)

Si le processus IE se ferme alors fermeture du processus($pid)

j'ai utilisé le wait (voir, regarder,observer)
observer la fermeture du processus ? je sais pas si c'est bon
Merci pour ta réponse ani, mais j'ai toujours un problème de deconnexion avant la fermeture d'internet explorer :?:
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#6

Message par sylvanie »

dann a écrit : Merci pour ta réponse rapide, mais tel quel, l'extranet se ferme dès le début de la connexion. Moi je souhaite que la deconnexion se fasse après fermeture d'internet explorer. Je pense que j'ai besoin d'une condition mais je n'arrive pas à la rédiger.
c'est normal, il faut que tu fasses une boucle d'attente sur le process IE.
mais pour ceci il te faut son pid.
Je ne sais pas récupérer le pid depuis un _IEcreate, mais je sais créer une instance d'IE puis y attaché un Oie via _IEattach.puis il ne reste plus qu'à attendre la fin du process puisqu'on connait le pid :

Code : Tout sélectionner

 $pid_extranet=Run ( "C:\Program Files\Nortel Networks\extranet.exe" ) 
WinWaitActive ( "Contivity VPN Client" ) 
AutoItSetOption ( "SendKeyDelay" , 30 ) 
AutoItSetOption ( "WinTitleMatchMode" , 2 ) 
;écrire le mot de passe 
Send ( "456789{ENTER}" ) 
;Attendre ouverture login 
Sleep ( 10600 ) 
#include <IE.au3> 
$pid_ie=Run ( '"'&@ProgramFilesDir&'\Internet Explorer\iexplore.exe"' ) 
Sleep ( 3000 ) 
$title=WinGetTitle ( "" ) 
$oIE =_IEAttach ( $title , "embedded" ) 
_IENavigate ( $oIE , "http://xxxxxxxxx/" ) 
$oForm = _IEFormGetObjByName ( $oIE , "LoginForm" ) 
$oText = _IEFormElementGetObjByName ( $oForm , "Num" ) 
;ecrire le code 
_IEFormElementSetValue ( $oText , "012345" ) 
$oText = _IEFormElementGetObjByName ( $oForm , "Password" ) 
;ecrire mot de passe 
_IEFormElementSetValue ( $oText , "XXXX" ) 
_IEFormSubmit ( $oForm ) 
ProcessWaitClose ( $pid_ie ) 
ProcessClose ( $pid_extranet )
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
dann
Niveau 1
Niveau 1
Messages : 6
Enregistré le : dim. 02 sept. 2007 08:07
Localisation : Bordeaux
Status : Hors ligne

#7

Message par dann »

sylvanie a écrit :
dann a écrit : Merci pour ta réponse rapide, mais tel quel, l'extranet se ferme dès le début de la connexion. Moi je souhaite que la deconnexion se fasse après fermeture d'internet explorer. Je pense que j'ai besoin d'une condition mais je n'arrive pas à la rédiger.
c'est normal, il faut que tu fasses une boucle d'attente sur le process IE.
mais pour ceci il te faut son pid.
Je ne sais pas récupérer le pid depuis un _IEcreate, mais je sais créer une instance d'IE puis y attaché un Oie via _IEattach.puis il ne reste plus qu'à attendre la fin du process puisqu'on connait le pid :

Code : Tout sélectionner

$pid_extranet=Run ( "C:\Program Files\Nortel Networks\extranet.exe" ) 
WinWaitActive ( "Contivity VPN Client" ) 
AutoItSetOption ( "SendKeyDelay" , 30 ) 
AutoItSetOption ( "WinTitleMatchMode" , 2 ) 
;écrire le mot de passe
Send ( "456789{ENTER}" ) 
;Attendre ouverture login
Sleep ( 10600 ) 
#include <IE>
$pid_ie=Run ( '"'&@ProgramFilesDir&'\Internet Explorer\iexplore.exe"' ) 
Sleep ( 3000 ) 
$title=WinGetTitle ( "" ) 
$oIE =_IEAttach ( $title , "embedded" ) 
_IENavigate ( $oIE , "http://xxxxxxxxx/" ) 
$oForm = _IEFormGetObjByName ( $oIE , "LoginForm" ) 
$oText = _IEFormElementGetObjByName ( $oForm , "Num" ) 
;ecrire le code
_IEFormElementSetValue ( $oText , "012345" ) 
$oText = _IEFormElementGetObjByName ( $oForm , "Password" ) 
;ecrire mot de passe
_IEFormElementSetValue ( $oText , "XXXX" ) 
_IEFormSubmit ( $oForm ) 
ProcessWaitClose ( $pid_ie ) 
ProcessClose ( $pid_extranet )[/autoit]
Merci sylvanie :D
La deconnexion fonctionne bien à la fermeture d'IE, mais la page de navigation "extranet" ne s'affiche pas.
En fait au départ, après ouverture de l'extranet le script tente d'afficher ma page d'accueil habituelle(google adresse ip 209.85.135.103) et comme je suis sous vpn l'affichage ne peut pas se faire et cela bloque le bon deroulement du script et empêche l'ouverture de la page d'accueil "extranet"
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#8

Message par sylvanie »

et en mettant ta page d'accueil à blank, ça devrait ne plus le faire non ?

sinon essaie ceci

Code : Tout sélectionner

$oIE = _IECreate ( " http://xxxxxx/ " ) 
$pid_ie = WinGetProcess ( " " ) 
ConsoleWrite ( " oie = " &IsObj ( $oIE ) &@CRLF ) 
....traitements 
ProcessWaitClose ( $pid_ie ) 
ProcessClose ( $pid_extranet )  
En gros on passe par Ie_create, et on récuperpère le pid tout de suite après la création de la fenêtre (attention si une fenêtre se glisse entre les deux instructions ^^' )
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
dann
Niveau 1
Niveau 1
Messages : 6
Enregistré le : dim. 02 sept. 2007 08:07
Localisation : Bordeaux
Status : Hors ligne

[R]&[M] Fermeture automatique d'un programme

#9

Message par dann »

sylvanie a écrit :et en mettant ta page d'accueil à blank, ça devrait ne plus le faire non ?

sinon essaie ceci

Code : Tout sélectionner

$oIE = _IECreate ( " http://xxxxxx/ " ) 
$pid_ie = WinGetProcess ( " " ) 
ConsoleWrite ( " oie = " &IsObj ( $oIE ) &@CRLF ) 
....traitements
ProcessWaitClose ( $pid_ie ) 
ProcessClose ( $pid_extranet )
En gros on passe par Ie_create, et on récuperpère le pid tout de suite après la création de la fenêtre (attention si une fenêtre se glisse entre les deux instructions ^^' )
:lol: Cela fonctionne très bien en récupérant le pid tout de suite après la création de la fenêtre.
Merci Sylvanie pour la solution et aussi pour tes explications très claires. Merci à Ani pour sa participation.
Répondre