Auteur : jm_zz
Date : 03/05/2007
Citation :
Voilà mon premier petit script très simple avec la bibliothèque internet explorer .
Le but du jeu : entrer automatiquement des identifiants sur le form d'une page web.
Ce qu'il faut connaître c'est le nom du form sur la page web, et le nom des champs nom d'utilisateur et mots de passe.
Je simule après un click sur le bouton submit.
toutes ces variables sont à changer dans la fonction "Func _connectTOP" tout en bas du script.
Le gui encode les mots de passe pour plus de sécurité dans le fichier ini qui les stocke.
Code : Tout sélectionner
; AutoIt 3.0.103 exemple
; 02 Mai 2007 - jm
#include <guiconstants.au3>
#include <ie.au3>
#include <String.au3>
; petite gestion du gui ....
If WinExists("AUTOCONNECT TOPAGRIWEB") Then
WinClose ("AUTOCONNECT TOPAGRIWEB")
Exit
EndIf
If WinExists("AUTOCONNECT TOPAGRIWEB") Then
WinSetOnTop("AUTOCONNECT TOPAGRIWEB", "", 1)
EndIf
GuiCreate("AUTOCONNECT TOPAGRIWEB", 250, 260,(@DesktopWidth-255), (50) , $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
;les variables
; ne pas oublier de créer un fichier auto.ini dans le répertoire du script
$pathini = @WorkingDir & "\auto.ini"
;Mots de passe global pour l'ensemble de l'appli, on s'en sert pour encrypter les informations dans l'ini...
$mdpg = "motsdepasseglobal"
; INPUT
; bouton pour sauvegarder les champs qui sont changé
$sauve = GuiCtrlCreateButton ("sauvegarder",0,190,150,20)
; bouton qui kill toutes les instances de IE
$killie = GuiCtrlCreateButton ("tue IE",90,230,80,20)
$cancelbutton = GuiCtrlCreateButton ("quitter",0,230,80,20)
GUICtrlCreateLabel("Nom utilisateur", 0, 20, 80, 20)
GUICtrlSetBkColor(-1,0x00ff00)
gUICtrlCreateLabel("Mots de passe", 90, 20, 80, 20)
GUICtrlSetBkColor(-1,0x00ff00)
;les couples noms d'utilisateurs mots de passe
$NOM1 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "nom1", "non trouvé"),$mdpg,2) , 0, 40, 80, 20)
$PASS1 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "pass1", "non trouvé"),$mdpg,2), 90, 40, 80, 20,$ES_PASSWORD)
$connect1 = GuiCtrlCreateButton ("GO",180,40,30,20)
$NOM2 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "nom2", "non trouvé"),$mdpg,2) , 0, 70, 80, 20)
$PASS2 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "pass2", "non trouvé"),$mdpg,2), 90,70, 80, 20,$ES_PASSWORD)
$connect2 = GuiCtrlCreateButton ("GO",180,70,30,20)
$NOM3 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "nom3", "non trouvé"),$mdpg,2) , 0, 100, 80, 20)
$PASS3 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "pass3", "non trouvé"),$mdpg,2), 90, 100, 80, 20,$ES_PASSWORD)
$connect3 = GuiCtrlCreateButton ("GO",180,100,30,20)
$NOM4 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "nom4", "non trouvé"),$mdpg,2) , 0, 130, 80, 20)
$PASS4 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "pass4", "non trouvé"),$mdpg,2), 90, 130, 80, 20,$ES_PASSWORD)
$connect4 = GuiCtrlCreateButton ("GO",180,130,30,20)
$NOM5 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "nom5", "non trouvé"),$mdpg,2) , 0, 160, 80, 20)
$PASS5 = GuiCtrlCreateInput( _StringEncrypt (0,IniRead($pathini, "TOPAGRI", "pass5", "non trouvé"),$mdpg,2), 90, 160, 80, 20,$ES_PASSWORD)
$connect5 = GuiCtrlCreateButton ("GO",180,160,30,20)
;gestion de l'interactivité
GuiSetState()
; GUI MESSAGE LOOP
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $cancelbutton
ExitLoop
case $msg = $sauve
IniWrite($pathini, "TOPAGRI", "nom1", _StringEncrypt (1,GUICtrlRead ( $NOM1 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "pass1", _StringEncrypt (1,GUICtrlRead ( $PASS1 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "nom2", _StringEncrypt (1,GUICtrlRead ( $NOM2 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "pass2", _StringEncrypt (1,GUICtrlRead ( $PASS2),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "nom3", _StringEncrypt (1,GUICtrlRead ( $NOM3 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "pass3", _StringEncrypt (1,GUICtrlRead ( $PASS3 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "nom4", _StringEncrypt (1,GUICtrlRead ( $NOM4 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "pass4", _StringEncrypt (1,GUICtrlRead ( $PASS4 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "nom5", _StringEncrypt (1,GUICtrlRead ( $NOM5 ),$mdpg,2))
IniWrite($pathini, "TOPAGRI", "pass5", _StringEncrypt (1,GUICtrlRead ( $PASS5 ),$mdpg,2))
case $msg = $connect1
_connectTOP (GUICtrlRead ( $NOM1 ),GUICtrlRead ( $PASS1 ))
case $msg = $connect2
_connectTOP (GUICtrlRead ( $NOM2 ),GUICtrlRead ( $PASS2 ))
case $msg = $connect3
_connectTOP (GUICtrlRead ( $NOM3 ),GUICtrlRead ( $PASS3 ))
case $msg = $connect4
_connectTOP (GUICtrlRead ( $NOM4 ),GUICtrlRead ( $PASS4 ))
case $msg = $connect5
_connectTOP (GUICtrlRead ( $NOM5 ),GUICtrlRead ( $PASS5 ))
case $msg = $killie
$var = WinList()
For $i = 1 to $var[0][0]
; Only display visble windows that have a title
If $var[$i][0] <> "" Then
$result = StringInStr( $var[$i][0], "Microsoft Internet Explorer")
if $result > 0 then
;MsgBox(0, "Search result:", $result)
; MsgBox(0, "Details", "Title=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1])
winkill($var[$i][0])
EndIf
EndIf
Next
EndSelect
WEnd
GUIDelete()
Exit
; GUI MESSAGE LOOP
GuiSetState()
While GuiGetMsg() <> $GUI_EVENT_CLOSE
WEnd
Func _connectTOP($nom, $pass)
$oIE = _IECreate(0)
; Set Variables
;==============================================
; modifié toutes ces variables selon votre page web...
_IENavigate($oIE, "http://urlduform.com/form.htm")
; get pointers to the login form and username and password fields
;nom du form
$o_form = _IEFormGetObjByName ($oIE, "formu")
;nom du login
$o_name = _IEFormElementGetObjByName($o_form, "login")
;nom du password
$o_to = _IEFormElementGetObjByName($o_form, "password")
;==============================================
; End Veriables
; Set field values and submit the form
_IEFormElementSetValue($o_name, $nom)
_IEFormElementSetValue($o_to, $pass)
;cette méthode marche mal remplacé par la méthode ci-dessous
;_IEFormSubmit($o_form)
;vérifié que le bouton submit, s'appelle bien submit
$oSubmit = _IEGetObjByName ($oIE, "Submit")
_IEAction ($oSubmit, "click")
_IELoadWait ($oIE)
EndFunc