Ecrire dans un formulaire IE [Résolu]

vmsn 21 Messages postés dimanche 27 avril 2003Date d'inscription 26 juin 2009 Dernière intervention - 21 mai 2008 à 17:40 - Dernière réponse : yvessimon 647 Messages postés mardi 22 avril 2003Date d'inscription 9 janvier 2017 Dernière intervention
- 23 mai 2008 à 16:11
Bonjour,

Je viens vers vous car je n'arrive vraiment pas à solutionner mon problème... Je monte une petite appli pour ma boite, qui permettra en cliquant sur un bouton, d'ouvir le navigateur web par default, d'aller sur une page. Jusque là pas de problèmes. Ensuite dans cette page, il y a un formulaire bateau (login/pass). un javascript empeche de faire http://monsite.com/mapage.php?login=xxx&pass=xxx sinon je l'aurais fait bien évidemment.

Ma question est la suivante, Est-il possible et si oui comment que delphi puisse une fois la page chargée, remplir les deux champs qui se nomme USERNAME et PASSWORD et cliquer sur le bouton "login" afin que je puisse faire une sorte "d'auto-authentification"?

J'ai fais quelques tests en passant par les HANDLE, mais je n'arrive pas à accéder à ces fameux champs et encore moins au bouton...

Merci pour vos réponses
Afficher la suite 

Votre réponse

11 réponses

yvessimon 647 Messages postés mardi 22 avril 2003Date d'inscription 9 janvier 2017 Dernière intervention - 22 mai 2008 à 16:27
+3
Utile
Bonjour,

En simulant les déplacements souris et les touches clavier il est possible
de remplir les cases souhaitées puis de valider .
ceci en utilisant les focntions :
keybd_Event(vk_tab,0,0,0);
keybd_Event(VK_NUMPAD4,0,0,0);
setCursorPos(X ,y ) ;
Mouse_Event(MOUSEEVENTF_Leftdown,0,0,0,0);
keybd_Event(VK_NUMPAD4,0,0,0);

Par contre avec une liste déroulante du type combobx quelle fonction utiliser ?

Merci
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de yvessimon
sky7rip 11 Messages postés dimanche 16 juillet 2006Date d'inscription 16 juillet 2008 Dernière intervention - 21 mai 2008 à 20:15
0
Utile
Plop mec,

Pour ce genre de programme je te conseillei plutôt d'aller voir du côté d'AutoIT,(remplir deux champs et cliquer sur un bouton avec delphi ca fait usine à gaz), c'est un petit language de scripting vraiment simple qui ressemble un peu au C/C++, et monstrueusement efficace, qui te permet de créer des GUI et de cliquer sur des zones à l'ecran, envoyer des caractères dans une form itou itou...  En un week end et avec les exemples fournis avec le log tu as fait le tour du bouzin, et y'a moyen de s'éclater . En plus tu peux compiler et sortir un petit exe.

Voici le lien : http://www.autoitscript.com/autoit3/

Bon courage et bon coding.

sky
Commenter la réponse de sky7rip
vmsn 21 Messages postés dimanche 27 avril 2003Date d'inscription 26 juin 2009 Dernière intervention - 21 mai 2008 à 20:55
0
Utile
Le probleme c'est que mon employeur a mis dans son cahier des charges.... delphi :) alors il faut que je trouve une solution... mais je vais jeter un oail a ton lien merci
Commenter la réponse de vmsn
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 21 mai 2008 à 21:29
0
Utile
Delphi > WebBrowser > charger la page > ensuite modifier le formulaire et send it.

<hr size="2" width="100%" />
Commenter la réponse de f0xi
vmsn 21 Messages postés dimanche 27 avril 2003Date d'inscription 26 juin 2009 Dernière intervention - 21 mai 2008 à 21:52
0
Utile
Oui mais je ne veux pas de browser dans l'appli mais simplement modifier un IE ou FF ouvert à l'extérieur...
Commenter la réponse de vmsn
L_art_ment 316 Messages postés vendredi 21 septembre 2007Date d'inscription 6 février 2013 Dernière intervention - 22 mai 2008 à 08:18
0
Utile
     Bonjour Vmsn,

   Jadis (y a quelques mois), j'eu fait un programme qui me permettait d'ouvrir une page internet, qui parcourait les champs de la page, et en fonction de leur nom (connus grace à la source de la page), si le nom du champs était par exemple "username", je lui assignais la valeur que je voulais, j'avais une case à cocher aussi que je cochais, puis je simulais un clic sur le bouton "envoyer" grace à son ID (connu aussi grace à la source), mais dans mon cas j'ouvrais la page dans un Webbrowser, mais peut être est-il possible d'utiliser la même méthode pour une page "exterieur" au programme en récupérant son handle ou le nom de la page ou je ne sais quoi, bref si ca t'interesse je pourrais peut être en retrouver la source et te mettre sur la voie...

   Bonne journée !

L'Art-Ment
Commenter la réponse de L_art_ment
vmsn 21 Messages postés dimanche 27 avril 2003Date d'inscription 26 juin 2009 Dernière intervention - 22 mai 2008 à 10:20
0
Utile
Ha oui je veux bien, c'est d'ailleurs dans cette voie que je me dirige actuellement... ou encore j'ai peut etre une autre solution : récupérer le HANDLE et avec des "sendmessage" envoyer des tabulations pour arriver aux champs voulus et y écrire ce qu'il faut.
Commenter la réponse de vmsn
vmsn 21 Messages postés dimanche 27 avril 2003Date d'inscription 26 juin 2009 Dernière intervention - 22 mai 2008 à 13:41
0
Utile
Donc voilà ou j'en suis actuellement : je vais appelé mon appli "A"

- A vérifie que IE est exécuté et qu'une de ses fenêtre à dans son titre "Authentification"
- Si non elle lance l'URL en question dans une nouvelle fenetre, Si oui elle cherche ses enfants pour trouvé la frame principale de IE puis scan cet enfant pour trouver la page principale de IE
- A met la fenetre IE au premier plan et donne le focus à la page.

Je suis maintenant bloqué, j'essaie de lancer une tabulation sur ma page pour me retrouver sur le premier champs mais pas de résultat, j'ai testé deux méthodes trouvées ici :

Keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0); apres avoir donné le focus à ma page

et

SendMessage(hEnfant, WM_KEYDOWN,VK_TAB,1);
SendMessage(hEnfant, WM_KEYUP,VK_TAB,1);

Aucune des deux méthodes ne fonctionne... je vais me faire hara kiri
Commenter la réponse de vmsn
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscription 11 mai 2018 Dernière intervention - 22 mai 2008 à 14:14
0
Utile
Salut,

essaye comme ceci :
Keybd_event(VK_TAB, 0, 0, 0); // Key Down
puis
Keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0); // Key Up

mais je pense aussi que la méthode "externe" n'est pas facile voir impossible (pas de gestion d'erreurs, pas d'évènement de fin de chargement de page ... etc)
il serait préférable de passer par un TWebBrowser "en interne" ... en tout cas c'est plus simple ^^

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
vmsn 21 Messages postés dimanche 27 avril 2003Date d'inscription 26 juin 2009 Dernière intervention - 22 mai 2008 à 19:15
0
Utile
Alors voila ou j'en suis, l'aide de cirec m'a bien aidée, je ne suis pas encore parvenu a rentré ce que je voulais exactement parce que quand j'ai fait F9 comme un idiot j'ai lancé le lancement du browser dans une boucle infinie... Delphi a planté, j'ai perdu le travail de la journée parce que comme un idiot(bis) j'avais pas enregistré... je mérite des claques, je reprends tout ca demain matin avec les remarques de yvessimon en plus et je vous tiens au courant
Commenter la réponse de vmsn
yvessimon 647 Messages postés mardi 22 avril 2003Date d'inscription 9 janvier 2017 Dernière intervention - 23 mai 2008 à 16:11
0
Utile
Bonjour,
Pour Combobox je simule plusieurs fois une touche clavier avec la 1er lettre du combobox , ou je souhaite mepositionner.(le focus doit être sur ce Combobox).
En intercallant, bien sur, à chaque simulation clavier Application.prosseMessage.

Cela focntionne bien.
Merci pour cette aide.

et boncourage à VMSN (prévoire une touche de sauvegarde)

Saluttations
Commenter la réponse de yvessimon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.