[T] Connection automatique sur form + gestion ini et Windows

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

[T] Connection automatique sur form + gestion ini et Windows

#1

Message par Tlem »

Message transféré de l'ancien forum.
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
alexelence
Niveau 1
Niveau 1
Messages : 1
Enregistré le : jeu. 01 avr. 2010 19:26
Status : Hors ligne

Re: [T] Connection automatique sur form + gestion ini et Windows

#2

Message par alexelence »

Bonsoir ^^

Je sais que ce post date mais je repond quand meme car j'ai deja essayer d'automatiser des log avec pass et autres mais jamais je n'ai réussi ...

Pour les parametre form obj et get obj en mettant loggin et mdp pour moi ca ne passais pas et meme en visualisant la source de la page et en y retransrivant le nom des champs ca ne passais pas ... comment je pourrai trouver la synthaxe exacte par rapport au site de logg ???
Répondre