auf IHTMLInputElement - Click ausführen per Code



  • ich habe folgenden Code auf bytesandmore gefunden über den man ein Formular im Webbrowser sozusagen fernsteuern kann.
    Ich möchte nun aber auch das Formular abschicken und das nicht per submit()-Methode vom FormularElement sondern über einen simulierten click() auf den submit-Button.

    Könnt ihr mir sagen, wie ich auf das "input type=submit"-Element zugreife und diesen click simuliere ?
    Bei MSDN konnte ich keine Methode finden, die mich weiterbringen würde...
    http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/ifaces/inputelement/inputelement.asp

    IHTMLDocument2 *HTMLDoc = NULL;
    if(SUCCEEDED(Form1->CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,
      (LPVOID*)&HTMLDoc)))
    {
      IHTMLElementCollection *pAll = NULL;
      if(SUCCEEDED(HTMLDoc->get_all(&pAll)))
      {
        TVariant name = fname;    //  hier kommt der name des Feldes hin (siehe HTML source)
        IDispatch *pDisp = NULL;
        TVariant index=0;
        if(SUCCEEDED(pAll->item(name, index, &pDisp)))
        {
          if(pDisp)
          {
            IHTMLInputElement *pInput = NULL;     // mshtml.h
            pDisp->QueryInterface(IID_IHTMLInputElement, (LPVOID*)&pInput);
            pDisp->Release();
            if(pInput)
            {
              WideString mybuffer;
              pInput->put_value (WideString(value)); //hier der String, der zu schreiben ist.
            }
            pInput->Release();
          }
        }
      }
      pAll->Release();
    }
    HTMLDoc->Release();
    


  • simonch schrieb:

    nicht per submit()-Methode vom FormularElement sondern über einen simulierten click() auf den submit-Button

    Rein interessehalber: warum, bzw. was ist der Unterschied?



  • beim Buttonclick wird der Name des Buttons als Postvariable übergeben.
    beim "nur"-submit des Formulares nicht... 😞



  • Kennst du denn den Namen des Buttons (im HTML-Code)?
    Dann hilft dir das hier vielleicht weiter.


Anmelden zum Antworten