Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Formular über Delphi Anwendung ausfüllen (https://www.delphipraxis.net/147404-formular-ueber-delphi-anwendung-ausfuellen.html)

plapperkeks 7. Feb 2010 18:44


Formular über Delphi Anwendung ausfüllen
 
Hallo, alle miteinander.

Vorneweg: Ich bin noch nicht lange im Bann der Programmiersprachen

So, mein Problem ist folgendes:

Durch ein TWebbrowser Modul, 2 TEdit's und einem Button sollen die Werte in den TEdits durch den Buttonklick an eine vorher definierte Website geliefrt werden, und 2 Felder auf dieser Website ausfüllen (Email und Passwort)
Die Website ist in diesem Fall http://web.de/fm/

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Keyboard, StdCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    WebBrowser1: TWebBrowser;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Document: OleVariant;
begin
WebBrowser1.Navigate('http://web.de/fm/'); //Website
repeat
Application.ProcessMessages;
Sleep(0);
until WebBrowser1.ReadyState = READYSTATE_COMPLETE;

Document.all.item('username').Value := Edit1.Text; // Email/Nutzer
Document.all.item('password').Value := Edit2.Text; // PASSWORT
Document.all.item('rv_dologon').submit; // Login/Submit Funktion
end;


end.
Die namen der Felder username, password und rv_dologon habe ich im Quellcode von http://web.de/fm/ (hoffentlich korekkt) ausgelesen.

So nun tritt bei Testen folgendes Problem auf:

"Ungältige Variantenoperation" meldet mir ein Delphi Fenster.

Ich hab keine Ahnung woran das liegt... für jede Hilfe bin ich dankbar.

daywalker9 7. Feb 2010 18:55

Re: Formular über Delphi Anwendung ausfüllen
 
Dein "Document" wird nirgends zugewiesen?

Daher kann das auch nicht funktionieren

plapperkeks 7. Feb 2010 19:12

Re: Formular über Delphi Anwendung ausfüllen
 
danke...... aber wie mach ich das denn?
sry für die blöde Frage ^^

toms 7. Feb 2010 19:17

Re: Formular über Delphi Anwendung ausfüllen
 
Delphi-Quellcode:
with WebBrowser1 do
begin
  OleObject.Document.GetElementByID('username').Value := Edit1.Text;
  OleObject.Document.GetElementByID('password').Value := Edit2.Text;
  OleObject.Document.forms.item(1).submit();
end;

plapperkeks 7. Feb 2010 19:45

Re: Formular über Delphi Anwendung ausfüllen
 
Erstmal danke für die tolle Hilfe, jetzt klappts, ich habe noch eine Frage..... unzwar hab ich nun eine andere Website gewählt zum Login... die Bezeichnungen für die Felder Username und Password habe ich schnell gefunden... allerdings zeigt mir Delphi einen Fehler an der durch "OleObject.Document.forms.item(1).submit();" ensteht.
Anscheinend ist bei dieser Website dieSubmit funktion anders.... wie finde ich raus wie/wo im Quellcode diese Bezeichnet ist?


Fehlermeldung:
Zugriffsverletztung bei Adresse 004AFD7D in Modul 'Project2.exe'. Lesen
von Adresse 00000000.

toms 7. Feb 2010 19:50

Re: Formular über Delphi Anwendung ausfüllen
 
Vielleicht ist es ja nicht die 1. Form...
Falls die Form einen Namen hat (siehe Quelltext der Seite), kannst du die Form auch anhand seines Namens abschicken:

Delphi-Quellcode:
function WB_SubmitFrom(WebBrowser: TWebBrowser; const FormName: string): IHTMLFormElement;
var
  forms: IHTMLElementCollection;
  Doc2: IHTMLDocument2;
begin
  if Assigned(WebBrowser.Document) and
    (Succeeded(WebBrowser.Document.QueryInterface(IHTMLDocument2, Doc2))) then
    begin
      forms := Doc2.Forms as IHTMLElementCollection;
      Result := forms.Item(FormName,'') as IHTMLFormElement;
      Result.Submit;
  end;
end;

plapperkeks 7. Feb 2010 20:26

Re: Formular über Delphi Anwendung ausfüllen
 
Ah, danke es hatte den Form Wert 0 ^^
Nun hab ich eig. alles was ich wollte (An dieser Stelle: Vielen, vielen dank toms für deine Hilfe)

Allerdings würde ich jetzt gern wenn sich die person eingeloggt hatt, das dann automatisch ein bestimmter wert abgelesen wird, der Wert ist in diesem fall ein Datum und eine vierstellige Zahl!

Im Quellcode der Website sehe ich das der Wert einmal eingetragen ist in

<div class="boxx">
.....
....
....
<span class="in">Gültig: </span> <span class="green">09.12.2011 11:38</span>

(dieser Wet ist logischerweise bei jedem Eingeloggtem Account unterschiedlich)
Allerdings stehen noch andere unwichtige Werte in der class "in". Wie lese ich diese Werte aus, bzw. mit welchem Delphi Befehl lass ich diese Werte in einem TLabel oder einer TListBox anzeigen nachdem jmd. eingeloggt wurde??

e: bei der Vorherigen Website von EWb.de würde ich dann vergleichsweise die anzahl der emails nehmen! kann mir jmd. helfen?

plapperkeks 8. Feb 2010 20:06

Re: Formular über Delphi Anwendung ausfüllen
 
Keiner eine Idee? =/

toms 8. Feb 2010 20:19

Re: Formular über Delphi Anwendung ausfüllen
 
Zitat:

Zitat von plapperkeks
Keiner eine Idee? =/

Doch, Googeln oder in der DP suchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz