Page 1 sur 1
[..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:06
par danieller
Bonjour,
Je cherche à remplir de façon autonome les champs d'une fenêtre windows, le but étant de faire une mise a jour automatique d'une base de données.
Bref, ma fenêtre de sécurité windows s'affiche en même temps que l'ouverture de ma page, mais je n'arrive pas a renseigner les champs. J'ai essayé avec la fonction Send(), puis la fonction ControlSend() mais je n'y arrive pas.
J'ai 2 champs a remplir, le title de la fenetre c'est : sécurité de windows
et la classe : 34570
avec Edit 1 et Edit 2
Si quelqu'un peut m'aider / m'expliquer comment faire cela sera sympa.
Merci.
A+
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:10
par Y01
Bonjour,
Une petite capture d'écran est elle faisable ?
Et que se passe t-il lors de la simulation de touche clavier ?
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:21
par danieller
Initialement je voulais faire un truc super simple du genre :
Code : Tout sélectionner
#include <IE.au3>
Local $oIE = _IECreate("https://124444.admincjh.gpuus.net")
Send("login")
Send("{TAB}")
Send("mdp")
Sauf qu'au premier essai (je n'avais pas les lignes Send("{TAB}") et Send("mdp") ) cela à bien affiché le login, mais après plus moyen de renouveler l'expérience... je ne comprends pas trop.
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:23
par danieller
En fait je me rends compte que c'est lorsque je quitte la fenêtre en cliquant sur "Annuler" que l’écriture s’exécute...
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:30
par Y01
Je ne comprends pas bien la demande.
C'est une fenêtre de sécurité Windows qui s'ouvre ou une identification sur un site web ?
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:35
par danieller
Regardes l'imprimecran normalement joint.
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:52
par Y01
Je ne comprends pas pourquoi le send ne fonctionne pas.
Par contre, il est toujours possible d'ouvrir le site avec les identifiants en commande.
Code : Tout sélectionner
#include <IE.au3>
$login="login"
$mdp="mot de passe"
Local $oIE = _IECreate("https://" & $login & ":" & $mdp & "@1294.admin.gpaas.net")
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 15:59
par danieller
Désolé mais je n'ai pas compris le passage en commande.
Ok pour les 2 variables, mais pour que ces dernières s'incluent dans les champs de la fenêtre de connexion, la j'avoue...
Merci.
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 16:02
par danieller
Après il y a la solution d'enregistrer les identifiants de connexion.. mais je n'aime pas trop cela.
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 16:25
par TommyDDR
La fenêtre de sécurité windows s'exécute en tant qu'administrateur, et votre compte doit avoir l'UAC d'activé (et donc interdiction d'interragir avec des fenêtres admin).
Essayez d'ajouter #RequireAdmin en début de script.
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 16:26
par Clampu
Peut être que _IECreate attend que la page soit chargée, ce qui n'arrive pas tant que tu n'a pas saisi l'identifiant. En gros ton Send attend que _IECreate soit terminé, et _IECreate a besoin de Send
Ce que tu peux faire c'est changer ton _IECreate par un
Code : Tout sélectionner
ShellExecute("iexplore", "https://124444.admincjh.gpuus.net")
WinWaitActive("Sécurité de Windows") ; a déterminer avec le AWI
Le mieux est d'utiliser les controles windows à la place de send comme ceci (renseigne toi sur le AWI : Autoit Windows Info, si tu ne connais pas)
Code : Tout sélectionner
ShellExecute("iexplore", "https://124444.admincjh.gpuus.net")
WinWaitActive("Sécurité de Windows") ; a déterminer avec le AWI
ControlSend("Sécurité de Windows", "", "[CLASSNN:xxxxxxxxx]", "user") ; idem
ControlSend("Sécurité de Windows", "", "[CLASSNN:yyyyyyyy]", "mdp") ; idem
ControlClick("Sécurité de Windows", "", "[CLASSNN:zzzzzzzzz]") ; bouton OK, idem
C'est plus propre que des Send
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 16:40
par Y01
danieller a écrit :Désolé mais je n'ai pas compris le passage en commande.
Ok pour les 2 variables, mais pour que ces dernières s'incluent dans les champs de la fenêtre de connexion, la j'avoue...
Merci.
Le code que je t'ai mis est fonctionnel...
Il te suffit de changer les variables par tes identifiants. Si tu ne souhaite pas les inscrire en dur, tu peux toujours faire une GUI dans laquelle tu inscris tes identifiants qui seront stockés jusqu'à la fermeture de la GUI.
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 21:47
par jguinch
@Tommy : on parle bien de page web sécurisée par mot de passe (type .htaccess), pas de l'UAC. Donc la popup de sécurité s'exécute dans le contexte utilisateur, non ?
Avec ce code, ça fonctionne chez moi, uniquement sous Windows 7 (pas sous XP, et je n'ai pas Windows
► Afficher le texte
Code : Tout sélectionner
#Include <IE.au3>
Local $oIE = _IECreate("http://www.advancedhtml.co.uk/password/", 0, 1, 0)
$hSecurity = WinWait("Sécurité de Windows") ; ne fonctionne pas sur XP (pas le même titre de fenêtre)
WinActivate($hSecurity)
ControlSetText($hSecurity, "", "[CLASS:Edit; INSTANCE:1]", "demo")
ControlSetText($hSecurity, "", "[CLASS:Edit; INSTANCE:2]", "password")
ControlClick($hSecurity, "", "[TEXT:OK]")
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 23:00
par danieller
Bonsoir, j'ai réussi a faire fonctionner le script grace à vos réponses,
voici ce que j'ai fait :
Code : Tout sélectionner
#include <IE.au3>
ShellExecute("iexplore", "https://12.admingpaas.net/phpmyadmin/index.php")
WinWaitActive("Sécurité de Windows")
Send("login")
Send("{TAB}")
Send("mdp")
Send("{ENTER}")
merci
Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 23:02
par jguinch
ControlSend est plus propre/fiable/conseillé qu'un
Send qui risque d'être bancal...

Re: [..] Remplir une fenetre windows
Posté : jeu. 15 janv. 2015 23:52
par orax
+1 pour ControlSend
Le #include <IE.au3> ne devrait plus être nécessaire.
Y01 a écrit :Par contre, il est toujours possible d'ouvrir le site avec les identifiants en commande.
Code : Tout sélectionner
...
Local $oIE = _IECreate("https://" & $login & ":" & $mdp & "@1294.admin.gpaas.net")
Cette solution est bonne mais si la version d'IE est récente, ça ne devrait pas marcher. J'ai lu ça sur le support de Microsoft :
Comportement par défaut d'Internet Explorer pour la gestion des informations utilisateur dans les URL HTTP et HTTPS a écrit :Par défaut, les versions de Windows Internet Explorer qui ont été publiées depuis la version finale de la mise à jour de sécurité 832894 ne prennent pas en charge la gestion des noms d'utilisateur et des mots de passe dans les URL HTTP, HTTP avec SSL (Secure Socket Layer) et HTTPS. La syntaxe d'URL suivante n'est pas prise en charge dans Internet Explorer ou dans l'Explorateur Windows :
http(s)://nom_utilisateur:mot_de_passe@serveur/ressource.ext
Le comportement par défaut a donc été changé pour des raisons de sécurité.
Re: [..] Remplir une fenetre windows
Posté : ven. 16 janv. 2015 08:56
par Y01
Merci pour l'info Orax !
J'avais fait un test sous IE8 et ça fonctionnait sinon je n'aurais pas mis cette solution
