IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

remplir formulaire HTML par un exe


Sujet :

Delphi

  1. #1
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut remplir formulaire HTML par un exe
    bonjour

    je voudrais remplir certains champs d'un formulaire HTML affiché dans un explorateur web (IE ou autre) par une action dans un exécutable autonome

    comment puis-je m'adresser au formulaire, connaissant le nom de sa fenêtre et celui de tous ses composants ?

    le must serait aussi de pouvoir avec la souris glisser-déposer des données depuis la fenêtre de l'exécutable vers la fenêtre du formulaire

    est-ce possible de faire ça avec Delphi ?

    merci de votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 141
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    J'ai réalisé ce genre de choses en partant de cet exemple particulièrement bien fait sur un topic nommé : Automatic fill out HTML forms with TWebBrowser

    http://www.planet-source-code.com/vb...=1116&lngWId=7

    Amicalement

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Essaye de faire une petite recherche dans le forum, il me semble que nous en avons déjà discuté de ce sujet récemment. Attention tout de même, tu ne pas remplir un champs de type FILE car il est protégé par le système. En effet, il n'est pas possible à un site de télécharger un fichier de son disque dur sans nous demander la permission. Malgré tout, il existe des alternatives...
    De retour parmis vous après 10 ans!!

  4. #4
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    merci de vos réponses à tous les deux mais l'appli donnée en exemple et ce que j'ai trouvé d'autre sur le forum consiste toujours à charger le formulaire via l'exe

    mon pbm est un peu différent :
    j'ai un site (PHP) qui propose des formulaires assez pénibles à servir dans certains cas

    le client doit continuer d'utiliser son explorateur pour travailler sur le site

    il ferait appel à l'exe seulement en complément, lorsqu'il est dans une situation où le formulaire est trop long, ce qu'il ne voit qu'après avoir ouvert le formulaire
    dans ces cas il ouvrirait alors l'exe, ferait dedans une série simplifiée de choix et lancerait la copie résultante dans le formulaire ouvert dans son explorateur
    le submit serait toujours fait sur le formulaire lui même, pas par l'exe

    il faudrait donc "simplement" (hum) que l'exe lorsqu'il s'ouvre puisse vérifier que le formulaire machin est ouvert dans l'explorateur, et qu'il puisse communiquer avec ce formulaire pour remplir certains champs en fonction d'un choix de l'user, l'exe n'ayant pas ouvert lui même le formulaire

    est-ce possible ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 141
    Points : 109
    Points
    109
    Par défaut
    Mille excuses jlf, je n'avais pas bien compris ton problème. En fait tu cherches à faire communiquer deux applications exécutées simultanément sur l'ordi de l'utilisateur, ce n'est plus du tout la même chose...

    Le submit doit impérativement être fait par le biais du formulaire d'origine ?

    Si oui, une des voies possible serait peut être de poser un TWebBrowser de façon à ce que tout se passe au sein de l'exe et non plus par le truchement d'un navigateur extérieur.

  6. #6
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    > En fait tu cherches à faire communiquer deux applications exécutées
    > simultanément sur l'ordi de l'utilisateur

    oui
    il doit bien y avoir un moyen dans le cas d'un formulaire ouvert dans un explorateur car je l'ai déjà vu, même en drag-drop (certaines applis e-CB le font), mais je ne sais pas du tout comment faire ...

    > une des voies possible serait peut être de poser un TWebBrowser
    > de façon à ce que tout se passe au sein de l'exe

    oui mais cette soluce ne m'arrange pas
    en tous cas merci d'avoir répondu

    bien amicalement

  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Il est possible de remplir des champs d'un formulaire html avec du code Javascript et d'exécuter ce code par Delphi. Il faut connaître le nom du formulaire et le nom (ou l'id) de l'objet à renseigner. La difficulté est là, surtout si tu ne le connais pas déjà, sinon, c'est simple à faire. Le seul problème réside dans l'utilisation d'un champs de type File (avec son bouton "Parcourir"); Il ne peut pas être pré-rempli d'aucune manière que ce soit.
    De retour parmis vous après 10 ans!!

  8. #8
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    > Il est possible de remplir des champs d'un formulaire html avec
    > du code Javascript et d'exécuter ce code par Delphi.

    merci de l'info mais je n'ai pas trouvé comment faire exécuter du code js par un exe compilé sous Delphi ?

    par ailleurs je crois que pour modifier un formulaire en js il faut une relation parent-enfant, c'est à dire que la page contenant le code js ait été ouverte par celle du formulaire avec un windowOpen ce qui permet d'accéder à l'appelant via la propriété js "opener"

    je ne connais aucun autre moyen, ça existe ?
    s'il n'y a pas d'autre moyen actionner l'interpreteur js via un exe ne changera pas cette limitation

    or je ne veux pas appeler quoi que ce soit dans les pages contenant mes formulaires, je ne l'ai pas prévu au départ et je voudrais ne pas avoir du tout à retoucher les formulaires existants ...

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Regarde dans ce sujet, il ya des solutions et des liens qui pourraient peut-être t'intéresser même si le sujet ne parle pas trop de ton problème, les solutions proposées sont peut-être en rapport :
    http://www.developpez.net/forums/sho...d.php?t=189273
    De retour parmis vous après 10 ans!!

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 845
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 845
    Points : 15 263
    Points
    15 263
    Par défaut
    merci de l'info mais je n'ai pas trouvé comment faire exécuter du code js par un exe compilé sous Delphi ?
    par ailleurs je crois que pour modifier un formulaire en js il faut une relation parent-enfant, c'est à dire que la page contenant le code js ait été ouverte par celle du formulaire avec un windowOpen ce qui permet d'accéder à l'appelant via la propriété js "opener"
    Si cela est vrai, ça ressemble à "Mission impossible" cette histoire ;-)
    À moins de retoucher quand même un peu les scripts du serveur, afin qu'ils
    prennent en compte un fichier posé par l'exe ?
    Ou alors aller trifouiller directement dans les zones de mémoire du processus
    qui attend qu'on lui remplisse les champs... Bon courage !

    Parce que ce "Drag'n'drop" cité plus haut, ne tournait-il pas dans une appli propriétaire à base de TWebBrowser ou autre ?

    Mes 2 cts,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    > "ShellExecute(.. " ?

    oui mais quel process lancer, et avec quels params ?
    bon je demande ça par simple curiosité car en js je suis quasi sûr que c'est pas possible sans relation parent-enfant, sinon on pourrait imaginer plein d'attaques faciles avec de simples scripts

    avec un exe c'est pas pareil, au contraire d'un script dans une page il est lancé explicitement par l'user donc pas de raison évidente d'avoir les mêmes contraintes de sécurité

    par l'API windows on peut énumérer les fenêtres ouvertes, elle contient peut-être aussi des fonctions spécialisées "fenêtres HTML" mais je trouve rien

    > Regarde dans ce sujet, il ya des solutions et des liens qui pourraient
    > peut-être t'intéresser

    non, a priori rien que des actions par TWebBrowser en solo, sans com avec un explorer

  12. #12
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    j'ai retrouvé l'endroit où j'avais vu que ça existe :

    http://www.developpez.net/forums/arc.../t-143900.html

    d'après l'intervenant c'est bien une appli e-CB qui fait ça, en pratique je suppose que les noms de form et input HTML sont pré-enregistrés dans l'appli pour quelques sites de paiements, ou il y a une norme

    en tous cas il semble bien que ça existe ... ?!

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 141
    Points : 109
    Points
    109
    Par défaut
    Salut jlf,

    Ton problème m'intrigue...

    Ds le post dont tu donnes le lien, une remarque a attiré mon attention
    Car s'il ne fonctionne qu'avec IE, il doit certainement s'agir de code "managé", spécifique microsoft.
    Du coup comme en ce moment je joue un peu avec C#, j'ai regardé de ce côté là et effectivement j'ai vu des pistes ( malheureusement pas des solutions...)

    Il y une expression qui va t'intéresser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Iexplorer.ieFillField("google","q");
    Bon tu vas me dire que tu veux pas ouvrir IE, qu'il est déjà ouvert !!! J'ai vu aussi sur CodeProject, un code permettant de connaitre les instances d'IE ouvertes avec leur handle...

    Et enfin... j'ai vu qu'il exsitait des programmes commerciaux permettant de remplir automatiquement des formulaires HTML.

    Donc tu as raison, c'est possible... mais j'ai l'impression que c'est pas gagné !!!

    Amicalement

  14. #14
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    salut giloutho

    > J'ai vu notamment ce code en C# ou IE est ouvert par le prog
    > puis piloté directement...

    il y a peut-être une soluce "spécifique IE" mais il es peu probable dans l'absolu que des pgms commerciaux se limitent à lui ?

    je me dis qu'une soluce plus générique est peut-être possible par envoi de messages WM_Paste, parce qu'en natif cette gestion est prévue dans tous les explorateurs (le copier-coller fonctionne dans n'importe quelle formulaire web en natif, mais bien sûr seulement pour l'input recevant la souris)

    ça donnerait un process du genre :

    1) récupérer le handle de la fenêtre contenant le formulaire, jamais essayé mais ça doit être facile par l'API Windows

    2) envoyer dans le presse-papier les données à transférer

    3) envoyer à la fenêtre un message WM_Paste d'une façon ou d'une autre en spécifiant le nom ou l'ID de l'input destinataire, reste à savoir comment

  15. #15
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    DOM ne permet-il pas d'accèder à n'importe quelle balise html ou valeur d'une page web ? Il me semblait bien pourtant... En fait, je voyais la chose facile avec Javascript, mais je n'ai pas le temps d'essayer, dsl.

    Citation Envoyé par jlf
    3) envoyer à la fenêtre un message WM_Paste d'une façon ou d'une autre en spécifiant le nom ou l'ID de l'input destinataire, reste à savoir comment
    Par contre ça, ce ne sera pas facile à faire !!!

    Bon courage, à+
    De retour parmis vous après 10 ans!!

  16. #16
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    bon, finalement j'ai trouvé cet exemple :
    http://www.gatago.com/borland/public.../13731118.html

    il donne un moyen simple d'accéder depuis un exe autonome aux instances d'IE en cours d'exécution sur la machine via l'interface IShellWindow (accessible par SHDocVw.pas dans Delphi), et de lire / modifier les pages ouvertes et leurs formulaires par l'interface IHTMLDocument2 (mshtml.pas)

    reste à voir si ça fonctionne avec d'autres browsers qu'IE, mais j'en doute ? (je peux pas tester, je n'ai que IE)

Discussions similaires

  1. [XL-2002] Remplir formulaire HTML par macro VBA
    Par JerCaz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/06/2010, 16h07
  2. Problème d'envoi de Formulaire HTML par mail (mailto)
    Par flash_begin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/03/2007, 20h02
  3. Remplir formulaire HTML depuis une application C++
    Par danyboy85 dans le forum C++
    Réponses: 2
    Dernier message: 10/05/2006, 14h05
  4. remplir un formulaire html par delphi
    Par lassmust dans le forum Web & réseau
    Réponses: 6
    Dernier message: 24/04/2006, 20h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo