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 un formulaire dans un Twebbroswer


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Billets dans le blog
    1
    Par défaut remplir un formulaire dans un Twebbroswer
    Bonjour,
    J'obtiens un formulaire dans un Twebbrowser et je souhaiterais que l'application remplisse les différents champs de saisie du formulaire puis le soumette. J'ai essayé sendmessage et keybd_event mais rien n'a marché. Pourtant, lorsque je la fais manuellement en utilisant le clavier ça marche, et un navigateur remplit ces champs par défaut.
    Comment faire pour que l'application le fasse à ma place ? merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Pourquoi ne pas plutôt envoyer une requête POST ou GET directement ?
    Un problème de cookie qui requiert de passer par la page Web ?

    Pour modifier les éléments, vous pouvez le faire par ElementID via le IHTMLDocument2

    Regarde autour de GetElementById, cela te renvoi une interface vers l'éléments, tu as théorique un IHTMLElement que tu peux caster IHTMLInputElement (voir MSHTML.hpp)
    Si la Propriété Type est égale à "button", tu peux invoquer la méthode "click"
    En Delphi, cela se fait automatiquement avec le LateBiding des OleVariant
    En C++Builder, je suppose que OleFunction devrait permettre d'y parvenir

    Click correspond au OnClick du JavaScript
    Sinon, il faut récupérer la propriété Form qui est un IHTMLFormElement qui possède une méthode submit !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Billets dans le blog
    1
    Par défaut
    Merci de ton aide. J'ai bien pensé au Post mais je n'arrive pas à voir ce qu'il y a dans le corps de la réponse qui a été redirigée vers un autre site. Et je suppose qu'il y a un cookie... C'est ma banque...
    Je ne trouve pas GetElementByID mais je vais tourner autour de IHTMLElement pour voir si je trouve quelque chose..

  4. #4
    Membre confirmé

    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Billets dans le blog
    1
    Par défaut
    j'ai trouvé GetElementByID dans HTMLDocument3 mais même là Delphi ne l'accepte pas...

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Là faudrait un peu de code tout de même
    Que veut dire "Accepte pas" ?

    Tu devrais commencer par une page plus simple genre Google et son champ de recherche, je ne l'ai pas en Delphi mais en C++Builder, en 2011 c'était fonctionnel pour le clic

    Citation Envoyé par ShaiLeTroll Voir le message

    code en C++Builder qui fonctionne avec Google si l'on test "submit" cela affiche "Recherche Google" puis "J'ai de la chance" pour confirmer le Click

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    {
      Variant OleDocument = CppWebBrowser->OleObject.OlePropertyGet("Document");
      if (((IDispatch *)OleDocument) != NULL)
      {
        Variant DocItemCollection = OleDocument.OlePropertyGet("All");
        int ItemCount = DocItemCollection.OlePropertyGet("length");
        for (int i = 0; i < ItemCount; i++)
        {
          Variant DocItem = DocItemCollection.OleFunction("item", i, i);
          if (((IDispatch *)DocItem) != NULL)
          {
            IHTMLElement *DocElement = NULL;
            if (((IDispatch *)DocItem)->QueryInterface(Mshtml::IID_IHTMLElement, (void**)&DocElement) == NO_ERROR)
            {
              OleVariant ElementType;
              if (DocElement->getAttribute(WideString("type"), 0, ElementType) == NO_ERROR)
              {
                if (ElementType == "submit")
                {
                  OleVariant ElementValue;
                  if (DocElement->getAttribute(WideString("value"), 0, ElementValue)  == NO_ERROR)
                  {
                    if (MessageDlg("Click sur " + ElementValue + " ?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)
                    {
                      DocElement->click();
                    }
                  }
                }
              }
     
              DocElement->Release();
            }
     
          }
     
        }
      }
    }



    Je suppose que tu as un code similaire à l'article Delphi Programming with TWebBrowser - Set the value of a named field
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre confirmé

    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Billets dans le blog
    1
    Par défaut
    Merci, merci et encore merci ! c'est vraiment le document dont j'avais besoin !
    Je comprends comment c'est organisé et je vois ce que je peux en faire et la première phase - se loguer - marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplir un formulaire dans une page distante
    Par Lebas dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/10/2013, 04h10
  2. Remplir un formulaire dans une application via un programme JAVA
    Par konkzor dans le forum Général Java
    Réponses: 7
    Dernier message: 11/07/2012, 15h14
  3. remplir un formulaire dans une iframe
    Par pimpmyride dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/10/2010, 12h50
  4. Remplir un formulaire dans une Pop-Up à partir de la fenêtre appelante
    Par Grizzzly dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/02/2008, 09h06
  5. remplir un formulaire qui se met dans un champ hidden
    Par cecileb dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/09/2005, 16h37

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