PHP Forum - Coding Board
Oktober 17, 2017, 08:29:21 *
Willkommen Gast. Bitte einloggen oder registrieren.

Einloggen mit Benutzername, Passwort und Sitzungslänge
News:
 
   Übersicht   Hilfe Suche Einloggen Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: [VB6] Warten bis WebBrowser fertig geladen ist  (Gelesen 156 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
pixelg0tt
Newbie
*
Beiträge: 5


Profil anzeigen E-Mail
« am: September 01, 2009, 04:43:09 »

Hey
Ich code jetzt das erstmal an einem Account Checker. Soweit funktioniert auch alles gut nur habe ich ein Problem. Und zwar will ich das wenn der Account Checker sich z.B. bei einer Seite anmeldet so lange wartet bis der WebBrowser komplett fertig geladen ist und dann erst im Quelltext nachschaut ob er auch angemeldet ist oder nicht (-> Account valid/unvalid).

Ich hab die ganze Nacht dran gesessen und überlegt wie ich das Problem lösen könnte. Google habe ich unzählige Male aufgerufen doch ohne Ergebnis.

Mit Do, Do Events While und Loop wartet er einfach nicht lange genug. Er meint zwar der Browser wäre fertig geladen, ist er aber nicht. Ich bräuchte sowas wie eine Abfrage ob der Browser zu 100% geladen ist und dann erst macht er weiter.

Könnte man das ganze eig. nicht anstatt des WebBrowsers mit dem Inet Komponente machen? Würde schneller und besser gehen.
Gespeichert
1ɥ?5?1l
Newbie
*
Beiträge: 1


Profil anzeigen E-Mail
« Antworten #1 am: September 01, 2009, 07:29:47 »

Code:
WebBrowser1.Navigate ""
Do While (WebBrowser1.ReadyState <> READYSTATE_COMPLETE)
DoEvents
« Letzte Änderung: Oktober 21, 2013, 03:25:53 von Founder » Gespeichert
Nop0x90
Full Member
***
Beiträge: 197


541820
Profil anzeigen E-Mail
« Antworten #2 am: September 01, 2009, 07:44:43 »

Zitat von: pixelg0tt;23554
Könnte man das ganze eig. nicht anstatt des WebBrowsers mit dem Inet Komponente machen? Würde schneller und besser gehen.

Ich denke mal du hast die variante vom Vorposter schon probiert, oder? Ich persönlich würde es auch mit einem Socket anstatt dem Webbrowser machen. Das ist auch viel schneller (es werden keine Bilder geladen) und natürlich besserer stil.
Das einzige was du tun musst, ist die GET bzw POST variablen einsetzen und dann mitsamt HTTP-Header abschicken.

lg
Gespeichert

greetz Nop (ehem. Av0c4d0)
-Coding & RE


pixelg0tt
Newbie
*
Beiträge: 5


Profil anzeigen E-Mail
« Antworten #3 am: September 01, 2009, 07:50:33 »

Ich hab das ganze jetzt versucht so zu lösen:

Code:
Private Sub cmdChecken_Click()

Dim Quelltext As String
Quelltext = frmMain.wbrWebBrowser.Document.documentElement.outerHTML
Dim Text As String
Text = &quot;E-Mails&quot;

If frmCheck.Caption = &quot; EMail.de&quot; Then

With frmMain.wbrWebBrowser
    .Document.Forms(0).email_username.Value = txtUsername.Text
    .Document.Forms(0).email_password.Value = txtPassword.Text
    .Document.Forms(0).loginBtn.Click
End With

Do While (frmMain.wbrWebBrowser.ReadyState <> READYSTATE_COMPLETE)
DoEvents

    If InStr(Quelltext, Text) Then
    txtInfo.ForeColor = vbGreen
    txtInfo.Text = &quot;Der&quot; & frmCheck.Caption & &quot; Account ist gültig.&quot;
    Else
    txtInfo.ForeColor = vbRed
    txtInfo.Text = &quot;Der&quot; & frmCheck.Caption & &quot; Account ist nicht gültig.&quot;
    End If
   
End If

End Sub

Ich bekomme aber dennoch einen Error von wegen End If ohne If Block.
Wenn ich das letzte End If entferne bekomme ich einen fehler von wegen Do ohne Loop

Wenn ich das end if drin lasse und loop unter den do Events schreibe kommt kein error aber das tool wartet nicht lange genug bis der browser fertig geladen ist um den quelltext auszulesen...


Zitat von: Nop0x90;23559
Ich denke mal du hast die variante vom Vorposter schon probiert, oder? Ich persönlich würde es auch mit einem Socket anstatt dem Webbrowser machen. Das ist auch viel schneller (es werden keine Bilder geladen) und natürlich besserer stil.
Das einzige was du tun musst, ist die GET bzw POST variablen einsetzen und dann mitsamt HTTP-Header abschicken.

lg

Genau das hab ich mir auch gedacht .. es geht schneller und man kann auch schneller den Quelltext auslesen und ich hätte das oben genannte Problem nicht. Nur habe ich leider noch nie mit Get bzw Post gearbeitet und müsste dazu ein Tutorial finden. In einem Rapidshare Checker Source hab ich gesehen wie er sich über die Inet Komponente einloggt .. also "https://ssl.rapidshare.com/premiumzone.cgi?login=username&password=hfhf" aber so geht das nicht bei jeder seite glaub ich .. oder doch?
« Letzte Änderung: September 01, 2009, 07:53:45 von pixelg0tt » Gespeichert
Nop0x90
Full Member
***
Beiträge: 197


541820
Profil anzeigen E-Mail
« Antworten #4 am: September 01, 2009, 07:54:54 »

ich kann (gottseidank) kein VB aber ich denke:
Code:
Do While (frmMain.wbrWebBrowser.ReadyState <> READYSTATE_COMPLETE)
     DoEvents
Loop

If InStr(Quelltext, Text) Then
    txtInfo.ForeColor = vbGreen
    txtInfo.Text = &quot;Der&quot; & frmCheck.Caption & &quot; Account ist gültig.&quot;
Else
    txtInfo.ForeColor = vbRed
    txtInfo.Text = &quot;Der&quot; & frmCheck.Caption & &quot; Account ist nicht gültig.&quot;
End If
Gespeichert

greetz Nop (ehem. Av0c4d0)
-Coding & RE


pixelg0tt
Newbie
*
Beiträge: 5


Profil anzeigen E-Mail
« Antworten #5 am: September 01, 2009, 07:59:18 »

Genau so hab ich es ja auch. Aber komischerweise lässt er den Browser nicht ganz
Gespeichert
Nop0x90
Full Member
***
Beiträge: 197


541820
Profil anzeigen E-Mail
« Antworten #6 am: September 01, 2009, 08:09:17 »

Zitat von: pixelg0tt;23562
btw: Ich habe mir schon lange überlegt eine weitere Programmiersprache zu erlernen .. nur weiss ich nicht ob ich Delphi oder VB Net nehmen soll ..

Naja.. Also wenn schon denn schon... Dann lern Delphi. In Delphi wäre das sehr einfach mit einer Indy-Komponente zu realisieren aber in VB gibt es sicher was vergleichbares. Die Webbrowser controls sind eh ein krampf...
Gespeichert

greetz Nop (ehem. Av0c4d0)
-Coding & RE


Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | New Look by Nolt Prüfe XHTML 1.0 Prüfe CSS