Entwickler-Ecke

Internet / Netzwerk - Formularfelder einer fremden Internetseite füllen?


OliverN_26 - Mi 22.02.12 20:21
Titel: Formularfelder einer fremden Internetseite füllen?
Hi Leute

vorab .. ich weiß ich bin hier heute völlig falsch, da ich in diesem Schritt nicht mit Delphi arbeite, aber ich weiß kein gutes Forum für meine Frage und ich weiß, dass hier ne Menge Cracks rum schwirren, die evt. eine Idee haben.

also ..

Mit Delphi empfange ich Daten, werte diese aus und sende sie an meine Datenbank, wo sie auf einer Internet-Seite angezeigt und weiter bearbeitet werden. Soweit so gut. Wir sind ein Subunternehmer eines großen, namhaften Unternehmens hier in Deutschland. Die Bearbeitung der Daten kann leider nicht nur in unserem System passieren, sondern muss ebenfalls in einer Webseite eingetragen werden, um an den "großen Partner" gesendet werden zu können. Dies ist natürlich doppelte Arbeit die ich mir gerne ersparen würde. Ich möchte also die Daten in meinem Internetformular bearbeiten und im Hintergrund sollen die "notwendigen" Daten an die fremde Internetseite geschickt werden. Ein weiteres Problem dabei ist, dass ich die Seite 3-5x bestätigen muß und Folgeseiten ebenfalls ausgefüllt werden müssen. Kann man so was simulieren?

Bevor die Diskussion aufkommt .. es ist nichts illegales und bewegt sich alles im Firmenumfang. Wenn ich den Namen sagen würde, würde sich auch die Frage erübrigen den Partner nach einer Datenbank-Schnittstelle zu fragen. Die kümmern sich da leider "0" drum.
Ich habe bei einem anderen Subunternehmer allerdings schon mitbekommen das dies möglich ist. "Angeblich" auf sehr einfach Weise (mit den Scripten rücken auch die nicht raus).

Mich würde schon mal weiter bringen wenn ich wüsste, mit welcher Sprache man so was bewerkstelligen kann. PHP kann ich mir wenig vorstellen, da es serverseitig arbeitet, aber, wenn ich im Internet suche, gerate ich immer wieder an "fsockopen()". Bin ich da auf dem richtigen Weg? Hat jemand mit so was Erfahrungen und kann mich in die richtige Richtung rollen oder mir ein paar Tips geben?

Weiß da grad echt keinen Rat mehr .. hoffe, auch wenns grad nich Delphi ist kann mir jemand helfen.

1000 Dank im voraus

lg
Oli


Narses - Mi 22.02.12 23:43

Moin!

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte also die Daten in meinem Internetformular bearbeiten und im Hintergrund sollen die "notwendigen" Daten an die fremde Internetseite geschickt werden. Ein weiteres Problem dabei ist, dass ich die Seite 3-5x bestätigen muß und Folgeseiten ebenfalls ausgefüllt werden müssen. Kann man so was simulieren?
Ja klar kann man das. Wenn kein Javascript drin ist, geht das relativ simpel mit IdHTTP von den Indies, bei Javascript-Klamotten kann man das mit einem TWebbrowser probieren und dann über die COM-API darauf zugreifen (etwas hakelig, braucht Erfahrung). :idea:

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
wenn ich im Internet suche, gerate ich immer wieder an "fsockopen()". Bin ich da auf dem richtigen Weg?
Pauschal würde ich sagen: nein, das wird nix. Damit öffnest du lediglich einen Socket (also theoretisch kann man das schon an der Stelle tatsächlich umsetzen, aber das wird sich keiner antun, den ganzen Protokoll-Layer selbst da oben drauf zu setzen).

Und die haben wirklich keinen Webservice für die Datenübermittlung? So wie du das beschreibst, ist das Formular (oder besser die Formularkaskade) eher für menschliche Benutzung vorgesehen... :? Mit z.B. einem Webservice wäre das erheblich viel einfacher!

cu
Narses


Nersgatt - Do 23.02.12 08:17

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Und die haben wirklich keinen Webservice für die Datenübermittlung? So wie du das beschreibst, ist das Formular (oder besser die Formularkaskade) eher für menschliche Benutzung vorgesehen... :? Mit z.B. einem Webservice wäre das erheblich viel einfacher!


Leider nicht ganz unüblich. Das Problem ist, dass die "Großen" oft in einer Position sind, wo sie einfach bestimmen können. Das heißt dann, sie sagen "ihr müsst die Daten in dem Webformular eintragen. Fertig. Wenn euch das zu viel Arbeit ist, stellt halt noch einen Mann dafür ein.". Und aus Sicht des Datenempfängers besteht ja auch keine Notwendigkeit, eine definierte Schnittstelle zur Verfügung zu stellen. Der Partner kann die Daten ja im Formular eintragen. Da wäre es nur Mehraufwand, eine Schnittstelle zu entwickelt und zu pflegen.
Aus den Gründen muss ich auch an einigen Stellen Webformulare füttern. Wie schon gesagt: IdHttp.

Für POST sieht das dann prinzipiell so aus:

Delphi-Quelltext
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:
procedure TBlaBla.DoLogin(AUsername, APassword: String);
var
  PostData : TStringList;
  ResultStream : TStringStream;
const
  ANMELDENAME = 'anmeldename';
  PASSWORT = 'password';
  URI = 'http://.../index.php';
begin

  PostData := nil;
  ResultStream := nil;
  try
    PostData := TStringList.Create;
    ResultStream := TStringStream.Create('', SysUtils.TEncoding.GetEncoding(1252));

    PostData.Values[ANMELDENAME] := AUsername;
    PostData.Values[PASSWORT] := APassword;
    PostData.Values['site'] := 'login';

    FHttp.Post(URI, PostData, ResultStream);
    ParseLoginResult(ResultStream);

  finally
    PostData.Free;
    ResultStream.Free;
  end;

end;


FHttp wird hier an einer anderen Stelle erzeugt. Das musst Du also noch machen, oder halt auf die Form klatschen.


jaenicke - Do 23.02.12 08:28

Und da es um mehrere Seiten geht, die der Reihe nach angesteuert werden müssen, könnte es notwendig sein auch einen Cookiemanager in TIdHttp einzubinden. Es kann aber auch sein, dass es IDs in der generierten Seite gibt, die du als Session-ID wieder mitschicken musst oder Ähnliches.

Falls es notwendig wird, könntest du mit Chrome, Opera oder IE 7+ und dessen integrierten Debugger (oder mit einem Browserplugin, wenn du den Firefox nutzen möchtest) nachschauen was da bei den Aufrufen so alles an Daten hin- und hergesendet werden.


OliverN_26 - Do 23.02.12 11:27

Hi und schon mal danke für die Rückantworten.

An 1 Stelle haben wir uns glaub ich Missverstanden. Die Abwicklung mit Delphi ist durch und die Daten werden "nur" noch im Web-Bereich bearbeitet und ausgewertet. Das heisst die übermittlung der Daten wird nicht mit Delphi geschehen. Ich weiß nur nicht ob man so was was mit Javascript/PHP/CGI (oder sonst was) hinbekommt?!

Um das mit Delphi zu realisieren wäre es notwendig eine Tabelle in die Datenbank zu legen, in der die Daten, die für die anzusteuernde Seite wichtig sind, gespeichert werden müssen. Das Delphi Tool prüft dann einfach in regelmäßigen Abständen diese Tabelle und wenn Daten da sind werden sie abgeschickt. Wäre sicher auch ne Lösung, aber mit diesem Problem steh ich ziemlich am Anfang und bevor ich mir jetzt die Tage um die Ohren schlage, würd ich gern das ein oder andere abwägen um wirklich mit der optimalsten Lösung an den Start zu gehen.

Die Sache mit dem Webservice schau ich mir mal an. Angeboten bekommen wir das nicht. Wie "Nersgatt" das schon sagte interessiert die das recht wenig. Es existiert eine Internetseite wo wir die erforderlichen Daten einzutragen haben und fertig. Nur das hat absolut nichts mit einer internen Auftragsabwicklung zu tun und schon muß man alles doppelt machen. Bei unserer Auftragsmenge ist die ganze "sinnlose" Mehrarbeit einfach nich mehr machbar.

lg
Oli

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Die TWebBrowser Komponente ist schon mal ein guter Anfang, da ich die Formularfelder schon mal mit meinen Daten füllen kann. Glaub damit bin ich auch dem richtigen Weg. Problem was ich jetzt habe ist beim Senden des Formulares im Internet per "action" ein Link mit einer Session ID übergeben wird. Wie kann kann ich bei der Komponente mit "submit" Werte übergeben?
Mein jetziger Testversuch:


Delphi-Quelltext
1:
2:
3:
WebBrowser1.OleObject.document.forms.item(0).elements.item('feld1').value := '22222';
WebBrowser1.OleObject.document.forms.item(0).elements.item('feld2').value := '36240';
WebBrowser1.OleObject.document.forms.item(0).submit;


danke


jaenicke - Do 23.02.12 19:17

Solange es keine dynamischen Inhalte auf der Seite geht, sollte TWebBrowser aber gar nicht notwendig und nur unnötiger Aufwand sein.

Wenn die Session ID in dem selben Formular steht, sollte diese auch im TWebBrowser mit übergeben werden. Was da genau passiert, könntest du mit Wireshark mit dem Original vergleichen.


OliverN_26 - Fr 24.02.12 12:14

Also ich sag mal so .. wenn es denn funktioniert mach ich mir diesen "einmaligen" unnötigen Aufwand sehr gerne :-)
Was wäre denn die Alternative?

Ich hab mal ein bisschen gelesen und probiert, aber .

1. Wenn ich den Button in der TWebBrows-Komponente drücke gehts. Mach ich es mit WebBrowser1.OleObject.document.forms.item(0).submit; passiert zwar was aber anscheinend nicht richtig, denn ich gelange nicht auf die Folgeseite. Was an dem Action-Attribut liegen könnte ?!

2. Ein Auszug aus dem Quelltext der Form sieht wie folgt aus:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
<form id="orderDetails" method="post" action="/MWIA/fc.htm?_flowExecutionKey=_cA3DFCCBC-C30A-42C9-F2EA-E6D91FC94F6E_k4BBC10C6-C9F1-965E-1527-DCF683533B51"><br>
   <label for="techId">Techniker Nummer</label><br/>
   <input id="techId" name="techId" style="-wap-input-format: '5N'; -wap-input-required: true;" type="text" value="" maxlength="5"/><br><br/>
   
   <label for="woId">Auftragsnummer</label><br/>
   <input id="woId" name="woId" style="-wap-input-format: '6N'; -wap-input-required: true;" type="text" value="" maxlength="6"/><br/><br/>
   
   <input type="submit" class="button" name="_eventId_login" value="Bestätigen"/><br/><br/>
</form>


3. könnte ich rein theoretisch den Link mit Indy-HTTP und POST einfach so versenden:

Delphi-Quelltext
1:
2:
3:
4:
5:
sl := TStringlist.Create;
sl.Add('techId=12345');
sl.Add('woId=59478');

IdHTTP1.Post('http://' + Hostname + '/MWIA/fc.htm?_flowExecutionKey=_cA3DFCCBC-C30A-42C9-F2EA-E6D91FC94F6E_k4BBC10C6-C9F1-965E-1527-DCF683533B51',sl);


Danke

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Mit WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click; funktioniert es so wie ich es will und ich würde alles so hinbekommen wie ich es gerne hätte. Das ist schon mal traumhaft .. aaaaber .. mich interessiert trotzdem die eventuelle Alternative, die jaenicke angesprochen hat. Es sollte nicht zu kompliziert sein. Welche generellen Nachteile zieht es mit sich wenn ich es mit der Webbrowser Komponente mache?


jaenicke - Fr 24.02.12 12:43

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Welche generellen Nachteile zieht es mit sich wenn ich es mit der Webbrowser Komponente mache?


OliverN_26 - Fr 24.02.12 12:52

Wie sieht die Alternative aus ?


Nersgatt - Fr 24.02.12 12:56

TIdHttp


OliverN_26 - Fr 24.02.12 13:24

OK .. und wie könnte so was aussehen?
Bei folgendem Code bekomm ich ständig die Meldung "http/1.1 500 Internal Server Error":

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button3Click(Sender: TObject);
var
  sl : TStringList;
  session_id : String;
begin
  session_id := copy(Webbrowser1.LocationURL,pos('?',Webbrowser1.LocationURL),Length(Webbrowser1.LocationURL));

  sl := TStringlist.Create;
  sl.Add('techId=22222');
  sl.Add('woId=59478');

  IdHTTP1.Post('http://pfad/MWIA/fc.htm' + session_id, sl);

  sl.Free;
end;


So ganz versteh ich das auch noch nicht. Mir leuchtet ein dass ich so die Daten an den Server übermittel. Aber ich muß ja auch das "klicken" simulieren da ich mich noch um 5 weitere Folgeseiten kümmern muß. Auf die muß ich ja auch gelangen ?!

Hilfe :-(


Nersgatt - Fr 24.02.12 13:46

Ich vermute, dass das daran liegt, dass Du die Session-ID noch mit dem TWebbrowser ausliest. Du solltest Dich für eine Sache entscheiden.


OliverN_26 - Fr 24.02.12 13:54

OK .. das stimmt .. das könnte sein .. aber selbst wenn ich das jetzt änder .. wie gelange ich auf die Folgeseite, damit ich diese ebenso auswerten und senden kann?


Nersgatt - Fr 24.02.12 14:05

Du musst nicht nur die URL aufrufen, sondern auch auswerten, was der Server zurückliefert. (Siehe oben Beitrag von mir, ResultStream). Und dann schickst Du halt per Post die Daten ab, die der Server auf der 2. Seite erwartet.


jaenicke - Fr 24.02.12 14:43

Wie gesagt:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Falls es notwendig wird, könntest du mit Chrome, Opera oder IE 7+ und dessen integrierten Debugger (oder mit einem Browserplugin, wenn du den Firefox nutzen möchtest) nachschauen was da bei den Aufrufen so alles an Daten hin- und hergesendet werden.


OliverN_26 - Fr 24.02.12 15:33

Ich bekomme an der folgenden Stelle immer den Fehler: "Zu viele Parameter"

Delphi-Quelltext
1:
ResultStream := TStringStream.Create('', SysUtils.TEncoding.GetEncoding(1252));                    


Nersgatt - Fr 24.02.12 15:43

Versuch mal so: ResultStream := TStringStream.Create();
Die Überladungen kamen vermutlich erst in späteren Delphiversionen.


OliverN_26 - Fr 24.02.12 15:46

"Nicht genügend wirkliche Parameter"


Nersgatt - Fr 24.02.12 15:54

Dann stell mal den Cursor auf TStringStream und drück auf F1... :roll:


jaenicke - Fr 24.02.12 16:05

Früher hatte TStringStream einen Parameter. Da kannst du einen leeren String angeben, also sprich nur den zweiten Parameter weglassen.

user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Dann stell mal den Cursor auf TStringStream und drück auf F1... :roll:
Full Ack...

Und davon abgesehen zeigt Delphi ja auch an welche Parameter erwartet werden, wenn man die Klammer auf schreibt. Und mit Strg + Shift + Leertaste ebenfalls.


OliverN_26 - Fr 24.02.12 16:18

is ja richtig .. sorry :-(
so gehts:

Delphi-Quelltext
1:
ResultStream := TStringStream.Create('');                    


Nun bekomme ich an unten angezeigter Position folgende Fehlermeldung: "HTTP/1.1 302 Found"

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.Button4Click(Sender: TObject);
var
  PostData : TStringList;
  ResultStream : TStringStream;
const
  URI = 'http://pfad/';
begin
  PostData := nil;
  ResultStream := nil;
  try
    PostData := TStringList.Create;
    ResultStream := TStringStream.Create('');

    PostData.Values['techId'] := '22222';
    PostData.Values['woId']   := '59478';

    IdHTTP1.Post(URI, PostData, ResultStream);
    showmessage(ResultStream.DataString);   // HTTP/1.1 302 Found
  finally
    PostData.Free;
    ResultStream.Free;
  end;
end;



EDIT:
könnte daran liegen das ich an die falsche Seite sende, denn wenn ich abschicke ist ja bereits die Session_id generiert, welche ich mitsenden muß. Dafür müsste ich aber die Startseite erst mal laden (ohne anzuzeigen) um die 1.Session_id zu generieren. Wie kann ich denn dann im weiteren die Parameter aus der Adresszeile auslesen?

:-/


jaenicke - Fr 24.02.12 17:24

Die Fehlermeldung sagt doch schon was los ist, siehe Dokumentation zum HTTP Protokoll:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html hat folgendes geschrieben:
The requested resource resides temporarily under a different URI. [...]
Du musst also der Weiterleitung folgen, also in IdHttp Weiterleitungen aktivieren, also HandleRedirects auf True stellen.


OliverN_26 - Mo 27.02.12 19:01

Hi .. ich probier mir hier nen Wolf. Mit der Indy-HTTP Variante komm ich nich so wirklich weiter, aber ich bleib trotzdem dran. Hab jetzt eine Frage zu der TWebBrowser Variante, da bis auf 1 Seite alles so läuft, wie ich es gerne hätte nd für eventuell spätere Auswertungen, bzw. Darstellungen, scheint mir diese Lösung erst mal die besser umsetzbarere zu sein .. A B E R .. auf einer Seite hab ich kleines AJAX-Script laufen. Ich habe jede der 5 Folgeseiten in eine eigene Funktion gepackt und lasse diese der Reihe nach beim öffnen des Programmes ablaufen (da später alles automatisch laufen soll). Wenn ich nun auf der entsprechenden Seite

Delphi-Quelltext
1:
Webbrowser1.OleObject.Document.forms.item(0).elements.item(0).click;                    

schreibe, kommt die Fehlermeldung "Javascript required - Java Script ist nicht aktiv. Bitte aktivieren Sie das Scribt in Ihrem Browser.". Klicke ich allerdings in der WebBrowser-Komponente mit der Maus auf den entsprechenden Button, geht es. Wenn ich einen Button auf die Form lege und bei onClic den obigen Code einfüge geht es auch. Nur wenn ich es automatisch laufen lasse kommt jedesmal die Fehlermeldung, dass ich kein Javascript anhabe. Warum??? Habt ihr da einen Tip was ich falsch mache?

Alle Seiten laufen so wie sie es sollen .. bis auf Seite 2 .. eben dort wo das Script geschalten ist. Hier ist mein jetziger Versuch:

Delphi-Quelltext
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:
var
  Form1: TForm1;
  id: Integer;

// die Hauptseite wird geladen
procedure TForm1.FormCreate(Sender: TObject);
begin
  id := 0;
  WebBrowser1.Navigate('http://pfad_der_hauptseite');
end;

// Steuerung der einzelnen Seiten
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  id := id + 1;

  case ID of
     1begin
          WebBrowser1.OleObject.document.forms.item(0).elements.item('techId').value := '22222';
          WebBrowser1.OleObject.document.forms.item(0).elements.item('woId').value := '74656';
          WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click;
        end;
     2: Webbrowser1.OleObject.Document.forms.item(0).elements.item(0).click;
     3: WebBrowser1.OleObject.document.forms.item(0).elements.item(1).click;
     4: WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click;
  end;
end;


vielen Dank

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Ach menno :-( Schreib ich es wie folgt, klappt alles wunderbar:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
// Steuerung der einzelnen Seiten
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  id := id + 1;

  case ID of
     1begin
          WebBrowser1.OleObject.document.forms.item(0).elements.item('techId').value := '22222';
          WebBrowser1.OleObject.document.forms.item(0).elements.item('woId').value := '74656';
          WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click;
        end;
     2begin
          showmessage(inttostr(id)); // das showmessage reagiert anscheinend wie ein Click auf einen Button, aber warum muß ich das vorschalten?
          Webbrowser1.OleObject.Document.forms.item(0).elements.item(0).click;
        end;
     3: WebBrowser1.OleObject.document.forms.item(0).elements.item(1).click;
     4: WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click;
  end;
end;

Aber ich will es natürlich ohne ein lästiges PopUp laufen lassen. Bei Textaktualisierungen kenn ich "Application.ProcessMessages;" muß/kann ich hier was derartiges auch nutzen? Ich steh total auf dem Schlauch :-(


Boldar - Di 28.02.12 13:32

Sowas geht btw auch ohne Probleme mit php.
Auch dafür gibt es diverse html-Parser und ähnliches.


OliverN_26 - Di 28.02.12 14:34

Für unsere Zwecke ist diese Lösung optimal. Für eine spätere Weiterverarbeitung der Daten wäre dein Kommentar allerdings sehr interessant. Hast du da einen Ansatz/Stichwort für mich? Evt. auch eine Lösung zu meinem hierigen Problem? Danke


jaenicke - Di 28.02.12 15:18

Da wirst du schauen müssen was im Skript alles passiert...
Irgendetwas wird da gemacht, das dazu führt, dass es ohne nicht geht. Vermutlich wird irgendein Feld gesetzt und das Skript schlicht noch nicht fertig.

Das lässt sich aber eben nur durch eine Analyse herausfinden. Sei es im Browser mit dem Skript oder mit Wireshark im Vergleich der Datentransfers (so viel wird da aber kaum passieren, deshalb ist ersteres sinnvoller).


OliverN_26 - Di 28.02.12 17:46

Kann ich da irgendetwas mit dem "WebBrowser1.ReadyState" Status anfangen? Das Problem wird, wie du schon sagtest, das Script sein, was erst läuft, wenn wirklich alles fertig geladen ist.


XML-Daten
1:
2:
3:
<script type="text/javascript">
   $(document).ready(function() { $("#next").attr("name""_eventId_next_ajax"); });
</script>


Das ist alles was da an Script drin steht .. Das muß doch irgendwie gehen :-(


jaenicke - Di 28.02.12 18:08

Da hast du es doch: Es wird das Feld mit der ID next ausgefüllt. ;-) Mach das manuell und es sollte gehen.

Genau das würdest du halt als Unterschied bei der Übermittlung sehen im Vergleich zu dem was du schickst. (Kann natürlich noch mehr sein, was du vielleicht nicht siehst gerade.)


OliverN_26 - Di 28.02.12 18:12

Wie kann ich das manuell machen? Das Feld "next" is der Button den ich wie wild versuch zu drücken :-)
Hatte bereits folgendes versucht (was aber auch nich läuft):

XML-Daten
1:
Webbrowser1.OleObject.document.forms.item(0).elements.item('next').click;                    


jaenicke - Di 28.02.12 18:17

Ok, ich habe mich verschrieben: Es wird das Attribut name des Buttons gesetzt, das habe ich wohl als selbstverständlich vorausgesetzt. ;-)

Und über den Namen des Buttons wird dann am Server festgestellt, dass es die nächste Seite ist. Das Attribut musst du also vor dem Abschicken setzen.


OliverN_26 - Di 28.02.12 19:28

Hmm .. das klingt einleuchtend .. hast du einen Tip wie ich das Attribut ändern kann?
Danke


jaenicke - Di 28.02.12 20:03

Ich nicht direkt, aber Google sagt:

Delphi-Quelltext
1:
Webbrowser1.OleObject.document.forms.item(0).elements.item('next').setAttribute('name''_eventId_next_ajax');                    

Ansonsten bliebe noch als Notlösung den JavaScript Code selbst auszuführen:
http://www.delphidabbler.com/articles?article=21


OliverN_26 - Mi 29.02.12 12:32

Klappt super .. Damit komme ich erst mal weiter .. Danke :-)