![]() |
Login Simulieren (WebBrowser)
Hallo,
ich möchte einen WebBrowser in meinem Programm haben,bei dem ich mich auf ![]() Habe bereits 30 Minuten gesucht,aber nicht viel gefunden,da diese ebenfalls irgendwelche Errors hatten usw. Wie ich einen WebBrowser mache weiss ich,würde aber gut sein,wenn ihr die vollständigen Code von allem gebt. Also: Bei Edit1 = Username/E-Mail --- Edit2 = Passwort Auf Login drücken WebBrowser geht auf Hotmail.de Gebt Daten ein (Edit1 und Edit2) Loggt sich ein Danke :) |
AW: Login Simulieren (WebBrowser)
Hallo, so kannst du einloggen:
Delphi-Quellcode:
Webbrowser1.OleObject.document.forms.item(0).elements.item('login').value := Edit1.Text;
Webbrowser1.OleObject.document.forms.item(0).elements.item('passwd').value := Edit2.Text; Webbrowser1.OleObject.document.forms.item(0).elements.item('SI').click; |
AW: Login Simulieren (WebBrowser)
Danke für die Antwort.
Bei Hotmail.de funktioniert es perfekt,aber bei web.de und anderen Seiten funktioniert es nicht. Ich frag mich auch,was das hier bedeuten soll:
Delphi-Quellcode:
Was bedeutet das bei ('login'),('passwd') und ('SI').
Webbrowser1.OleObject.document.forms.item(0).elements.item('login').value := Edit1.Text;
Webbrowser1.OleObject.document.forms.item(0).elements.item('passwd').value := Edit2.Text; Webbrowser1.OleObject.document.forms.item(0).elements.item('SI').click; Woher kommen die und muss ich die für die anderen Seiten ändern? Bei Hotmail kommt der sofort zur loginbox aber bei web nicht und ich weiss nicht wie das geht. Edit: Ich hab gerade ein Tutorial dafür gefunden,aber das geht immernoch nicht.Ich habe da jetzt ('username') ('password') und ('rv_dologon'). Den Error bekomm ich wenn ich den Button einloggen drücke: Project XXX.exe raised exception class EAclassViolation with message 'Access violation at adress 0045C03C3 in module 'XXX.exe'.Read of address '00000000'.Process stopped.Use step or Run to continue. Gruß GouJetir |
AW: Login Simulieren (WebBrowser)
Zitat:
Auf web.de ist der Login-Button ein Bild, muss dementsprechend auch anders angeklickt werden.
Delphi-Quellcode:
uses
MSHTML; procedure WB_ClickImage(WB: TWebbrowser; ImageSRC: string); var iDoc: IHtmlDocument2; i: Integer; iDisp: IDispatch; iColl: IHTMLElementCollection; InputImage: HTMLInputImage; begin if Assigned(WB.Document) then begin WB.Document.QueryInterface(IHTMLDocument2, iDoc); if Assigned(iDoc) then begin iDisp := iDoc.all.tags('INPUT'); if Assigned(iDisp) then begin iDisp.QueryInterface(IHTMLElementCollection, iColl); if Assigned(iColl) then begin ImageSRC := AnsiUpperCase(ImageSRC); for i := 1 to iColl.Get_length do begin iDisp := iColl.item(Pred(i), 0); iDisp.QueryInterface(HTMLInputImage, InputImage); if Assigned(InputImage) then begin if Pos(ImageSRC, AnsiUpperCase(InputImage.src)) <> 0 then begin InputImage.Click; end; end; end; end; end; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Webbrowser1.OleObjec.document.forms.item(0).elements.item('username').value := Edit1.Text; Webbrowser1.OleObject.document.forms.item(0).elements.item('password').value := Edit2.Text; WB_ClickImage(Webbrowser1, 'btn_login.gif'); end; procedure TForm1.FormCreate(Sender: TObject); begin Webbrowser1.Navigate('https://produkte.web.de/freemail-webmail/'); end; |
AW: Login Simulieren (WebBrowser)
Okay aber jetzt bekomme ich:
Undeclared indentifier: WB_ClickImage |
AW: Login Simulieren (WebBrowser)
Einige (viele) Seitenbeteiber haben halt etwas dagegen (oder es verstößt sogar gegen deren AGB) und bauen kleine Hindernisse ein.
Wobei z.B. bei eMails von web.de oder hotmail.de ja noch offizielle Wege gibt, wie z.B. POP3 :stupid: Zitat:
Und nun rate mal, was man dagegen machen könnte. (PS: hier im Thread steht die Lösung) PS: falls du den Code nicht verstanden hast:
Delphi-Quellcode:
greift auf ein bestimmtes Element im "ersten" gefundenen Formular zu ... nur kann es mehrere Formulare auf eine Webseite geben, ebenso könnte das gesuchte Formular auch noch in einem Frame versteckt sein.
document.forms.item(0).elements.item('login')
Da muß man dann natürlich, je nach Webseite die "Adresse", bzw. den Weg anpassen, sowie die Namen der Elemente, falls sie einen Namen haben. |
AW: Login Simulieren (WebBrowser)
Zitat:
|
AW: Login Simulieren (WebBrowser)
Ich sagte nicht, daß man dafür gleich im Knast landen könnte.
Aber daß der Betreiber einen dann von seinem Angebot ausschließt, wäre mindestens eine passende Maßnahme/Reaktion. Wobei es ja, wie gesagt, oftmal auch offizielle Wege gäbe, welche sich manchmal auch leichter/problemloser nutzen lassen. :stupid: |
AW: Login Simulieren (WebBrowser)
Juhu geschafft ich werde zu einem Pro-Programmierer ;) Ne Spaß - Danke :)
Edit: Noch ne Frage: Weil ja meine Seite eigentlich für Dshini sein soll,hab ich jetzt ein Problem beim absenden. Die Seite auf der der sich einloggen soll ist: ![]() Bei Username hab ich:
Delphi-Quellcode:
und bei Passwort:
Webbrowser1.OleObject.document.forms.item(0).elements.item('signin[username]').value := Edit1.Text;
Delphi-Quellcode:
Aber ich find den Login-Button nicht.
Webbrowser1.OleObject.document.forms.item(0).elements.item('signin[password]').value := Edit2.Text;
|
AW: Login Simulieren (WebBrowser)
Weiss das keiner oder geht es garnicht?
|
AW: Login Simulieren (WebBrowser)
Delphi-Quellcode:
oder kürzer:
Webbrowser1.OleObject.document.forms.item(1).elements.item('signin[username]').value := Edit1.Text;
Webbrowser1.OleObject.document.forms.item(1).elements.item('signin[password]').value := Edit2.Text; Webbrowser1.OleObject.document.forms.item(1).Submit; // oder: Webbrowser1.OleObject.document.forms.item(1).elements.item(3).click;
Delphi-Quellcode:
oder "sicherer":
procedure TForm1.Button1Click(Sender: TObject);
var OleObj: Variant; begin OleObj := Webbrowser1.OleObject.document.forms.item(1); OleObj.elements.item('signin[username]').value := 'Edit1.Text'; OleObj.elements.item('signin[password]').value := 'Edit2.Text'; OleObj.Submit; end;
Delphi-Quellcode:
uses
MSHTML; procedure SetInputText(FormElement: IHTMLFormElement; ItemName, ItemText: string); var field: IHTMLElement; inputField: IHTMLInputElement; begin if Supports(FormElement.Item(ItemName,EmptyParam), IHTMLElement, field) then begin inputField := field as IHTMLInputElement; inputField.value := ItemText; end; end; procedure TForm1.Button2Click(Sender: TObject); var htmlDoc2: IHTMLDocument2; allForms: IHTMLElementCollection; myForm: IHTMLFormElement; begin if Supports(WebBrowser1.Document, IHTMLDocument2, htmlDoc2) then begin allForms := htmlDoc2.Forms; if allForms.length > 1 then begin myForm := allForms.Item(1, EmptyParam) as IHTMLFormElement; SetInputText(myForm, 'signin[username]','username...'); SetInputText(myForm, 'signin[password]','password...'); myForm.submit; end; end; end; |
AW: Login Simulieren (WebBrowser)
Ah danke aber wieso kommt da jetzt in den Klammern eine (1) ?
|
AW: Login Simulieren (WebBrowser)
Ohne den TWebbrowser zu kennen vermute ich, dass da eine 1 steht, weil es sich um die Zweite Form im Dokument handelt.
Ganz allgemeiner Tipp: Erstmal kleine Sachen versuchen und Tutorials durcharbeiten... |
AW: Login Simulieren (WebBrowser)
Liste der Anhänge anzeigen (Anzahl: 1)
Exakt wicht, die Webseite hat 2 Loginmöglichkeiten. Oben rechts erscheint ein Fenster, wenn man mit der Maus draufklickt oder eben das Login-Formular in der Mitte.
Dieser Code sollte aber eigentlich auch funktionieren:
Delphi-Quellcode:
Damit ihr euch hier nicht durch den Quellcode wühlt, möchte ich euch mal auf das Webdeveloper FF Plugin aufmerksam machen. Im Anhang ein Sceen wie man schnell und sauber an die Infos kommt.
Webbrowser1.OleObject.document.forms.item(0).elements.item('signin[username]').value := Edit1.Text;
Webbrowser1.OleObject.document.forms.item(0).elements.item('signin[password]').value := Edit2.Text; Webbrowser1.OleObject.document.forms.item(0).Submit; So sieht man auch am schnellsten, wie sauber die Webseite gemacht wurde ich sag nur Max. Zeichen :roll: |
AW: Login Simulieren (WebBrowser)
Hier wurde meiner Meinung nach bereits viel zu viel geschrieben.
Ich möchte dir nichts unterstellen, aber die AGB von dshini sagen folgendes: Zitat:
Solltest du andere Gründe für das automatische Einlochen haben, kannst du dich gerne per PN an eines unserer Teammitglieder wenden und plausible Gründe nennen. Evtl. wird das Thema dann wieder eröffnet. Wenn nicht, bleibt es geschlossen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 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