Zeit nach Login einsetzten

10/22/2014 18:17 HUТϾH#1
Hallo,
ich schreibe grade meinen ersten "Bot". Ich möchte das er nach dem Login 3 Sekunden wartet und dann die nächste Aktion startet. Wie baue ich eine Zeit mit ein?
10/22/2014 18:23 Syc#2
Wäre interessant zu wissen, mit welcher Sprache du deinen Bot schreibst
10/22/2014 18:27 HUТϾH#3
Ups, vergessen..
Den Bot schreibe ich mit VB.net..

Damit habe ich es versucht, aber dann stoppt der Bot ganz (friert ein).

WebBrowser1.Navigate("http://www.*website*.tk/game.php?village=8910&screen=main")
Das soll der öffnen, dann 10 Sekunden warten also die Seite in Ruhe öffnen und dann nach ablauf der 10 Sekunden die nächste Aktion ausführen.
10/22/2014 18:32 Syc#4
Das Thread.Sleep lässt den aktuellen Thread einfrieren, wenn du keinen neuen erstellt hast, dann ist die GUI in dem aktuellen Thread, daher der Stopp des Bots.

Bots in .net schreibt man normalerweiße nicht mit nem Webcontrol, sonder mit httpwebrequests, wenn du es aber dennoch mit Webcontrols machen willst, dann schau mal im heiligen Internetz nach nem Event, das getriggert wird, sobald die Seite komplett geladen hat, das sollte es afaik geben.

btw. das kommt in die .Net-Sektion, snow verschiebt das sicherlich gleich.
10/22/2014 18:32 snow#5
#moved
10/22/2014 19:48 HUТϾH#6
Ich schreibe jetzt in httpwebrequests. Ich möchte ein Response von der Seite bekommen. Doch die Seite zeigt nicht an z.b"erfolgreich eingeloggt" sondern man wird einfach weitergeleitet. Ich möchte trz. eine info bekommen ob der Login erfolgreich war.
Wie kann ich das machen?
Man wird immer auf die gleiche Seite am Anfang geleitet.
10/22/2014 20:50 Ludder231#7
Nun du könntest den Quellcode der Seite nach etwas untersuchen, dass angibt ob du eingeloggt bist. Mit deinem Bot suchst du dann danach im Quellcode.
10/22/2014 23:53 opfer200000000#8
Falls du immer noch etwas brauchst, wo mit du einen Delay einbauen kannst, dann habe ich hier was für dich. Ich habe es hier aus dem Forum, leider weiß ich den Thread gerade nicht.

Code:
    
Private Sub delay(ByVal Zeit As Integer)
        Dim zeit1 As Integer = System.Environment.TickCount
        While (System.Environment.TickCount - zeit1) < Zeit
            Application.DoEvents()
        End While
End Sub
delay übergibst du dann z.B. 2000 = 2 sec
10/23/2014 17:05 Mostey#9
Quote:
Originally Posted by opfer200000000 View Post
Falls du immer noch etwas brauchst, wo mit du einen Delay einbauen kannst, dann habe ich hier was für dich. Ich habe es hier aus dem Forum, leider weiß ich den Thread gerade nicht.

Code:
    
Private Sub delay(ByVal Zeit As Integer)
        Dim zeit1 As Integer = System.Environment.TickCount
        While (System.Environment.TickCount - zeit1) < Zeit
            Application.DoEvents()
        End While
End Sub
delay übergibst du dann z.B. 2000 = 2 sec
Wozu das Rad neu erfinden? Was spricht gegen Thread.Sleep? Oder noch besser: Was spricht gegen async und await?
10/23/2014 17:41 MrSm!th#10
Quote:
Originally Posted by Mostey View Post
Wozu das Rad neu erfinden? Was spricht gegen Thread.Sleep?
Thread.Sleep hat in dem Fall aber eine andere Auswirkung als der zitierte Code.
Nebenbei meine ich mich erinnern zu können, dass Application.DoEvents() böse ist.
10/23/2014 18:33 tolio#11
DoEvents an sich ist nicht böse, aber wenn man das verwenden muss impliziert das in gewisser weise das man sachen im gui thread macht die dort nicht hingehören