Page 1 sur 1

[R] Fermeture automatique d'un programme

Posté : dim. 02 sept. 2007 20:07
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)

Posté : dim. 02 sept. 2007 21:27
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)

Posté : dim. 02 sept. 2007 23:32
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.

Posté : lun. 03 sept. 2007 00:01
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

Posté : lun. 03 sept. 2007 07:42
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 :?:

Posté : lun. 03 sept. 2007 21:18
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 )

Posté : mar. 04 sept. 2007 08:58
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"

Posté : mar. 04 sept. 2007 21:23
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 ^^' )

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

Posté : mer. 05 sept. 2007 23:09
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.