Ecrire dans un formulaire IE

Résolu
vmsn Messages postés 21 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 juin 2009 - 21 mai 2008 à 17:40
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017 - 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

11 réponses

yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
22 mai 2008 à 16:27
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
3
sky7rip Messages postés 9 Date d'inscription dimanche 16 juillet 2006 Statut Membre Dernière intervention 16 juillet 2008
21 mai 2008 à 20:15
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
0
vmsn Messages postés 21 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 juin 2009
21 mai 2008 à 20:55
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
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 mai 2008 à 21:29
Delphi > WebBrowser > charger la page > ensuite modifier le formulaire et send it.

<hr size="2" width="100%" />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vmsn Messages postés 21 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 juin 2009
21 mai 2008 à 21:52
Oui mais je ne veux pas de browser dans l'appli mais simplement modifier un IE ou FF ouvert à l'extérieur...
0
L_art_ment Messages postés 302 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 6 février 2013
22 mai 2008 à 08:18
     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
0
vmsn Messages postés 21 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 juin 2009
22 mai 2008 à 10:20
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.
0
vmsn Messages postés 21 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 juin 2009
22 mai 2008 à 13:41
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
22 mai 2008 à 14:14
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="" />
0
vmsn Messages postés 21 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 juin 2009
22 mai 2008 à 19:15
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
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
23 mai 2008 à 16:11
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
0
Rejoignez-nous