![]() |
Browser öffnen und automatisch anmelden
Hallo Leute,
ich möchte mit einem Delphi-Programm eine Website öffnen und das Programm soll auch gleich noch die Anmeldung für mich übernehmen. Die Anmeldung auf der Website läuft über ein "Post". Also kann ich da keine Parameter anhängen. Kann mir jemand sagen in welche Richtung es lohnt sich schlau zu machen? Oder gibts da Komponenten? Ich habe schon mal bei Indy nachgesehen. Diese können zwar die Anmeldung abschicken und die Antwort entgegennehmen aber ich möchte das ja im Browser haben damit ich nach der Anmeldung "normal" im Web weiterarbeiten kann. Danke schon mal vorab. |
Re: Browser öffnen und automatisch anmelden
Du könntest versuchen ein lokales Formular aufzurufen.
|
Re: Browser öffnen und automatisch anmelden
Möchtest du dass der Standard-Browser geöffnet wird oder hast du einnen eigenen programmiert(z.B.mit TWebBrowser)?
|
Re: Browser öffnen und automatisch anmelden
Zitat:
|
Re: Browser öffnen und automatisch anmelden
Hm, da fällt mir nicht viel ein, aber du könntest ja folgendes versuchen:
Du machst die Anmeldung in deinem eigenen Programm, nimmst dann den Link nach der Anmeldung und sendest den dann an den Standard-Browser. So könntest du zumindest mit den Websites arbeiten, die den Link nicht verstecken. |
Re: Browser öffnen und automatisch anmelden
Zitat:
|
Re: Browser öffnen und automatisch anmelden
Ich hab sowas ähnliches schonmal für ein Browserspiel gebastelt, da konnte man leider auch nicht die Benutzerdaten via URL übergeben.
Allerdings habe ich da im eigenen Programm mit TWebBrowser gearbeitet, sonst wüsste ich jetzt nicht wie du Formularfelder in ner Fremdanwendung füllst... Mein Lösungsweg war - zugegebenermaßen etwas abstrakt - folgender:
Delphi-Quellcode:
Setzt natürlich voraus, dass sich der Loginbutton immer an der selben Position befindet ;) Tut er bei mir... Die Coords dazu hab ich mir ausgehend von der Browserform (bei mir frmMain) von nem Screenshot in nem "Malprogramm" abgelesen...
USES
OleCtrls, ActiveX; ... function FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean; var i, j: Integer; FormItem: Variant; begin Result := False; //no form on document if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Exit; end; //count forms on document for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for j := 0 to FormItem.Length - 1 do begin try //when the fieldname is found, try to fill out if FormItem.Item(j).Name = FieldName then begin FormItem.Item(j).Value := Value; Result := True; end; except Exit; end; end; end; end; Procedure TfrmMain.Login(); begin FillForm(Browser,'username','MeinBenutzerName'); // Das Feld im HTML Formular heißt "username" FillForm(Browser,'password','MeinPasswort'); // Das Feld im HTML Formular heißt "password" myXpos := frmMain.Left + 499; // Setze X Coord des Loginbuttons myYpos := frmMain.Top + 481; // Setze Y Coord des Loginbuttons SetCursorPos(myXpos, myYpos); // Setze Cursor auf angegebene XY Coord mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); // Simuliere Mousedown mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); // Simuliere Mouseup end; Alternativ zum simulierten Mausclick kannste natürlich auch einfach ein VK_Return hinterherschicken... ging nur bei mir nicht, weil mehrere Formulare auf der Seite waren... Kommst glaub ich nicht drumrum dir nen eigenen Browser drumrumzuklickern... Bleibt als Frage noch: Warum brauchste das? - Hat die Seite keine dauerhaft Cookies? - Kann dein Browser keine Kennwörter speichern? (versuchs mal mit Opera *g*) Lieben Gruß aus Aachen Stefan EDIT: Da fällt mir wohl noch was - zugegebenermaßen noch abstrakteres - ein: Bastelst dir nen launcher für deinen Browser. 1) Launcher starten 2) Launcher startet Browser 3) Wenn Browser fertig, machn Screenshot vom Browserfenster 4) Suche im Screenshot nach der Position der Eingabefelder anhand von Vergleichscreenshots *g* 5) Somit hast du schonmal die Coords der benötigten Felder... 6) Klicke in Feld Username und "paste" aus der Zwischenablage deinen Benutzernamen, den du vorher in selbige reinkopiert hast ;) 7) Das selbe für alle anderen Formularfelder 8) simuliere VK_Return ... oder benutz Opera und drück beim Login STRG + ENTER ;-)) |
Re: Browser öffnen und automatisch anmelden
Hallo,
ich greife das Thema wieder auf, weil ich bislang keine vernünftige Lösung habe finden können. Ich habe auf ![]()
Delphi-Quellcode:
Eigentlich sollte sich damit doch ein Login realisieren lassen.
Procedure TForm1.Button1Click(Sender: TObject);
Var I : Integer; TestText : String; wndMain : HWND; wndChild : HWND; Begin wndMain:=FindWindow('MozillaUIWindowClass', 'Advoplex - Mozilla Firefox'); If wndMain <> 0 Then Begin wndChild:=FindWindowEx(wndMain, 0, 'MozillaWindowClass', nil); wndChild:=FindWindowEx(wndChild, 0, 'MozillaContentWindowClass', nil); wndChild:=FindWindowEx(wndChild, 0, 'MozillaWindowClass', nil); wndChild:=FindWindowEx(wndChild, 0, 'username', nil); If wndChild <> 0 Then Begin TestText:='Hallihallohallöle'; For I:=1 To Length(TestText) Do SendMessage(wndMain, WM_CHAR, Ord(TestText[I]), 0); End; End; End; Was mache/verstehe ich falsch? Gruß, Alex |
Re: Browser öffnen und automatisch anmelden
So ziemlich jeden Browser den ich diesbezüglich angeguckt habe arbeitet bei der Webseitendarstellung nicht mit Fenstern für jedes Detail sondern malt alles selbst. Und somit haben die einzelnen Eingabefelder auch kein eigenes Handle. Sozusagen ist alles nur ein großes Bild und der Browser kümmert sich selbst darum welchen Teil des Bildes er aktualisieren muss.
|
Re: Browser öffnen und automatisch anmelden
Och, vorallem der IE sollte die Edits nicht selber zeichnen und ich denk mal, daß auch FF un Co. nicht alles selber Malen.
Zitat:
und wenn am Ende wirklich wndChild<>0 rauskommt, dann schauen was SendMessage as Rückgabewerte liefert.
Delphi-Quellcode:
Und dann bezweifle ich einfach mal, daß die/der Browser eine derartig benannte WindowClass für dieses Edit besitzt.
FindWindowEx(wndChild, 0, 'username'
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz