Einzelnen Beitrag anzeigen

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