AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Browser öffnen und automatisch anmelden
Thema durchsuchen
Ansicht
Themen-Optionen

Browser öffnen und automatisch anmelden

Ein Thema von VizeTE · begonnen am 19. Apr 2007 · letzter Beitrag vom 10. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Browser öffnen und automatisch anmelden

  Alt 19. Apr 2007, 09:09
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Browser öffnen und automatisch anmelden

  Alt 19. Apr 2007, 09:14
Du könntest versuchen ein lokales Formular aufzurufen.
Markus Kinzler
  Mit Zitat antworten Zitat
Hafish

Registriert seit: 22. Mär 2007
37 Beiträge
 
#3

Re: Browser öffnen und automatisch anmelden

  Alt 19. Apr 2007, 09:21
Möchtest du dass der Standard-Browser geöffnet wird oder hast du einnen eigenen programmiert(z.B.mit TWebBrowser)?
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Browser öffnen und automatisch anmelden

  Alt 19. Apr 2007, 09:40
Zitat von Hafish:
Möchtest du dass der Standard-Browser geöffnet wird oder hast du einnen eigenen programmiert(z.B.mit TWebBrowser)?
Den Standardbrowser
  Mit Zitat antworten Zitat
Hafish

Registriert seit: 22. Mär 2007
37 Beiträge
 
#5

Re: Browser öffnen und automatisch anmelden

  Alt 19. Apr 2007, 09:42
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Browser öffnen und automatisch anmelden

  Alt 19. Apr 2007, 09:48
Zitat:
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.
Bei POST sind wie erwähnt keine Parametern in die URL gecodet. Auch eine Session-Übernahme ist so schwierig.
Markus Kinzler
  Mit Zitat antworten Zitat
seRiaLizA

Registriert seit: 19. Apr 2007
Ort: Aachen
5 Beiträge
 
Delphi 7 Professional
 
#7

Re: Browser öffnen und automatisch anmelden

  Alt 19. Apr 2007, 11:14
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:
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;
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...
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 ;-))
-----------------------------------------------------
...sagte der Einäugige unter den Blinden... )
-----------------------------------------------------
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Browser öffnen und automatisch anmelden

  Alt 10. Mär 2010, 10:08
Hallo,

ich greife das Thema wieder auf, weil ich bislang keine vernünftige Lösung habe finden können.
Ich habe auf dieser Seite mitbekommen, dass man an Programmfenster bzw. besser noch an deren Objekte Nachrichten, Texte etc. senden kann. Ich habe daher versucht, mit Hilfe von WinSpy das Handle der Felder für Namen und Passwort herauszubekommen und zumindest erstmal den Benutzernamen zu setzen. Leider bislang ohne Erfolg:
Delphi-Quellcode:
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;
Eigentlich sollte sich damit doch ein Login realisieren lassen.

Was mache/verstehe ich falsch?

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Browser öffnen und automatisch anmelden

  Alt 10. Mär 2010, 10:24
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Browser öffnen und automatisch anmelden

  Alt 10. Mär 2010, 11:02
Och, vorallem der IE sollte die Edits nicht selber zeichnen und ich denk mal, daß auch FF un Co. nicht alles selber Malen.

Zitat von Schwedenbitter:
Was mache/verstehe ich falsch?
Erstmal schauen was wndChild wann für Werte hat
und wenn am Ende wirklich wndChild<>0 rauskommt, dann schauen was SendMessage as Rückgabewerte liefert.

FindWindowEx(wndChild, 0, 'username' Und dann bezweifle ich einfach mal, daß die/der Browser eine derartig benannte WindowClass für dieses Edit besitzt.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 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